Тема 2. Основи мови Object Pascal
Парадигма програмування
Структурне програмування
Об’єктно-орієнтоване програмування
Об’єкт
Абстракція
Інкапсуляція
Ієрархія
Наслідування
Поліморфізм
Розвиток у галузі програмування безпосередньо залежить від задач, які пропонуються для вирішення з його допомогою. Складність задач у програмуванні неперервно зростає. Наприклад, при створенні першої версії 32-розрядної операційної системи Windows NT (1993 рік) було написано 6 млн. рядків програмного коду, а код Windows 2000 вже містить близько 29 млн. рядків. Для вирішення поставлених задач, програмісти вдосконалюють методологію програмування, тобто напрацьовують певні рекомендації, узагальнюють підходи та виробляють нові стилі програмування.
Загальноприйняті у певний період часу підходи та стилі програмування утворюють так звані парадигми програмування. Можна виділити наступну послідовність парадигм програмування:
Процедурне – Структурне – Модульне – Об’єктно-орієнтоване.
Поява нової парадигми сприяє розробці нових мов програмування та інструментальних засобів. Мови програмування Pascal та C створені за парадигмами структурного та модульного програмування. Структурні мови програмування передбачають просту схему побудови програм – як взаємодію даних та коду. Дані описують за допомогою змінних різних типів – цілочисельних, масивів, записів та ін. З даними працює код, який складається з процедур та функцій – різних для різних типів даних. При такому підході розробка великих проектів, де використовується багато різних структур даних є досить складною.
З розвитком програмування виникла ідея поєднати в межах однієї сутності дані і код, що безпосередньо опрацьовує ці дані. Така сутність отримала назву об’єкт, а відповідний підхід до створення програм називають об’єктно-орієнтованим програмуванням.
Об’єктно-орієнтоване програмування (ООП) – це парадигма програмування, яка розглядає програму як сукупність гнучко пов’язаних між собою об’єктів.
З погляду сприйняття людиною об’єктом може бути:
- відчутний і (або) видимий предмет;
- щось, що сприймається мисленням;
- щось, на що спрямовано думку або дію.
Кожен об’єкт має суттєві характеристики, які відрізняють його від усіх інших об’єктів. Сукупність таких характеристик називається абстракцією. Розрізняють абстракції стану та поведінки об’єкта.
Стан(дані об’єкта) характеризується переліком та значеннями певних ознак. Поведінка (код об’єкта) визначається набором операцій, які виконуються об’єктом, або над об’єктом.
Кожен об’єкт є екземпляром (представником) певного класу. Відповідно, клас – це певна множина об’єктів, що мають спільні характеристики стану та поведінки.
ООП – основна парадигма програмування, починаючи з 90-х рр. XX ст. Окрім розвитку методології програмування, передумовами його виникнення можна вважати:
ü Прогрес в області архітектури ЕОМ
ü Розвиток мов програмування Simula 67, Smalltalk
ü Розвиток теорії баз даних
ü Дослідження в галузі штучного інтелекту
ü Дослідження філософії та теорії пізнання.
Об’єктно-орієнтовані мови програмування:
- класичні: Simula 67, Smalltalk, Actor, Eiffel, Objective C;
- сучасні: C++, Object Pascal, Java, C#.
Мова програмування Object Pascal. Реалізація ООП у Object Pascal.
Мову програмування Pascal створено Ніклаусом Віртом у 1960-х роках на основі мови Algol-60.
У 1985 р. на основі версії Pascal фірми Apple був створений Оbject Pascal (розробник Ларрі Теслер). У 1989 р. фірма Borland включила об’єктно-орієнтовані можливості до системи програмування Turbo Pascal версії 5.5.
З 1994 р. Оbject Pascal використовується як основа системи програмування Delphi фірми Borland. Починаючи з версії Delphi 6 (2001 рік) Borland розширила можливості мови Object Pascal, що дозволило вважати мову Delphi новою мовою програмування. Надалі виклад матеріалу буде стосуватись як класичної мови Object Pascal так і мови Delphi.
У Оbject Pascal кожен об’єкт оголошується як змінна. Тоді клас буде типом цієї змінної. Клас містить опис змінних, що характеризують стан об’єкта (полів класу) та процедур або функцій, що описують поведінку об’єкта (методів класу).
Отже, першим слід описати клас.
type
<ім’я класу>=class
<опис даних>
<опис коду>
end;
Приклад:
type
TCircle = class // клас кіл
X, Y: Real; // поля (координати центру)
R: Real; // поле (радіус)
procedure Draw; // метод (малювання на екрані)
function Area: real; // метод (обчислення площі)
end;
Після опису структури класу можна оголосити об’єкти – екземпляри класів.
var
<ім’я об’єкта>:<ім’я класу 1>;
// …
<ім’я об’єкта>:<ім’я класу n>;
Приклад:
var aCircle1, aCircle2: TCircle; // два об'єкта-кола
Основні переваги концепції ООП:
- моделювання предметів та явищ реального світу;
- наявність типів даних, що створюються користувачем (класи);
- приховування деталей реалізації (інкапсуляція);
- можливість повторного використання коду (наслідування);
- інтерпретація викликів процедур та функцій на етапі виконання (поліморфізм).
Інкапсуляція(англ. encapsulation) – спосіб поєднати дані і код, який опрацьовує ці дані. При цьому частина даних або коду може бути захищена від зовнішнього впливу (поза об’єктом) або помилкового використання. Наприклад, можна захистити, поле R класу TCircle від надання йому від’ємних значень.
Наслідування(англ. inheritance). На основі одного класу можна створити інший, який буде використовувати (успадковувати) стан та поведінку першого. У цьому випадку перший клас називається батьківським (базовим, надкласом або предком), а другий – дочірнім (похідним, підкласом або нащадком). Окрім використання полів та методів батьківського класу, дочірній клас може їх змінювати або доповнювати, а також мати власні.
Дочірній клас оголошується наступним чином:
type
<ім’я дочірнього класу> = class(<ім’я батьківського класу>)
Наприклад:
Type
TCircle = class(TEllipse)
Поліморфізм (англ. polymorphism) – можливість позначати одним ім’ям об’єкти різних класів, які мають спільного предка. Тоді коженоб’єкт, що позначається таким поліморфним ім’ям, може по-своєму реагувати на якийсь спільний набір операцій.
Приклад. Нехай у класі TFigure (геометричні фігури) оголошено метод Draw (малювання). Змінна типу TFigure може містити різні фігури, наприклад, кола (об’єкти класу TCircle) або прямокутники (об’єкти класу TRectangle). Тоді, при виклику метода Draw у першому випадку буде намальовано коло, а у другому – прямокутник.
Тема 2. Основи мови Object Pascal
Основні поняття
Елементи програми
Структура програми
Типи даних
Структуровані типи даних
Операції
Оператори
I. Елементи програми:
Алфавіт символів:
- латинські літери (А..Z, a..z)
- десяткові цифри (0..9)
- шістнадцяткові цифри
- спеціальні символи: + - * / . , ; : = < > ( ) [ ] { } ^ @ $ # ’ пропуск _
- комбінації символів: := <> >= <= .. (* *) // (. .)
- комбінації літер.
Програма – послідовність символів, які об’єднуються в лексеми.
Лексеми поділяються на ключові слова, ідентифікатори, константи, комбінації символів, розділові знаки.
Ідентифікатори (стандартні та користувацькі) можуть бути іменами модулів, міток, констант, типів, змінних, процедур та функцій; складаються з латинських букв, цифр, спеціального символа _ (знак підкреслення); починаються з букви або знака підкреслення (мітки можуть починатися з цифри).
Символи кирилиці можуть використовуватись у символьних константах або коментарях.