Ооп - це що таке? Основні принципи об`єктно-орієнтованого програмування

Чому об`єктно-орієнтованого програмування віддається перевага в більшості проектів? ООП пропонує ефективний спосіб боротьби з їх складністю. Замість того щоб розглядати програму як послідовність виконуваних інструкцій, воно представляє її як групу об`єктів з певними властивостями і виробляє з ними певні дії. Це призводить до створення більш ясних, більш надійних і легкосопровождаемих додатків.

Основні принципи об`єктно-орієнтованого програмування (ООП) сформувалися тому, що в дотеперішніх підходах були виявлені обмеження. Серед них - необмежений доступ до даних і велика кількість зв`язків, які накладають обмеження на внесення змін. Їх усвідомлення і причини важливі для того, щоб зрозуміти, що таке ООП в програмуванні і які його переваги.

процедурні мови

C, Pascal, FORTRAN та інші мови, є процедурними. Тобто кожен їх оператор наказує комп`ютера щось зробити: отримати дані, скласти числа, розділити на шість, відобразити результат. Додаток на процедурному мовою є список інструкцій. Якщо він невеликий, ніякого іншого організаційного принципу (часто званого парадигмою) не потрібно. Програміст створює список інструкцій, і комп`ютер виконує їх.

Поділ на функції

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

Додаток розділене на функції, кожна з яких має чітко визначену мету і інтерфейс.

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

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

ООП це

Проблеми структурного програмування

Оскільки додатки ставали все більшими, структурне програмування почало зазнавати труднощів. Проекти ставали занадто складними. Графіки зсувалися. Задіяно більше число програмістів. Складність росла. Витрати злітали, графік зсувається далі, і наступав крах.

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

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

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

необмежений доступ

У програмі, написаній, наприклад, на C, є два види даних. Локальні приховані всередині функції і іншими процедурами не використовуються.

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

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

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

Наприклад, в програмі обліку хтось вирішить, що код який обліковується предмета повинен складатися не з 5 цифр, а з 12. Це зажадає змінити тип даних з short на long. Тепер пов`язані з кодом функції повинні бути змінені для роботи з новим форматом.

Коли елементи змінюються у великому додатку, важко сказати, які процедури мають до них доступ. Але навіть якщо це з`ясувати, їх зміна може привести до неправильної роботи з іншими глобальними даними. Все пов`язано з усім іншим, тому зміна в одному місці відгукнеться в іншому.



що таке ООП в програмуванні

Моделювання реального світу

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

атрибути

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

Поведінка

Поведінка - це те, що об`єкти реального світу виробляють у відповідь на якийсь вплив. Якщо попросити начальство про підвищення зарплати, відповідь буде "да" або "немає". Якщо натиснути на гальмо, то автомобіль зупиниться. Проголошення і зупинка є прикладами поведінки. Поведінка подібно процедурі: його викликають, щоб зробити щось, і воно робить це. Таким чином, дані і функції самі по собі не моделюють об`єкти реального світу ефективно.

Рішення проблеми

Об`єкт в ООП представляється як сукупність даних і функцій. Тільки процедури, які називаються функціями-членами в C ++, дозволяють отримати його значення. Дані приховані і захищені від зміни. Значення і функції вміщені в одне ціле. Інкапсуляція і упрятиваніе - основні терміни в описі ГО-мов.

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

Додаток, як правило, складається з декількох об`єктів, які взаємодіють один з одним, викликаючи функції-члени.

