Комп'ютерна Академія IT Step - повноцінна IT-освіта для дорослих і дітей. Ми навчаємо з 1999 року. Авторські методики, викладачі-практики, 100% практичних занять.

Ви використовуєте застарілий браузер!

Ваш браузер Internet Explorer, на жаль, є застарілим. Ця версія браузеру не підтримує багато сучасних технологій, тому деякі функції сайту можуть працювати з помилками. Рекомендуємо переглядати сайт за допомогою актуальних версій браузерів Google Chrome, Safari, Mozilla Firefox, Opera, Microsoft Edge

ШАГ логотип

Що таке об'єктно-орієнтоване програмування: світ і невеликі чоловічки

IT STEP Academy

Програмування

18.01.2023

1118 переглядів

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

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

Одна з парадигм — об'єктно-орієнтоване програмування. У статті розповімо про головні її принципи. Це складна тема, тому заглиблюватися в код ми не будемо, а розглянемо на прикладах.

Що таке процедурне програмування

Починати варто з витоків сучасного програмування — процедурної парадигми. Наступні правила виникли як виклик, щоб розв'язати проблеми цієї парадигми. Розглянемо на прикладі.

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

У процедурному програмуванні роблять прості послідовності дій. Наприклад, людині потрібно вранці піти на роботу. Для цього слідує алгоритму: прокинутися, поснідати, одягнутися, піти на роботу. Для процедурної парадигми це — завершена програма.

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

Якби світ писали через правила процедурної парадигми, чоловічки б пішли в різні боки. Програма розвалилася б.

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

Для складних програм процедурне програмування не підходить. Якщо залишити парадигму, доведеться викручуватися:

  • Або писати довгий код. Тоді наступні розробники будуть довго розбиратися і читати рядки. Простіше написати нову програму.

  • Або викидати програму і писати нову. Витрачається купа часу і сил розробників, щоб переписати ті самі властивості: руки, ноги, голова. А до них додати нові - дії чоловічків.

Щоб розв'язувати складні задачі, програмісти домовилися і придумали для них нові стандарти. Назвали правила об'єктно-орієнтованим програмуванням.

Що таке ООП

Світ складається з об'єктів: людина, котик, комп'ютерна мишка або плита на кухні. У людини є все для існування — руки, ноги, органи тощо. Комп'ютерна мишка теж має все, щоб працювати: дріт або бездротовий датчик, корпус, лампочки, кнопки для кліка. Усі об'єкти складаються з таких деталей - набору даних для нормальної роботи.

ООП — це теж світ, але в програмуванні. Він складається з об'єктів, а ті — зі своїх детальок.

Повернемося до прикладу з чоловічками. У кожного є схожий набір параметрів-генів. Ці параметри — перший об'єкт. Наприклад, будова тіла.

Також усі люди можуть виконувати однотипні дії — ходити, бігати, плавати тощо. Ці параметри належать до першого об'єкта. Такий собі, стандартний чоловічок.

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

Ходити і стрибати — функції. Це дії, які може виконувати чоловічок. Якби ми писали програму, то функція Чоловічок.Ходити — це процедурна програма. Один параметр і одна дія.

А тепер додамо інші об'єкти. Наприклад, чоловічки з різних континентів: Африка, Азія і Європа. У них схожий набір параметрів (чоловічок). Але є і свої — колір шкіри, зріст, вага, колір волосся, тембр мови, вік тощо.

За правилами процедурного програмування ми б склали всі параметри в одну коробку — програма готова. А для нового чоловічка раз за разом скопіпастили змінні та функції. Уявіть, скільки коду!

За принципами ООП загальні характеристики складаються по коробках — об'єктах. А ті взаємодіють між собою. Наприклад, коробка чоловічків з Європи візьме загальні характеристики з однієї коробки, додавши свої.

Як бачимо, коробки з параметрами чоловічків з'єднуються і між собою. У реальному житті так виходять змішані раси: метиси, мулати та інші. Нічого не писали заново, а просто змішали готові коробочки — об'єкти.

Так у світі можна поєднувати багато речей. Наприклад, у тварин є багато функцій, якими користуються люди: ходьба, біг, стрибки. Для овочів і фруктів своя програма на ООП. А для комп'ютерних мишок і клавіатур — своя. Усе взаємопов'язане і знаходиться у своїх коробочках.

Головні принципи ООП

Те, як з'єднуються об'єкти в ООП, визначає чотири правила: інкапсуляція, абстракція, успадкування і поліморфізм. Без них в об'єктно-орієнтованому програмуванні робити нічого.

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

Абстракція ООП — у кожного об'єкта є внутрішній інтерфейс. Уявімо, що нам потрібно внести в програму всіх співробітників компанії. 

  • Що важливо для людини, як живої істоти: зріст, вага, органи, кровоносні судини. 

  • А що важливо для роботодавця: посада, вік, сімейний стан, заробітна плата.

Другі характеристики важливіші для роботодавця. Вони й будуть в об'єкті «Співробітник компанії».

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

Тому абстракція — самостійний інтерфейс. Нам не важливо, що всередині нього. Важливіше те, що нам дають правильні змінні та функції: роботодавцю — свої. А тренеру спортивної команди — свої.

Успадкування — здатність копіювати змінні та функції з інших об'єктів. Приклад із чоловічками — родове дерево.

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

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

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

