Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
vidpovidi_OOP.doc
Скачиваний:
21
Добавлен:
23.02.2016
Размер:
281.6 Кб
Скачать

1. Історія виникнення об’єктно-орієнтованої парадигми

Початок об’єктно-орієнтованої парадигми більшість з авторів відносить до мови Simula-67, а перша повна реалізація - Smalltalk-80. ООП стало популярним у другій половині 80-х у таких мовах, як С++, Objective C, Object Pascal и Turbo Pascal, CLOS (ОО-расширение Lisp'a), Eiffel, Ada (в её последних воплощениях) і — в Java. В нашому курсі вивчається об’єктно- орієнтований підхід мовами С++, Object Pascal и Java.

Клас – структура даних, притаманна певному типу об’єктів. Об’єкт – екземпляр класу. Клас „студент”, об’єкти – „студент Петров”, „студент Іваненко”,....Кожний клас окрім набору даних характеризується набором методів, що задають правила функціонування об’єктів даного класу. Наприклад, для навчального процесу, клас „Студент” може характеризуватись методами „студент навчається на лекції”, „студент здав екзамен”,...

Характерні риси об’єктно-орієнтованого підходу = інкапсуляція, наслідування, поліморфізм.

2. Характерні риси об’єктно-орієнтованого підходу = інкапсуляція, наслідування, поліморфізм.

Інкапсуляція= обмеження доступу до даних. Кожний об’єкт володіє певним набором даних. Доступ до цих даних інших об’єктів забезпечується за допомогою методів (функцій). Завдяки цьому кількість помилок, пов’язаних із неправильним використанням даних значно зменшується. Використання даних іншого об’єкта дозволяється тільки через посередництво написаних програмістом методів.

Наслідування= типи об’єктів можуть створюватись на основі інших уже створених типів об’єктів. Клас – дитина повністю наслідує структуру даних класа – батька та має інші дані. Таким чином, класи, які мають спільні риси структури, можна будувати на основі одного спільного типу об’єктів... Це особливо зручно, якщо Вам потрібно організувати однакові дії для усіх об’єктів-дітей, що відносяться до одного класа-батька.

Наприклад, „студент 5-ого курсу” може бути побудований на основі класу „студент” з додаванням методів „виконання дипломного проекту”, „захист дипломного проекту”, „отримання диплому”.

Поліморфізм= правильний вибір метода в залежності від об’єкта, на який він посилається. Про поліморфізм об’єктів можна говорити тільки якщо об’єкти знаходяться у зв’язках наслідування. Наприклад, в програмі визначений метод з однаковим ім’ям для об’єкта-батька та об’єкта-дитини. При виконанні програми викликатись буде той метод, на який указує об’єкт = для кожного класу – дитини свій метод, а якщо він не визначений, то метод класу-батька.

3. Інкапсуляція = обмеження доступу до даних. Кожний об’єкт володіє певним набором даних. Доступ до цих даних інших об’єктів забезпечується за допомогою методів (функцій). Завдяки цьому кількість помилок, пов’язаних із неправильним використанням даних значно зменшується. Використання даних іншого об’єкта дозволяється тільки через посередництво написаних програмістом методів.

Інкапсуляция (Private и Public)

Свойство: Общим элементом всех трех языков является присутствие трех спецификаторов доступа, указывающих на различные уровни инкапсуляции класса: public, protected, и private. Public означает: видимый любым другим классом, protected означает: видимый производными классами, private означает: отсутствие видимости извне. В деталях, однако, есть различия.

C++:В C++ вы можете использовать ключевое слово friend для обхода инкапсуляции. Видимость по умолчанию для класса — private, для структур — public.

OP:В Object Pascal private и protected относятся только к классам других юнитов. В терминах C++, класс является дружественным для любого другого класса, определенного в том же юните (или файле исходного кода). В Delphi есть еще один модификатор доступа — published, который генерирует информацию времени выполнения (RTTI) об элементах.

Java:В Java отличие синтаксиса в том, что модификатор доступа повторяется для каждого элемента класса. А конкретнее, по умолчанию в Java используется friendly, это значит, что элемент видим для других классов этого же пакета (или файла исходного кода, как в OP). Подобным образом, protected означает видимость для подклассов, тогда как комбинация private protected соответствует protected в C++.

C#:В CLR используется пять уровней доступа к членам класса, которые в C# обозначаются как private, protected, public, internal, protected internal. Первые три аналогичны соответствующим модификаторам в C++, Object Pascal и Java. Модификатор internal ограничивает видимость текущей сборкой (т. е. исполняемым файлом или файлом динамической библиотеки, к которому относится данный класс), protected internal разрешат также доступ в унаследованных классах из других сборок.

4. Наслідування= типи об’єктів можуть створюватись на основі інших уже створених типів об’єктів. Клас – дитина повністю наслідує структуру даних класа – батька та має інші дані. Таким чином, класи, які мають спільні риси структури, можна будувати на основі одного спільного типу об’єктів... Це особливо зручно, якщо Вам потрібно організувати однакові дії для усіх об’єктів-дітей, що відносяться до одного класа-батька.

Наприклад, „студент 5-ого курсу” може бути побудований на основі класу „студент” з додаванням методів „виконання дипломного проекту”, „захист дипломного проекту”, „отримання диплому”.

5. Поліморфізм= правильний вибір метода в залежності від об’єкта, на який він посилається. Про поліморфізм об’єктів можна говорити тільки якщо об’єкти знаходяться у зв’язках наслідування. Наприклад, в програмі визначений метод з однаковим ім’ям для об’єкта-батька та об’єкта-дитини. При виконанні програми викликатись буде той метод, на який указує об’єкт = для кожного класу – дитини свій метод, а якщо він не визначений, то метод класу-батька.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]