Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OЗП в delphi.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
105.77 Кб
Скачать

Об’єктно-зорієнтоване програмування

Дисципліна програмування стрімко почала розвиватись як наука з кінця 40 – х років 20 століття. За роки свого становлення і розвитку програмування пройшло ряд етапів розробки програмних засобів.

На початку програмування різних задач здійснювалося у машинних кодах. З часом була розроблена концепція підпрограм. Підпрограма це спеціальним чином оформлена логічно завершена частина програми до якої можна звертатися з будь-якої точки програми будь-яку кількість разів з різними параметрами. Тоді у програмуванні почали створюватись і використовуватись бібліотеки підпрограм.

Черговим етапом у програмуванні стає автоматизація розробки програм. Починають використовуватися алгоритмічні мови та транслятори (компіляторами та інтерпретатори) з цих мов. Також появляється ідеологія модульного і структурного програмування. При модульному програмуванні здійснюється алгоритмічна декомпозиція задачі на окремі модулі Рис. 12.1. Кожний модуль вибирає із загального сховища дані обробляє їх і повертає результат обробки назад у сховище.

Рис. 12.1. Модульне програмування

Структурне програмування визначає порядок розробки модулів. Розрізняють програмування знизу у вверх і зверху в низ. При програмуванні знизу у вверх спочатку розробляються окремі модулі, а потім вони зв’язуються в єдину програму, при цьому ряд проблем несумісності по даних і ряд модулів приходиться переписувати заново. При програмуванні зверху у низ вимагається повна інформація про початкові дані і результати, а це вимагає високої кваліфікації розробників проекту.

Наступним етапом стало візуальне проектування програмних засобів основою якого є об’єктно-зорієнтоване програмування. При об’єктно-зорієнтованому програмуванні декомпозиція задачі здійснюється як по алгоритмах так і по даних. Основним поняттям об’єктно-зорієнтованого програмування є клас, який містить дані і програми їх обробки. В результаті клас несе в собі деяку функціональність. Бібліотека класів Delphi ­– це фактично, набір “цеглинок” для побудови програм.

12.1. Класи й об’єкти. Основні поняття

Класами в Object Pascal називаються спеціальні типи, які включають поля, методи й властивості. Як і будь-який інший тип, клас є лише зразком для створення конкретних екземплярів реалізації, які називаються об'єктами.

Важливою відмінністю класів від інших типів є те, що об’єкти класу завжди розподіляються в динамічній пам’яті, тому об'єкт-змінна фактично є покажчиком на динамічну область пам'яті. Однак, на відміну від інших вказівників, при посиланні на вміст об'єкта забороняється використати символ «^» за ім'ям об'єкта:

type

TClass = class(TObject)

Field: Integer;

end;

var

MyClass: TClass;

Begin

. . . . . .

MyClass^.Field := 0; // Помилка!

MyClass.Field := 0; // Слід писати

. . . . . .

end;

В основі класів лежать три фундаментальних принципи інкапсуляція, успадкування і поліморфізм.

Інкапсуляція. Клас це єдність трьох сутностей - полів, методів і властивостей. Об'єднання цих сутностей у єдине ціле й називається інкапсуляцією. Інкапсуляція дозволяє багато в чому ізолювати клас від інших частин програми, зробити його «самодостатнім» для розв’язування конкретних задач. У результаті клас завжди несе в собі деяку функціональність. Наприклад, клас TForm інкапсулює у собі все необхідне для створення Windows-вікна., клас TMemo є повно функціональним текстовим редактором, клас TTimer забезпечує роботу програми з таймером і т.д.

Інкапсуляція є потужнім засобом розробки програмних засобів.

Успадкування. Будь-який клас може бути породжений від іншого класу. Для цього при його оголошенні вказується ім'я класу-батька:

Type TPerson=class Type TMan=class(TPerson)

Pib:string[30]; Pos:string[15];

Rn:word; Zp:real;

Procedure ReadP; . . . . . . .

Procedure WriteP;

end; end;

TPerson це батьківський клас, а TMan породжений клас. Породжений клас автоматично успадковує поля, методи й властивості свого батька й може доповнювати їх новими. Таким чином, клас TMan містить всі поля і методи класу TPerson і доповнює їх полями Pos і Zp. Принцип успадкування забезпечує поетапне створення складних класів і розробку власних бібліотек класів.

Всі класи Object Pascal породжені від єдиного батька-класу TObject. Цей клас не має полів і властивостей, але містить у собі методи самого загального призначення, що забезпечують весь життєвий цикл будь-яких об'єктів – від їхнього створення до знищення. Програміст не може створити клас, що не був би дочірнім класом TObject. Наступні два оголошення ідентичні:

TaClass = class(TObject)

TaClass = class

Принцип успадкування приводить до створення ієрархічного дерева класів, що поступово розростається при переміщенні від TObject до його нащадків. Кожен нащадок доповнює можливості свого батька новими й передає їх своїм нащадкам.

TWinControl

Рис. 12.2. Фрагмент дерева класів Object Pascal

На Рис. 12.2. наведено фрагмент дерева класів Delphi. Клас TPersistent збагачує можливості свого батька TObject: він «уміє» зберігати дані у файлі й одержувати їх з нього, у результаті це вміють робити й всі його нащадки. Клас TComponent, у свою чергу, уміє взаємодіяти із середовищем розроблювача й передає це вміння своїм нащадкам. TControl не тільки здатний працювати з файлами й середовищем розроблювача, але він ще вміє створювати й обслуговувати видимі на екрані зображення, а його нащадок TWinControl може створювати Windows-вікна, і т.д.

Поліморфізм. Поліморфізм - це властивість класів вирішувати схожі за змістом проблеми різними способами. У рамках Object Pascal властивості класу визначаються набором його методів. Змінюючи алгоритм того або іншого методу в нащадках класу, програміст може надавати цим нащадкам відсутні в батька специфічні властивості. Для зміни методу необхідно перекрити його в нащадку, тобто оголосити в нащадку однойменний метод і реалізувати в ньому потрібні дії. У результаті в об'єкті-батька й об'єкті-нащадка будуть діяти два однойменних методи, що мають різну алгоритмічну основу й, отже, різні властивості, що надаються об'єктам. Це й називається поліморфізмом об'єктів.

В Object Pascal поліморфізм досягається не тільки механізмами спадкування й перекриття методів батька, але і їх віртуалізацією, що дозволяє батьківським методам звертатися до методів своїх нащадків.

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