Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_OT-1.doc
Скачиваний:
14
Добавлен:
17.03.2016
Размер:
1.15 Mб
Скачать

Об’єктно-орієнтоване програмування на мові "паскаль"

Мета практикуму – розробка програмного забезпечення на мові прграмування "Паскаль" з використанням методів об’єктно-орієнтованого програмування.

    1. ТЕОРЕТИЧНІ ВІДОМОСТІ

1.1. Об’єктно-орієнтоване програмування (ООП) характеризується трьома властивостями:

1). Об’єднання даних та підпрограм, що їх обслуговують, в один тип даних “Об’єкт”. Ця властивість ООП називається інкапсуляцією. В ПАСКАЛІ для опису об’єктів застосовується зарезервоване словоobject. Традиційно ім'я типу починається з великої буквиТ. Наприклад, створений об’єкт “Персона” (TPerson) уміщує три поля даних про людину:

  • Прізвище, ім'я, по батькові – Name;

  • Адреса – Address;

  • Телефон – Telephon;

та дві підпрограми-процедури, що їх обслуговують:

  • Read_Date– ввід даних про людину;

  • Write_Date– вивід даних про людину.

Підпрограми об’єкта називаються методамиі їх повний опис подається нижче опису об’єкта. Для позначення належності метода перед його іменем через крапку записується ім’я об’єкта, наприклад,Tperson.Read_Date. Для зменшення такої громіздкості при звертанні до методів у виконавчій частині програми застосовується операторWithаналогічно до типу даних “Запис”. Повний опис об’єкта “Персона” має наступний вигляд:

Type

TPerson= object

Name :string;

Address :string;

Telephon :string;

Procedure Read_Date;

Procedure Write_Date;

end;

Procedure TPerson.Read_Date;

begin

Write ('ПІБ ? ');

Readln (Name);

Write ('АДРЕСА ? ');

Readln (Address);

Write ('ТЕЛЕФОН ? ');

Readln (Telephon);

end;

Procedure TPerson.Write_Date;

begin

Writeln ('ПІБ: ',Name);

Writeln ('АДРЕСА: ',Address);

Writeln ('ТЕЛЕФОН: ',Telephon);

end;

Var

Person :TPerson;

2). При створенні нового об’єкта можна використати всі поля вже існуючого об’єкта, який є батьківським для створюваного дочірнього. Це дозволяє значно скоротити опис програми, бо непотрібно повторно описувати необхідні для роботи поля об’єкта. Ця властивість ООП називається наслідування. Ім'я батьківського об’єкта записується в круглих дужках після слова object в описі дочірнього об’єкта. Наприклад, опис об’єкта “Студент”, який уміщує всі поля існуючого об'єкта “Персона” та додатково одне поле з назвою інституту, здійснюється наступним чином:

Type

TStudent= object (TPerson)

Institute :string;

Procedure Read_Date;

Procedure Write_Date;

end;

Procedure TStudent.Read_Date;

begin

TPerson.Read_Date;

Write ('ІНСТИТУТ ? ');

Readln (Institute);

end;

Procedure TStudent.Write_Date;

begin

TPerson.Write_Date;

Writeln ('ІНСТИТУТ: ',Institute);

end;

Var

Student :TStudent;

Як видно, методи об’єкта “Студент” Read_Date та Write_Date доповнюються командами вводу та виводу інформації про інститут;

3). Методи ієрархічних об'єктів у наведених прикладах “Персона” та “Студент” мають однакові імена Read_DateтаWrite_Date, проте у кожному об'єкті їх дія відрізняється. Ця властивість ООП називаєтьсяполіморфізм.

1.2. Зв'язок між методами дочірніх та батьківських об'єктів у наведених прикладах установлюється під час компіляції програми, тому такі методи називаються статичними.Існують більш зручні методи, які дозволяють встановлювати зв'язок під час виконання програми. Вони називаютьсявіртуальнимий розширюють властивість поліморфізм, бо забезпечують зміну роботи методів у ході виконання програми. Віртуальні методи позначаються при описі типу об'єкта словомVirtual після заголовка підпрограми. При цьому всі відповідні методи в дочірніх об'єктах повинні також бути віртуальними. При наявності в об'єкті віртуальних методів його полям даних у виконавчому блоці програми повинні задаватися початкові значення, наприклад, нульові. Для цього служить спеціальний метод об'єктаConstructor(конструктор) по типу звичайної процедури, який за згодою має ім'яInit.

Недоліком віртуальних методів є менша швидкодія порівняно зі статичними методами.

1.3. Об'єкти, як й інші типи даних, можна розміщувати в динамічній пам'яті й працювати з ними за допомогою вказівників. Виділення та звільнення динамічної пам'яті здійснюється відомими командами NewйDispose. Наприклад, створення динамічного об'єктаTPersonпроходить наступним чином

Var

Person :^TPerson;

Begin

New (Person);

. . .

Dispose (Person);

End.

Якщо динамічний об'єкт має віртуальні методи, то перед його використанням у виконавчому блоці здійснюється ініціалізація об'єкта за допомогою метода Constructor

Person^.Init;

Для зменшення громіздкості можна об'єднати в одну команду процес ініціалізації та виділення динамічної пам'яті

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