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

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

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

Black Friday

знижки на курси до 50%

09

дн

00

год

07

хв

ШАГ логотип

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

ITSTEP Academy

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

18.01.2023

8277 переглядів

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Що таке ООП

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



Автор:

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

Дизайн

Майстер клас

3D візуалізатор - професія майбутнього

Сучасний світ став візуальним, а тривимірна візуалізація – невід'ємною частиною нашої епохи. Пам'ятаєте останній раз, коли ви бачили реалістичне зображення будівлі, інтер'єру або продукту до його створення? Це була 3D візуалізація, і вона грає велику роль у нашому житті. 3D візуалізатор – це той, хто створює цю магію.

Сучасний світ став візуальним, а тривимірна візуалізація – невід'ємною частиною нашої епохи. Пам'ятаєте останній раз, коли ви бачили реалістичне зображення будівлі, інтер'єру або продукту до його створення? Це була 3D візуалізація, і вона грає велику роль у нашому житті. 3D візуалізатор – це той, хто створює цю магію. Мистецтво 3D візуалізації проникає у багато сфер нашого життя. Від архітектури і дизайну інтер'єру до реклами та промислового проектування – скрізь можна знайти сліди роботи 3D візуалізаторів. Ми розглянемо, які завдання

ШАГ логотип

Soft-skills

Презентація

Як знайти роботу junior спеціалісту без досвіду роботи

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

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

ШАГ логотип

Soft-skills

10 кращих технік тайм-менеджменту для айтішника

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

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

ШАГ логотип

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

SMART - цілі: найкращий помічник у плануванні для програмістів

Для успіху у програмуванні потрібні не тільки технічні навички, а й уміння ефективно керувати своїми завданнями та цілями. У цій статті ми поринемо у світ SMART-цілей та розглянемо, як програмісти можуть використовувати цей підхід для підвищення продуктивності та професійного розвитку.

Для успіху у програмуванні потрібні не тільки технічні навички, а й уміння ефективно керувати своїми завданнями та цілями. У цій статті ми поринемо у світ SMART-цілей та розглянемо, як програмісти можуть використовувати цей підхід для підвищення продуктивності та професійного розвитку. SMART - це акронім, який описує основні характеристики ефективної мети: Specific (конкретна), Measurable (вимірна), Achievable (досяжна), Relevant (пов'язана з поточними завданнями та цілями) та Time-bound (обмежена за часом). Кожен із цих аспектів відіграє важливу роль у створенні ціле

ШАГ логотип

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

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