Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Означення об’єкта, опис типу і екземпляра об’єкта
Об’єкт у розумінні мови 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 с.) |