Означення об’єкта, опис типу і екземпляра об’єкта 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Означення об’єкта, опис типу і екземпляра об’єкта



Об’єкт у розумінні мови Pascal – це така структура, компонентами якої є взаємозв’язані дані різних типів і процедури та функції, що ці дані використовують. Компоненти-дані називаються полями об’єкта, а компоненти-процедури і функції називаються методами. Для позначення типу «об’єкт» в мові є службове слово OBJECT. Тип об’єкту описується способом, схожим на задання типу «запис».

TYPE

ІмяОбєкту=OBJECT

            ПоляДаних;

             Заголовки Методів;

END;

Конкретну змінну, оголошену типом ІмяОбєкту, прийнято називати екземпляром цього типу.

Розглянемо як приклад, об’єкт типу «студент». Нехай передбачені поля об’єкту: Name - ім’я студента, Date – дата народження, Rate – розмір стипендії.

З використанням типу «запис» це виглядало б так:

TStudent=RECORD

  Name:String[30];

  Date:String[10];

  Rate:Real;

END;

Відповідно з використанням типу «об’єкт»

  

TStudent=OBJECT

  Name:String[30];

  Date:String[10];

  Rate:Real;

END;

 

Змінну типу об’єкту (екземпляр об’єкту) описують так, як в Pascal описується будь-яка статична чи динамічна змінна, що вказує на розміщену в динамічній пам’яті змінну

Var

Student:TStudent;

або так

TYPE

PStudent=^TStudent;

VAR

Stat_st:TStudent;

Dyn_St:PStudent;

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

Поля об’єкта

До поля об’єкта можна звернутися як до поля звичайного запису, за допомогою оператора WITH або використовуючи префікс з іменем об’єкта. Наприклад:

Student.Rate:=800;

WITH Student DO BEGIN

Name:=’Лящук Петро Павлович’;

Date:=’25.06.1995’;

END;

Причому до полів можна звертатися не тільки тоді, коли вони напряму описані в даному типі, а й тоді, коли вони успадковуються від батьківського (породжуючого) типу (як проходить успадковування, буде показано пізніше).

До полів об’єкту можна звертатися безпосередньо, але краще цього уникати. Принципи ООП вимагають, щоб поля об’єктів були, наскільки це можливо, виключені з вихідного коду. Надалі буде показано, що поля методу можна оголосити прихованими, обмеживши можливість доступу до них межами модуля, в яких вони визначені.

Найраціональнішим способом одержання доступу до полів об’єкту у Pascal-і є використання методів самого об’єкта, при цьому метод є процедурою чи функцією, описаною всередині об’єкту, яка дозволяє зв’язуватися з ним.

 

Методи

Ініціалізація полів об’єкта

Звичайно при роботі з записами виникає проблема ініціалізації полів запису. Припустимо, наявна така структура

TStudent=OBJECT

  Name:String[30];

  Date:String[10];

  Rate:Real;

END;

Початківці часто використовують оператор WITH для присвоєння полям Name, Date i Rate початкових значень

VAR

Student:TStudent;

WITH Student DO BEGIN

Name:=’Лящук Петро Павлович’;

Date:=’25.06.1995’;

Rate:=700;

END;

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

Згідно з принципами ООП, включимо цю процедуру до складу об’єкту. Така процедура чи функція називається методом. В означення типу включається тільки заголовок методу. При визначенні методу він додатково ідентифікується іменем типу. Поля і методи є двома складовими частинами нової структури - об’єкта.

Type

TStudent=OBJECT

  Name:String[30];

  Date:String[10];

  Rate:Real;

  Procedure Init(Nm,Dt:String; RT:Real);

END;

Procedure TStudent.Init(Nm,Dt:String; RT:Real);

Begin

Name:=Nm;

Date:=Dt;

Rate:=Rt;

End;

Тепер для ініціалізації екземпляра типу TStudent достатньо просто викликати його метод

VAR

Student:TStudent;

Student.Init(‘Лящук Петро Павлович’,’25.06.1995’,700);

 

Визначення методів

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

Type

TStudent=OBJECT

  Name:String[30];

  Date:String[10];

  Rate:Real;

  Procedure Init(Nm,Dt:String; RT:Real);

  Function GetName:String;

  Function Get Date:String;

  Function Get Rate: Real;

END;

Зауважимо, що поля даних повинні бути оголошені перед оголошенням методу.

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

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

 



Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 34; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.216.190.167 (0.007 с.)