Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Об'єктно орієнтовне програмування1.doc
Скачиваний:
5
Добавлен:
17.11.2019
Размер:
1.38 Mб
Скачать

2. Постулати об'єктно-орієнтованого програмування

  1. Модель і абстракція.

  2. Ієрархія та успадкування.

  3. Відповідальність та модульність.

  4. Класи, їх структура та зміст

2.1. Модель і абстракція

В основу сучасної парадигми об'єктно-орієнтованого програ­мування (ООП) покладено розбиття програми на модулі так, щоб вона перетворилася на сукупність об'єктів, що взаємодіють. Ідея ООП почала активно розвиватися і привела до появи нових на­прямків: об'єктно-орієнтованого аналізу (ООА) і об'єктно-орієн­тованого програмування.

Для ООП існує кілька загальноприйнятих понять: абстракція, ієрархія, відповідальність, модульність тощо. Визначення цих понять достатньо повно описано в [1]. Перелічені поняття разом з такими поняттями як клас, об'єкт, методи, інтерфейси, конст­руктори, становлять основу ООП.

Відомо, що для опису поводження будь-якого об'єкта буду­ється модель цього об'єкта. Опис кожної моделі виконується у вигляді одного або кількох класів (classes). Клас слід розглядати як проект, каркас для створення конкретних об'єктів. Клас міс­тить опис змінних і констант кожного об'єкта — поля класу (class fields). Процедури, які описують поводження об'єкта, нази­ваються методами класу (class methods). Усередині класу можна описати і вкладені класи, і вкладені інтерфейси. Поля, методи і вкладені класи першого рівня є членами класу (class members).

Наприклад, [4, с. 69] опис автомобіля:

class Automobile {

int maxVelocity; II поле, яке містить максимальну швидкість авто­мобіля

int speed; //поле, яке містить поточну швидкість автомобіля int weight; //поле, яке містить вагу автомобіля // інші поля...

voidmoteTo (int x, inty) {//метод, який моделює рух автомобіля

//х тау — параметри, але не поле int a = 1; //локальна зміна

//тіло методу. Тут описується рух автомобіля в полі

. }. //інші методи...

Зауваження. У мові Java немає вкладених процедур-функцій. Тому всередині методу не можна описати інший метод.

Після закінчення опису класу створюються конкретні об'єкти (примірники) описаного класу. Це відбувається в три етапи.

1. Оголошуються посилання на об'єкти; записується ім'я кла­ су і через пропуск перелічуються примірники класу, точніше по­ силання на них:

Automobile Ford Sierra Oka HondaCivic;

2. За допомогою операції new визначаються самі об'єкти, для них виділяється пам'ять, посилання отримує адресу цієї ділянки як своє значення:

Ford Sierra = new Automobile(); Oka = new Automobile(); HondaCivic = new Automobile();

3. Відбувається ініціалізація об'єктів, установлюються почат­ кові значення. Цей етап, як правило, сумісний з другим. Про це свідчить ім'я класу з дужками в операції new-Automoblle() (конст­ руктор класу).

Оскільки імена полів методів і вкладених класів у всіх об'єк­тів однакові (їх задано в опису класу), то такі імена потрібно уто­чнювати ім'ям посилання на об'єкт:

Ford Sierra.MaxVelocity = 180;

Ока. MaxVelocity = 150;

HondaCivic. MaxVelocity = 200;

HondaCivic. MoteTo (35,120).

У багатьох ситуаціях будують кілька моделей із різними варіан­тами деталізації. Наприклад, для конструювання «накидки» потріб­на менш точна модель контурів, ніж для конструювання «фраку».

Питання і завдання

1. Визначити поняття абстракції:

  • абстракція сутності об'єкта;

  • абстракція поводження;

  • довільна абстракція.

  1. Що таке бартер абстракції?

  2. Модель і абстракція.