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

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

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

ШАГ логотип

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

ITSTEP Academy

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

18.01.2023

11158 переглядів

1. Що таке процедурне програмування2. Що таке ООП3. Головні принципи ООП4. Плюси та мінуси ООП

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Що таке ООП

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



Автор:

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

Дизайн

Основи графічного дизайну: 10 ключових принципів

10 головних принципів графічного дизайну, які допоможуть вам створювати стильні, зручні та ефективні візуальні рішення для вебу, друку та брендингу | Блог ITSTEP Academy

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

ШАГ логотип

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

Яка зарплата у QA Engineer в Україні | Скільки заробляє тестувальник

Середні зарплати тестувальників в Україні: порівняння Manual і Automation QA, огляд доходів у великих IT-компаніях і поради, як збільшити свою зарплату | Блог ITSTEP Academy

Зарплата тестувальника в Україні: скільки можна заробити? Тестувальник програмного забезпечення (QA-інженер) - це фахівець, який відповідає за перевірку роботи додатків, пошук помилок і контроль якості продукту. Його основна мета - забезпечити стабільну та безпечну роботу програмних рішень перед їхнім випуском. Професія тестувальника стала особливо популярною завдяки низькому порогу входу. На відміну від розробників, які повинні досконально знати мови програмування, тестувальники можуть почати кар'єру з базового розуміння принципі�

ШАГ логотип

Soft-skills

Синдром самозванця в IT - прокачай впевненість для успішної кар'єри

Дізнайтеся, як подолати синдром самозванця, розвинути впевненість і успішно будувати кар'єру в IT з нашим покроковим посібником ▶ Детальніше

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

ШАГ логотип

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

Головні страхи в роботі IT-спеціалістів і способи їх подолання

Як IT-спеціалісти справляються зі страхами в роботі: провал на співбесіді, дедлайни, ретроспективи? Дізнайтеся, як їх подолати та впевнено розвиватися в IT | Блог ITSTEP Київ

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

ШАГ логотип

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

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