Об’єктно орієнтований підхід 


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



ЗНАЕТЕ ЛИ ВЫ?

Об’єктно орієнтований підхід



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

 Функції об’єкту, що називаються методами (інша назва – функції-члени), звичайно призначені для доступу до даних об’єкта (приклад – проводимо мишкою над екранною кнопкою і вона змінює свій розмір та колір). Якщо необхідно зчитати якісь дані об’єкту, треба викликати відповідний метод, що виконає зчитування і поверне потрібне значення. Прямий доступ до даних неможливий. Дані приховані від зовнішнього впливу, що захищає їх від випадкової зміни. Кажуть, що дані і методи інкапсульовані. Терміни приховування та інкапсуляція даних є ключовими в описі об’єктно орієнтованих мов.

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

Типова програма на об’єктно орієнтованій мові програмування, наприклад, на С++, складається з сукупності об’єктів, що взаємодіють між собою, викликаючи методи один одного. Структура такої програми приведена на рисунку 2.

 

Рисунок 2. Об’єктно-орієнтований підхід

Можна уявляти собі об’єкти чимось схожим на відділення компанії – бухгалтерію, відділ продажів, відділ кадрів та інші. Такий поділ є важливою частиною структурної організації фірми. В більшості компаній обов’язки чітко розподілені між підрозділами, і в кожного підрозділу є дані, з якими він працює: в бухгалтерії – заробітна плата, у відділу продажів – відомості, що стосуються торгівлі, у відділу кадрів – персональна інформація про співробітників.

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

 

Характеристики об’єктно орієнтованих мов

Далі ми розглянемо кілька основних елементів, що входять до складу об’єктно-орієнтованих мов, зокрема до складу мови С++.

Об’єкти

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

Що повинне представлятися в програмі у вигляду об’єктів? Це залежить від типу задачі і уяви розробника. Можливі такі варіанти:

Ø Фізичні об’єкти

· Автомобілі при моделюванні вуличного руху

· Елементи схеми при моделюванні електромережі

· Країни при створенні економічної моделі

· Літаки при моделюванні диспетчерської системи

 

Ø Елементи інтерфейсу

· Вікна

· Кнопки

· Меню

· Випадаючі списки

· Поля введення і поля редагування

· Графічні об’єкти (лінії, прямокутники, круги)

· Миша, клавіатура, дискові пристрої, принтери

 

Ø Структури даних

· Масиви

· Стеки

· Черги

· Дерева

· Зв’язані списки

 

Ø Групи людей

· Співробітники

· Студенти

· Покупці

· Продавці

 

Ø Сховища даних

· Інвентарні описи

· Перелік номенклатур

· Списки співробітників

· Словники

 

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

 

Класи

Коли ми говоримо про об’єкти, то кажемо, що вони є екземплярами класів. Розглянемо таку аналогію. Практично всі комп’ютерні мови мають стандартні типи даних, у мові С є цілий тип int. Ми можемо визначити змінні таких типів у наших програмах:

int day;

int divisor;

int n;

Так описані змінні відразу дістають певні властивості (наприклад, розмір sizeof), визначаються операції, які можна з ними проводити (додавання, віднімання, множення, ділення націло, остача від ділення). Подібним способом ми можемо визначати об’єкти класу, як це показано на рисунку 3. Клас є свого роду формою, що визначає, які дані і функції будуть включені в об’єкт класу. При оголошенні класу не створюються ніякі об’єкти цього класу, по аналогії з тим, що існування типу int ще не означає існування змінних цього типу.

 

Рисунок 3. Клас і його об’єкти

Таким чином, клас є описом сукупності схожих між собою об’єктів. Об’єкт класу часто називають також екземпляром класу.

 

Успадковування

Поняття класу приводить нас до поняття успадковування. У повсякденному житті ми часто стикаємося з розбиттям класів на підкласи: наприклад, клас тварин можна розбити на підкласи ссавці, земноводні, комахи, птахи, клас студенти технікуму на класи: програмісти, економісти, статистики та ін.

Принципи, покладені в основу такого поділу, полягають в тому, що кожен підклас володіє властивостями, притаманними тому класу, з якого виділений даний підклас: студенти всіх відділень є і студентами технікуму. Крім тих властивостей, які є спільними у даного класу і підкласу, підклас може мати і власні властивості: студенти-програмісти навчаються 4 роки, студенти-статистики – 3 роки. Ілюстрація цієї ідеї приведена на рисунку 4.

Рисунок 4 Успадковування

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

Не проводьте хибних аналогій між відношенням «об’єкт-клас» і «базовий клас – похідний клас». Об’єкти, що існують в пам’яті комп’ютера, є втіленням властивостей, притаманних класу, до якого вони належать. Похідні класи мають властивості як успадковані від базового класу, так і свої власні.

Успадковування можна вважати аналогом використання функцій в процедурному підході. Якщо ми виявимо кілька функцій, що здійснюють схожі дії, то видобудемо з них ідентичну частину і винесемо в окрему функцію. Тоді вихідні функції будуть однаковим чином викликати свою спільну частину, і в той же час в кожній з них будуть свої власні інструкції. Базовий клас містить елементи, спільні для групи похідних класів. Роль успадковування в ООП така ж, як і у функцій в процедурному програмуванні – зменшити розмір коду і спростити зв’язки між елементами програми.

 

Повторне використання коду

Розроблений клас може бути використаний в інших програмах. Ця властивість називається можливістю повторного використання коду. Аналогічною властивістю в процедурному програмуванні володіють бібліотеки функцій, які можна включати в різні програмні пакети.

В ООП концепція успадкування відкриває нові можливості повторного використання коду. Програміст може взяти існуючий клас, і, нічого не міняючи, додати до нього власні елементи. Всі похідні класи успадкують ці зміни, і в той же час кожен з похідних класів можна модифікувати окремо.

Припустімо, що програміст розробив клас, що представляє поле введення. Інший програміст хоче додати до цього класу можливість введення тільки цифр або тільки букв, залежно від вибору користувача. В цьому випадку потрібно створити новий клас, що успадковує всі властивості вихідного, і додати до нього необхідний код.

Легкість повторного використання коду вже написаних програм є важливою перевагою ООП.

 

Типи даних користувача

Однією з переваг об’єктів є те, що вони дають користувачу можливість створювати власні типи даних. Нехай нам необхідно працювати з об’єктами, що мають дві координати: x і y. Нам хотілося б здійснювати звичайні арифметичні операції над такими об’єктами, наприклад:

position1=position2+origin

де змінні position1, position2, origin являють собою набори з двох координат. Описавши клас, що включає в себе пару координат, і оголосивши об’єкти цього класу з іменами position1, position2, origin, ми фактично створимо новий тип даних.

 



Поделиться:


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

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