- •Передмова
- •Розділ 1 об'єктний підхід у програмуванні
- •1.1.Причини виникнення ооп
- •1.1.1.Складність об'єкта дослідження
- •1.1.2.Складність процесу розробки програмного забезпечення
- •1.1.3.Складність опису окремих елементів
- •1.2.Парадигма ооп
- •1.3.Історія розвитку ооп
- •Розділ 2 об'єкти й класи: інкапсуляція
- •2.1.Структура об'єкта й класу
- •2.2.Особливості опису класів у мовах ооп
- •2.2.1.Опис класів в SmallTalk
- •2.2.3.Опис класів в Delphi
- •2.2.4.Опис класів в Java
- •2.3.Поля даних та їх ініціалізація
- •2.3.1.Визначення полів даних в SmallTalk
- •2.3.3.Визначення полів даних в Delphi
- •2.3.4.Визначення змінних в Java
- •2.4.Доступ до даних
- •2.4.1.Доступ до даних в SmallTalk
- •2.4.3.Доступ до даних в Delphi
- •2.4.4.Доступ до даних в Java
- •2.5.Спеціальні змінні
- •2.5.1.Спеціальні змінні в SmallTalk
- •2.5.3.Спеціальні змінні в Java
- •2.5.4.Спеціальні змінні в Delphi
- •2.6.Посилання
- •2.6.1.Визначення посилань в SmallTalk, Delphi і Java
- •2.7.Методи
- •2.7.1.Загальна схема визначення методу
- •2.7.2.Визначення методів в SmallTalk
- •2.7.4.Визначення методів в Delphi
- •2.7.5.Визначення методів в Java
- •2.8."Дружні" методи
- •2.8.2.Аналог дружніх функцій в Delphi
- •2.9.Конструктори й деструктори
- •2.9.1.Конструктори й деструктори в SmallTalk
- •2.9.3.Конструктори й деструктори в Delphi
- •2.9.4.Конструктори й деструктори в Java
- •2.10.Властивості
- •2.10.1.Властивості в Delphi
- •2.10.2.Властивості в Java
- •2.12.Абстрактні методи
- •Розділ 3 успадкування
- •3.1.Форми успадкування
- •3.2.Успадкування в SmallTalk
- •3.3.1.Віртуальне успадкування
- •3.3.2.Правило сумісності типів
- •3.3.3.Використання конструкторів і деструкторів при успадкуванні
- •3.4.Успадкування в Delphi
- •3.4.1.Ієрархія класів в Delphi
- •3.4.2.Створення нових компонентів
- •3.5.Успадкування в Java
- •3.5.1.Використання ключового слова super
- •3.5.2.Клас Object
- •Розділ 4 поліморфізм
- •4.1.Віртуальні методи
- •4.2.1.Механізм пізнього зв'язування
- •4.2.2.Таблиця віртуальних методів
- •4.3.Поліморфізм в Delphi
- •4.3.1.Заміщення віртуальних і динамічних методів
- •4.3.2.Приведення типів
- •4.4.Поліморфізм в Java
- •4.5.Поліморфізм в SmallTalk
- •5.1.Потокові класи
- •5.1.1.Ієрархія потокових класів
- •5.1.2.Форматоване введення/ виведення
- •5.1.3.Маніпулятори
- •5.1.4.Введення/виведення у файл
- •5.2.Контейнерні класи
- •5.2.1.Ітератори
- •5.2.2.Визначення контейнерних класів
- •5.2.3.Стандартні контейнерні класи
- •5.3.1.Параметиізовані класи (шаблони)
- •5.3.2.Ітератори stl
- •5.3.3.Узагальнені алгоритми
- •Література
- •Додатки лабораторна робота №1 об'єкти й повідомлення в smalltalk
- •Лабораторна робота №2 класи й методи в smalltalk
- •Листинг 3.1
- •Листинг 3.2
- •Листинг 3.3
- •Лабораторна робота 5 компоненти в delphi
- •Лабораторна робота 6 меню й вікна в delphi
- •Лабораторна робота 7 розробка меню в java
- •Лабораторна робота 8 робота з подіями в java
Розділ 1 об'єктний підхід у програмуванні
1.1.Причини виникнення ооп
Основною причиною виникнення ООП явилося надмірне ускладнення програм, яке носить нелінійний характер (дві людини не напишуть програму за місяць, якщо одна з них напише за два місяці).
Складність програм, у свою чергу, обумовлена наступними причинами:
Складністю об'єкта дослідження, у нашому випадку задачі програмування.
Складністю процесу розробки програмного забезпечення.
Складністю опису окремих елементів програмних систем.
Розглянемо дані причини більш докладно.
1.1.1.Складність об'єкта дослідження
Результатом роботи програміста є створення програми. У міру складності програм вони приймають форму програмних систем, що включають у себе безліч різнорідних елементів: структур даних, блоків, модулів, процедур, функцій і т.п., зв'язаних між собою певними зв'язками, або відносинами. У такому визначенні програмна система відноситься до класу складних систем, для дослідження яких застосовуються три основних методи: декомпозиції, абстракції й ієрархії.
Метод декомпозиції передбачає розподіл системи на підсистеми з метою спрощення. Наприклад, якщо розглядати програмну систему банку, то вона може бути поділена на ряд підсистем, як це показано на рис. 1.1.
Рис. 1.1. Поділ банківської програмної системи на підсистеми
Підсистеми, у свою чергу, також можуть бути поділені на більш дрібні підсистеми й так далі аж до окремих елементів.
Декомпозиція приводить до структурування задачі програмування. Оскільки структура є безліч елементів зі зв'язками, то для декомпозиції задачі необхідно обмежитись множиною розглянутих підсистем, або елементів.
Метод абстракції використовується для скорочення числа елементів, що розглядаються. Це досягається шляхом концентрації уваги тільки на основних властивостях сутностей обраної предметної області й ігноруванні незначних деталей. Абстрагування дозволяє розглядати подібні сутності предметної області як клас елементів, на основі якого буде будуватися програмна система.
Метод ієрархії передбачає побудову структури з наявністю підпорядкування. Наприклад, касир банку крім загальних обов'язків, що виконуються бухгалтером, має ряд специфічних функцій, що відносяться до роботи із клієнтами. Приклад подібної ієрархії підпорядкування обов'язків наведений на рис. 1.2.
Рис. 1.2. Ієрархія обов'язків
Таким чином, складність об'єкта дослідження спонукає розроблювача програмної системи до наступних дій:
серед сутностей предметної області необхідно виділити більш дрібні елементи, що становлять систему (підсистему);
необхідно абстрагуватися від деталей і визначити класи елементів;
необхідно забезпечити успадкування між схожими за властивостями елементами.
1.1.2.Складність процесу розробки програмного забезпечення
Як правило, складні програми пишуться не окремими програмістами, а цілими колективами. Це надає особливу складність процесу розробки програмного забезпечення (ПЗ), що, в основному, зводиться до наступних моментів:
Потрібна тісна взаємодія розроблювачів із замовником з метою більш глибокого вивчення предметної області.
Потрібно написання великої кількості коду. Для цього кожний з розроблювачів реалізує свою частину загального завдання, що повинна стикуватися з іншими частинами й працювати як єдина програма.
Програмна система повинна зберігати можливість еволюції й розвитку в нових умовах функціонування. Для цього повинен дотримуватися принцип наступності в розробці, коли нова більше зроблена система не створюється заново, а є прямим наслідком попередньої роботи. Тим самим заощаджується не тільки час, але й ресурси, що затрачується на розробку.
