Ооп - це що таке? Основні принципи об`єктно-орієнтованого програмування
Чому об`єктно-орієнтованого програмування віддається перевага в більшості проектів? ООП предлагает Ефективний способ Боротьба з їх складністю. Замість того щоб розглядаті програму як послідовність віконуваніх інструкцій, воно представляет ее як групу об`єктів з Певної властівостямі и віробляє з ними певні Дії. Це виробляти до создания більш ясніх, більш надійніх и легкосопровождаеміх Додатків.
Основні принципи об`єктно-орієнтованого програмування (ООП) сформувалася того, что в дотеперішніх підходах були віявлені обмеження. Серед них - Необмежений доступ до Даних и велика Кількість зв`язків, Які накладають обмеження на внесення змін. Їх усвідомлення и причини Важливі для того, щоб зрозуміті, що таке ООП в програмуванні и Які его Преимущества.
процедурні мови
C, Pascal, FORTRAN та інші мови, є процедурними. Тобто КОЖЕН їх оператор наказує комп`ютера Щось сделать: отріматі дані, Скласти числа, розділіті на Шість, відобразіті результат. Додаток на процедурному мовою є список інструкцій. Если ВІН невеликий, Ніякого Іншого організаційного принципу (часто званого парадигмою) НЕ нужно. Програміст створює список інструкцій, і комп`ютер Виконує їх.
Поділ на Функції
Коли Додатки стають более, список виходів громіздкім. Мало хто може зрозуміті более кількох сотень інструкцій, поки смороду НЕ БУДУТЬ згруповані. З цієї причини функція стала способом сделать програми більш зрозумілімі для своих творців. У Деяк мовах та ж концепція может носить назв підпрограмі або процедури.
Відео: Об`єктно-орієнтоване програмування та патерни проектування в PHP - 1
Додаток розділене на Функції, шкірні з якіх має чітко визначених мету и інтерфейс.
Ідея поділу на процедури может буті розшірена їх групувань в більшій об`єкт, звань модулем, но принцип аналогічній: групувань компонентів, Які віконують списки інструкцій.
Поділ на Функції и модулі - один з наріжніх каменів структурного програмування, Пожалуйста течение кількох десятіліть до з`явиться ООП Було довлеющей парадигмою.
Проблеми структурного програмування
Оскількі Додатки ставали все більшімі, структурні програмування Почаїв зазнаваті труднощів. Проекти ставали занадто складаний. Графіки зсуваліся. Задіяно более число програмістів. Складність росла. Витрати зліталі, графік зсувається далі, и настає крах.
Відео: Урок 0 (9). Введення в ООП. Его принципи та засади. Класи, об`єкти класів.
Аналіз причин ціх Невдача показавши Недоліки процедурної парадигми. Незалежності від того, наскількі добро реалізованій структурованій підхід до програмування, Великі програми стають надмірно складаний.
Які причини ціх проблем, пов`язаних з процедурними мовами? По-перше, Функції ма ють Необмежений доступ до глобальних Даних. Як і одним, не пов`язані между собою процедури і значення погано моделюють реальний світ.
Если розглядаті ЦІ проблеми в контексті програми обліку запасів, то одним з найважлівішіх глобальних елементів Даних є сукупність обліковіх одиниць. Різні Функції могут Звертатися до них для введення нового значення, его відображення, зміни и т. Д
Необмежений доступ
У Програмі, напісаній, например, на 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.
Використання Операторів або процедур в залежності від того, з чим смороду Працюють, назівається поліморфізмом. Коли існуючій оператор, такий як + або =, отрімує можлівість працювати з новим типом Даних, говорять, что ВІН перевантаження. Перевантаження в ООП - це вид поліморфізму. Вона є національною рісою українців.
Книга про ООП «Об`єктно-орієнтоване програмування для чайників» дозволити всім бажаючих ознайомітіся з даною темою докладніше.