Серед розробників об’єктно-орієнтоване програмування привернуло значну кількість прихильників. Популярна комп'ютерна мова Python також дотримується об'єктно-орієнтованої парадигми.
Він стосується визначення об’єктів і класів у Python, що є основою для принципів ООП. У цьому підручнику з «об’єктно-орієнтованого програмування на Python» ви дізнаєтеся, як оголошувати класи Python, створювати з них об’єкти та використовувати чотири техніки ООП.
Отже, перш за все.
Що таке об'єктно-орієнтоване програмування?
Основною метою об’єктно-орієнтованого програмування (ООП) є створення «об’єктів». Сукупність взаємопов’язаних змінних і функцій становить об’єкт.
Ці змінні часто називають атрибутами об'єкта, а його поведінку часто називають його функціями. Ці елементи надають програмі більш ефективну та зрозумілу структуру. Автомобіль є прикладом предмета.
Якби автомобіль був об’єктом, його атрибути включали б такі речі, як колір, модель, ціна, марка тощо. Крім того, він би прискорювався, сповільнювався та перемикав передачі.
Інша ілюстрація: якщо ми думаємо про собаку як про предмет, то деякі з її характеристик можуть бути кольором, породою, ім’ям, вагою тощо. І вона буде рухатися, гавкати, гратися тощо.
Об’єктно-орієнтоване програмування добре відоме, оскільки воно включає в програмування такі концепції реального світу, як об’єкти, приховування, успадкування тощо. Оскільки це дуже схоже на реальні обставини, візуалізація стає простішою.
Концепції об'єктно-орієнтованого програмування
Класи та об’єкти в Python
Як і всі інші об’єктно-орієнтовані мови, Python дозволяє створювати класи для створення об’єктів. Найпопулярніші типи даних у Python, включаючи рядки, списки, словники та інші об’єкти, є вбудованими класами.
Клас — це група пов’язаних методів і змінних екземплярів, які визначають певний тип об’єкта. Клас можна розглядати як модель або шаблон для об'єкта. Змінні, що утворюють клас, відомі як атрибути.
Об’єкт — це член класу, який має визначений набір атрибутів. Через це за допомогою одного класу можна створити будь-яку кількість об’єктів.
Класи Python визначаються за допомогою слова class, після якого йде назва класу та двокрапка. Ілюстрацією класу папуг може бути:
Тут ми оголошуємо порожній клас Parrot за допомогою ключового слова class. Ми створюємо екземпляри з класів. Екземпляр — це окремий об’єкт, створений із певного класу. 'pass' часто використовується як заміна коду, від реалізації якого ми можемо відмовитися на даний момент. Ми можемо виконати код Python, не викликаючи помилки, використовуючи ключове слово “pass”.
Результатом створення екземпляра класу є об’єкт (примірник). Під час створення класу визначається лише опис об’єкта. У результаті сховище чи оперативна пам’ять не виділяються.
Прикладом об’єкта класу parrot є:
У цьому випадку Obj є об’єктом класу Parrot.
Припустимо, ми знаємо особливості папуг. Зараз ми продемонструємо, як створити клас папуги та його об’єкти.
Спеціальний метод ( __init__ )
Метод під назвою init визначає атрибути, які повинен мати кожен об’єкт Parrot (). Коли формується новий об’єкт Parrot, функція __init__ створює початковий стан об’єкта, призначаючи значення, які ми надаємо у властивостях об’єкта.
Отже, кожен новий екземпляр класу ініціалізується за допомогою __init__(). Хоча __init__() може приймати будь-яку кількість параметрів, self завжди є першим параметром.
Посилання на екземпляр активного класу включено в самостійний аргумент. Параметр self, який посилається на адресу поточного об’єкта класу та дає нам доступ до даних його (об’єкта) змінних, означає це.
Приклад 1
Ми створили клас під назвою Parrot у наведеному вище коді. Далі визначаються властивості. Ознаки речі - це її властивості. У функції __init__ класу вказуються ці характеристики.
Коли об'єкт формується, спочатку викликається метод ініціалізації. Потім створюються екземпляри класу Parrot. Blaze і Wonda в цьому випадку є посиланнями (значеннями) на наші нові об’єкти. __class .species дозволяє отримати доступ до атрибута class.
Кожен екземпляр класу має однакові характеристики. Доступ до характеристик екземпляра також можна отримати за допомогою blaze.name і blaze.age. Проте всі екземпляри класу мають унікальні атрибути екземпляра.
Приклад 2
Методи
Функції, визначені всередині тіла класу, називаються методами. Вони використовуються, щоб визначити, як буде поводитися елемент.
Два методи, sing() і dance, визначені у вищезгаданій програмі (). Оскільки вони викликаються на об’єкті екземпляра, наприклад, flame, їх називають методами екземпляра.
Основи концепції OOPS
Чотири основні ідеї об'єктно-орієнтованого програмування:
- Спадкування
- Інкапсуляція
- Поліморфізм
- Абстракція
Спадкування
Люди часто говорять новонародженим, що вони мають риси обличчя, які нагадують їхні батьки, або що вони успадкували певні риси від своїх батьків.
Цілком можливо, що ви також помітили, що у вас є кілька спільних рис із вашими батьками. Ситуація в реальному світі також досить схожа на спадщину.
Однак у цьому випадку характеристики «батьківських класів» передаються «дочірнім класам». У цьому контексті ці аспекти називаються «властивості» та «методи».
Клас може отримати свої методи та атрибути від іншого класу за допомогою техніки, відомої як успадкування. Успадкування — це процес отримання дочірнім класом властивостей батьківського класу.
Приклад:
Батьківський клас Human успадковується дочірнім класом Boy у прикладі вище. Оскільки Boy успадковує клас Human, ми можемо отримати доступ до всіх його методів і атрибутів, коли створюємо екземпляр класу Boy.
У класі Boy також визначено метод під назвою schoolName. Об’єкт батьківського класу не може отримати доступ до методу schoolName. Однак метод schoolName можна викликати шляхом створення об’єкта дочірнього класу (Boy).
Інкапсуляція
Надання кожній змінній у програмі глобального доступу не є мудрим кроком під час роботи з класами та обробки конфіденційних даних.
Не надаючи програмі повного доступу до будь-якої з цих змінних, інкапсуляція забезпечує механізм для отримання необхідних змінних.
Методи, визначені явно для цієї мети, можна використовувати для оновлення, редагування або видалення даних із змінних. Цей спосіб програмування має переваги підвищеної безпеки та контролю над введенням даних.
Подивіться, як швидко можна отримати доступ до змінних, у демонстрації нижче:
Поліморфізм
Припустімо, ви використовуєте свій телефон для перегляду Стрічки Instagram. Коли вам захотілося послухати музику, ви зайшли в Spotify і почали грати свою улюблену пісню.
Через деякий час вам подзвонили, тож ви призупинили всі дії, які ви робили у фоновому режимі, щоб відповісти. Ваш друг подзвонив і попросив надіслати йому текстове повідомлення на номер телефону певної людини.
Отже, ви надіслали йому номер телефону через SMS і продовжили виконувати свої завдання. Ви щось підхопили? Лише з одним пристроєм — вашим мобільним телефоном — ви можете переглядати канали, слухати музику, приймати та здійснювати телефонні дзвінки та надсилати повідомлення.
Тому поліморфізм можна порівняти з цим. Полі означає численні, а морф позначає різні форми. Тому поліморфізм у цілому стосується чогось із різними формами.
Або «щось», що, залежно від обставин, може демонструвати різну поведінку. В OOPS поліморфізм описує функції з однаковими іменами, але різною поведінкою. Як альтернатива, інша сигнатура функції з тим самим іменем функції (параметри, передані функції).
Приклад:
Тут ми можемо використовувати змінну тварину для ітерації між об’єктами Зебра та Кролик, використовуючи їхні відповідні методи екземплярів. У результаті поведінка (color() & eats()) і зебри, і кролика представлена тут однією змінною під назвою тварина. Тому він дотримується правил поліморфізму.
Абстракція
Швидше за все, ви використовуєте ноутбук, телефон або планшет для читання цього вмісту. Читаючи його, ви також, ймовірно, робите нотатки, підкреслюєте ключові уривки та, можливо, зберігаєте деяку інформацію у своїх особистих файлах.
Все, що ви бачите, читаючи це, — це «екран» із даними, які вам відображаються. Ви просто бачите клавіші клавіатури під час друку, тож вам не потрібно турбуватися про внутрішні тонкощі, наприклад про те, як натискання клавіші може спричинити появу цього слова на екрані.
Крім того, як натискання кнопки на екрані може запустити нову вкладку.
Тому все, що ми можемо спостерігати в цій ситуації, є абстрактним. Ми можемо бачити лише результат, який він створює, а не внутрішні тонкощі (які для нас насправді важливі).
Подібно до цього, абстракція лише розкриває функції, якими володіє все, приховуючи будь-які реалізації чи внутрішні деталі.
Основна мета абстракції полягає в тому, щоб приховати фонову інформацію та будь-яку реалізацію сторонніх даних, щоб люди бачили лише те, що їм потрібно бачити. Це допомагає керувати складністю коду.
Приклад:
Тут присутній абстрактний клас, пов’язаний з транспортними засобами. Оскільки він успадковує абстрактний клас ABC, він є абстрактним. Оскільки абстрактні методи не визначені або залишаються порожніми, клас Vehicle має абстрактний метод під назвою no of wheels, який не має визначення.
Вони передбачають класи, які успадковують абстрактні класи, щоб забезпечити реалізацію методу.
Переваги концепцій OOPS
- Завдяки інкапсуляції досягається висока безпека та конфіденційність даних.
- Гнучкість у наявності багатьох поліморфних версій одного класу.
- Високий рівень складності коду був знижений завдяки абстракції.
- Замість перегляду сотень рядків коду, щоб знайти одну проблему, модульність програмування робить налагодження простим.
- Повторне використання коду спричинене успадкуванням дочірнім класом властивостей батьківського класу.
- Ефективне вирішення проблем можливе, оскільки ми створюємо класи, які виконують необхідні дії для кожної міні-проблеми. Наступну проблему можна вирішити ще швидше, оскільки ми можемо повторно використовувати ці класи.
Висновок
На завершення ми дізналися про ідеї OOPS у Python, найпопулярнішій парадигмі програмування на даний момент.
Прочитавши це, ви, мабуть, зрозуміли, що парадигма OOPS повністю стосується ідеї класів та об’єктів. і концепції OOPS, такі як інкапсуляція, поліморфізм, успадкування та абстракція.
залишити коментар