
- •Передмова
- •Розділ 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
3.4.Успадкування в Delphi
Особливості успадкування в Delphi полягають у наступному:
Реалізується тільки просте успадкування, причому існує один базовий клас Object, що є присутнім у всіх класах:
TMyClass1= class (TObject);
TMyClass2= class; // за замовчуванням базовий клас Object
Методи можуть перевизначатися, причому типи й число параметрів при перевизначені можуть розрізнятися. Поля даних не перевизначаються.
Якщо усередині нового методу необхідно викликати заміщений метод, то використовується ключове слово inherited:
type TFirst = class
i: real;
procedure SetData(value: real);
end;
type TSecond = class
i: real;
s: string;
procedure SetData(str: string);
end;
implementation
procedure TFirst.SetData(value: real);
begin
i := value;
end;
procedure TSecond.SetData( str: string);
begin
inherited SetData(0.9);
s := str;
end;
Для правильної ініціалізації полів даних при створенні об'єкта похідного класу потрібно в його конструкторі (відразу після входу в нього) викликати конструктор базового класу:
сonstructor TSecond.Create;
begin
Inherited Create; // виклик конструктора базового класу
end;
Специфікатор доступу private приховує поля й методи базового класу від інших класів, у тому числі й від нащадків. Protected дозволяє використання полів і методів базового класу в нащадках, навіть якщо ті перебувають в іншому модулі.
У класі-нащадку можна змінити видимість методів і властивостей базового класу:
type TFirst = class
private
FNumber: Integer;
protected
property Number: Integer read FNumber;
end;
type TSecond = class (TFirst)
published
property Number;
end;
3.4.1.Ієрархія класів в Delphi
Ф
рагмент
ієрархії класів в Delphi наведений на
рис.3.6.
Рис. 3.6. Фрагмент ієрархії класів в Delphi
Наведені класи мають наступне призначення:
TObject – визначає конструктор Create, деструктор Destroy і процедуру Free;
TInitFile – визначає файли ініціалізації (*.ini), які управляють константами застосування;
TPersistent – визначає “стійкий об'єкт”, що може бути збережений на диску. При компіляції він записується в exe-файл додатка, а при виконанні читається з exe-файлу;
TPrinter – забезпечує видачу даних на печатку, тобто взаємодіє із зовнішніми пристроями комп'ютера;
TGraphic – забезпечує видачу графічної інформації;
TScreen – служить для визначення об'єкта CanVas;
TApplication – клас, що визначає об'єкт додатка. Він визначає такі властивості:
property Title: string; {заголовок основного вікна додатка}
property Exename: string; {ім'я файлу, що виконує,}
property Icon: TIcon; {піктограму додатка}
procedure Run; {}
TControl – елементи керування. У ньому визначаються такі властивості:
Caption {заголовок елемента}
Cursor {тип курсору}
Left {ліва координата}
Top{верхня координата}
Width {ширина}
Height {висота}
Visible {видимість}
procedure Show; {показати елемент}
procedure Hide; {сховати елемент}
TWinControl – візуальні елементи керування.
Ієрархія, що починається з TControl, утворює Visual Component Library (VCL) – бібліотеку візуальних компонентів, на основі якої будується застосування.