Так можна заздалегідь продумувати зв'язок між модулями. Візьмемо для прикладу сервіс розсилок в інтернет-магазині. Це набір об'єктів із товарів і покупців. І є набір методів — придуманих програмістом дій у розсилці.

  • Наприклад, для покупок метод .Видалити — попередити покупця, а після відправити в архів.

  • А для користувача метод .Видалити — відписатись від розсилки і видалити акаунт.

Метод може працювати в різних об'єктах по-різному. Але програміст про це знає, тому довіряє методу .Видалити, і не вигадує синоніми.

Плюси та мінуси ООП

Об'єктно-орієнтоване програмування має багато плюсів. Тому підхід використовується майже у всіх сучасних мовах програмування. 

Ось неповний перелік мов програмування, у яких підтримуються принципи ООП: Python, C++, Ruby, C#, JavaScript, Objective-C. А, наприклад, Java — це чиста об'єктно-орієнтована мова.

  • Код просто читати. Пам'ятаєте структуру програми в процедурному програмуванні: дерево з рядків коду, де додати елемент — переписати частину дерева і додати коріння. В ООП все розбито на об'єкти й одразу зрозуміло — з чого він складається, і що з нього беруть інші об'єкти.

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

  • Складні програми виглядають і пишуться простіше. На початку статті як приклад комплексної програми ми наводили наш світ. ООП розбиває світ на маленькі блоки - їх легко написати. А якщо потрібно — детально заглибитися в конкретний об'єкт.

  • Програми пишуться єдиною мовою. Між програмістами немає «мовного бар'єру»: роботу першого легко прочитає другий. Не копаючись у дереві з купою коренів, а пройдеться від об'єкта до об'єкта. Це як читати книжку: сторінка за сторінкою.

Без мінусів ООП не залишився:

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

  • Потрібно більше пам'яті на обслуговування коду. Об'єкти ООП складаються з методів, змінних, внутрішніх інтерфейсів. Структури займають більше пам'яті, ніж у процедурному програмуванні. Але зараз це менш важливо. У всіх вдома комп'ютери або ноутбуки з процесорами від 4 ядер, стерпною оперативною пам'яттю і відеокартами.

 

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



Автор:

IT STEP Academy

Редакція IT STEP Academy

Вебінар «Як знайти першу роботу в ІТ» від Baza.IT

22 березня Baza.IT провела для студентів ХТУ “IT STEP” вебінар на тему «Як знайти першу роботу в ІТ».    Вчора наші партнери Baza.IT провели для студентів Харківського ІТ-університету “IT STEP” вебінар на тему «Як знайти першу роботу в ІТ». Досвідчений спікер,Вікторія Наливайко,CEO&Co-Founder BazaIT.com, Founder of reteam, Co-Founder of CareerPartner надала рекомендації та поділилася досвідом щодо можливих стратегій пошуку роботу як початківцям, так і студентам з досвідом.    Вебінар розпочався з питання, яке хвилює багатьох початківців в ІТ: «Чи готові компанії зараз наймати м

ШАГ логотип

Що таке CSS і для чого потрібен веб-розробнику

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

Написати HTML-розмітку документа — це лише невеличка частина щоденних завдань веб-розробника в конкретному проекті. Якщо ви знаєте, що таке HTML, які теги використовуються в розмітці і як правильно писати документ — переходьте до наступного етапу.  В статті розповімо, що таке CSS з нуля: як влаштований його код і як прописати стилі в дусі гуру-розробника, а не новачка після безкоштовних інтенсивів. Що таке CSS Кожен HTML-документ має базові параметри для тегів. Наприклад, розташування параграфів для тега [p], точки для ненумерованих списків і ліні

ШАГ логотип

Грант для студентів Харківського технологічного університету «IT STEP» (соціальна програма Scholarship)

Шановні студенти Харківського технологічного університету «IT STEP», ми раді повідомити вам про соціальну програму Scholarship, яка допоможе молодим українцям отримати безкоштовне навчання українських ВНЗ.

Шановні студенти Харківського технологічного університету «IT STEP», ми раді повідомити вам про соціальну програму Scholarship, яка допоможе молодим українцям отримати безкоштовне навчання українських ВНЗ.   В цей складний час для України, коли ми всі зіткнулися з викликами військового стану, ми повинні об'єднатися і зробити все можливе для побудови гідного майбутнього нашої держави. Scholarship вважає, що надання можливості молодим українцям отримати безкоштовне навчання є одним зі способів підтримки нашої молоді та розвитку нашої країни.   Sch

ШАГ логотип

Освіта для дорослих

Як знайти мотивацію вчитися, якщо вона пропала при навчанні

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

Часто люди загоряються ідеями: навчитися програмувати, взяти клієнта на фрілансі або перейти з офісу на віддалену роботу. Це чудове і виправдане бажання: хочеться побільше грошей, визнання і самоповаги.  Але на кожному етапі потрібно докладати зусиль: написати список завдань, пройти курс або самому шукати клієнтів. Це тернистий шлях. Згодом розумієш, що завдання дається не так просто. Стає менш цікаво. А ще курс не потягнути, часу немає. А де шукати першого клієнта? У цей час мотивація на навчання або роботу вирішила пограти в хованки. Н

ШАГ логотип

IT STEP SCHOOL

Встигніть забронювати місце для своєї дитини на новий навчальний рік у школі майбутнього - IT STEP School для 1-11 класів.

Детальніше