Сьогодні найбільш широко використовувана мова ООП (об`єктно-орієнтоване програмування) - C ++ (плюс-плюс). У Java відсутні деякі функції, такі як покажчики, шаблони і множинне спадкування, що робить його менш потужним і універсальним, ніж C ++. C # ще не досяг популярності C ++.

Слід зазначити, що так звані функції-члени в C ++ називаються методами в деяких інших ГО-мовах, таких як Smalltalk. Елементи даних називаються атрибутами. Виклик методу об`єкта є посилкою йому повідомлення.

ООП об`єктно орієнтоване програмування з плюс

аналогія



Можна уявити об`єкти відділами компанії. У більшості організацій співробітники не працюють один день з кадрами, на наступний нараховуючи зарплату, а потім тиждень займаючись роздрібною торгівлею. У кожного відділу є свій персонал з чітко покладеними на нього обов`язками. Є і власні дані: показники заробітної плати, продажу, облік співробітників і т. Д. Люди в відділах працюють зі своєю інформацією. Поділ компанії, таким чином, полегшує контроль за її діяльністю та підтримує цілісність даних. Бухгалтерія відповідає за платіжні відомості. Якщо необхідно знати загальну суму заробітної плати, що виплачується в південному філіалі в липні, не потрібно ритися в архіві. Достатньо направити записку відповідальній особі, почекати, поки ця людина отримає доступ до даних і відправить відповідь з необхідною інформацією. Це гарантує відповідність з регламентом і відсутність стороннього втручання. Таким же чином об`єкт в ООП забезпечує організацію додатки.

Слід пам`ятати, що орієнтація на об`єкти не стосується подробиць роботи програми. Більшість інструкцій C ++ відповідає операторам процедурних мов, таких як С. Дійсно, функції-члени в C ++ дуже схожі на функції в С. Тільки ширший контекст дозволить встановити, чи є інструкція процедурної або об`єктно-орієнтованої.

об`єкт в ООП це

Об`єкт в ООП: визначення

При розгляді завдання програмування на ОО-мові замість питань про її поділ на окремі функції виникає проблема поділу на об`єкти. ООП-мислення набагато полегшує розробку додатків. Це відбувається в результаті подібності програмних і реальних об`єктів.

Які речі стають об`єктами в ООП? Нижче представлені типові категорії.

Фізичний об`єкт в ООП - це:

  • транспорт в моделях руху потоку;
  • електричні елементи в програмах схемотехніки;
  • країни в моделі економіки;
  • літак в системі управління повітряним рухом.

Елементи середовища комп`ютера користувача:

  • меню;
  • вікна;
  • графіка (лінія, прямокутник, коло);
  • клавіатура, миша, принтер, дискові накопичувачі.

люди:

  • працівники;
  • студенти;
  • клієнти;
  • продавці.

дані:

  • книга обліку;
  • особиста справа;
  • словник;
  • таблиця широт і довгот населених пунктів.

Зв`язок об`єктів реального світу і ООП стало результатом поєднання функцій і даних: вони зробили переворот в програмуванні. Такого близького відповідності в процедурних мовах немає.

об`єкт в ООП визначення

клас

Об`єкти в ООП - це члени класів. Що це означає? Мови програмування мають вбудовані типи даних. Тип int, т. е. ціле число, зумовлений в C ++. Можна оголошувати скільки завгодно змінних int.

Аналогічно визначається безліч об`єктів одного класу. Він визначає функції і дані, що включаються в його об`єкти, не створюючи їх, так само як int не створює змінні.

Клас в ООП - це опис ряду схожих об`єктів. Принц, Стінг і Мадонна є співаками. Немає жодної людини з таким ім`ям, але люди можуть так називатися, якщо вони мають відповідні характеристиками. Об`єкт ООП - це екземпляр класу.

спадкування

У житті класи розділені на підкласи. Наприклад, тварини діляться на земноводних, ссавців, птахів, комах і т. Д.

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

Аналогічно базовий клас може стати батьком кількох похідних підкласів, які можуть бути визначені так, що вони будуть розділяти його характеристики з додаванням власних. Спадкування подібно функції, що спрощує процедурну програму. Якщо кілька частин коду роблять майже те ж, можна витягти загальні елементи і помістити їх в одну процедуру. Три ділянки додатки можуть викликати функцію, щоб виконати загальні дії, але вони можуть виробляти і свої власні операції. Подібно до цього базовий клас містить дані, загальні для групи похідних. Подібно до функцій успадкування скорочує ГО-програму і прояснює взаємозв`язок її елементів.

об`єкт в ООП

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

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

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

Створення нових типів даних

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

position1 = position + origin,

де position1, position і origin - пари незалежних чисельних величин. Створення класу, що включає в себе ці два значення, і оголошення змінних його об`єктами створює новий тип даних.

основні принципи об`єктно-орієнтоване програмування ООП

Поліморфізм, перевантаження

Оператори = (дорівнює) і + (плюс), які використовуються в позиційній арифметиці вище, не діють так само, як з вбудованими типами, такими як int. Об`єкти position і ін. Не зумовлені, а задані програмним шляхом. Яким чином ці оператори знають, як з ними поводитися? Відповідь полягає в тому, що для них можна задати нові моделі поведінки. Ці операції будуть функціями-членами класу Position.

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

Книга про ООП «Об`єктно-орієнтоване програмування для чайників» дозволить всім бажаючим ознайомитися з даною темою докладніше.


Увага, тільки СЬОГОДНІ!


Статті схожі на "Ооп - це що таке? Основні принципи об`єктно-орієнтованого програмування"
Поділися, будь ласка статтю
всього голосів: 150
Увага, тільки СЬОГОДНІ!