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

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

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

ШАГ логотип

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

ITSTEP Academy

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

18.01.2023

13838 переглядів

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Що таке ООП

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



Автор:

Редакція Академії ITSTEP

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

Дизайн

Пробний урок

Скільки заробляє графічний дизайнер в Україні у 2025 році

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

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

ШАГ логотип

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

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

Як стати успішним DevOps-спеціалістом: покроковий гайд для початківців

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

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

ШАГ логотип

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

Дизайн

AI інструменти для дизайнерів: гід по ШІ-сервісах для графіки, UI/UX, відео та 3D

AI-інструменти роблять дизайн простим: графіка, макети сайтів, відео та 3D. Навчання, практичні поради та реальні приклади допоможуть швидко отримати перші результати

Сьогодні багато хто чує про “генеративний ШІ” і думає, що це щось складне, лише для програмістів. Насправді ж ці інструменти вже зараз можуть стати у пригоді школярам від 15 років, студентам, новачкам в ІТ та навіть тим, хто хоче кардинально змінити професію. Наприклад, якщо підліток мріє малювати комікси, ШІ допоможе швидко створити ескізи персонажів. Студент, який пробує себе у дизайні, може згенерувати стильні референси для першого портфоліо. Людина, що вирішила перекваліфікуватися з іншої сфери, здатна за допомогою ШІ швидко навчитися р

ШАГ логотип

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

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

Дизайн

Розробка програмного забезпечення

Зарплатний компас веб-дизайнера 2025: від Junior до Art Director

Яку зарплату отримують веб-дизайнери в Україні у 2025? Хто платить більше — українські компанії чи фриланс-клієнти? І як швидше перейти з Junior у Senior? Усе — в нашому гіді: цифри, поради, тренди та кар’єрні інсайти для майбутніх дизайнерів

Професія веб-дизайнера залишається однією з найбільш затребуваних у сфері інформаційних технологій навіть у 2025 році. І це зовсім не дивно: інтернет-присутність — більше не розкіш, а необхідність для бізнесів будь-якого масштабу. Веб-сайти, інтерфейси, мобільні застосунки потребують не лише функціональності, але й візуальної привабливості, зручності для користувача, адаптивності — саме за це відповідає веб-дизайнер. За останні роки роль дизайнера значно трансформувалась. Сьогодні це не просто "художник із Фотошопом", а фахівець, який роз�

ШАГ логотип

ІТ для дітей

Старт занять з 18 жовтня. Запишіть дитину на сучасне ІТ-навчання!

Детальніше

Цей сайт використовує Cookies

Політика конфіденційності