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

Ваш браузер устарел!

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

ШАГ логотип

Что такое объектно-ориентированное программирование: мир и небольшие человечки

ITSTEP Academy

Программирование

18.01.2023

11741 просмотр

В программировании есть несколько парадигм — это набор правил и приёмов, как писать код. Вроде этикета за столом, в общественном месте. Или стиля художников конкретной эпохи: как делать мазки, какими красками пользоваться и какие объекты предпочтительно рисовать. Программисты договорились писать в одних правилах, чтобы понимать друг друга и создавать рабочие вещи.

Как и стандарты художников, парадигмы со временем меняются. Раньше единственно верным было процедурное программирование. Сейчас всё зависит от задачи и умений программиста сделать просто и понятно.

Одна из парадигм — объектно-ориентированное программирование. В статье расскажем о главных её принципах. Это сложная тема, поэтому углубляться в код мы не будем, а рассмотрим на примерах.

Что такое процедурное программирование

Начинать стоит с истоков современного программирования — процедурной парадигмы. Следующие правила — вызов, чтобы решить проблемы этой парадигмы. Рассмотрим на примере.

Самое простое сравнение — человек. Все мы — это набор клеток, из которых состоит тело: руки, ноги, органы чувств, кровеносные сосуды, мозг. Мы выполняем разнообразные действия: ходим, бегаем, смеёмся, спим и т.д.

В процедурном программировании делают простые последовательности действий. Например, человеку нужно утром пойти на работу. Для этого следует алгоритму: проснуться, позавтракать, одеться, пойти на работу. Для процедурной парадигмы это — завершённая программа.

А теперь расширим кругозор. Представим, что мир — это большая программа. И в ней живут тысячи таких человечков. У каждого свой набор клеток и генов. Они похожи по общим признакам: геном, части тела, строение мозга. Но занимаются человечки разными вещами: пока один пошёл на работу, другой — сидит за компьютером. Третий — читает книгу. Миллиарды человечков делают свои дела.

Если бы мир писали через правила процедурной парадигмы, человечки бы пошли в разные стороны. Программа развалилась.

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

Для сложных программ процедурное программирование не подходит. Если оставить парадигму, придётся выкручиваться:

  • Либо писать длинный код. Тогда следующие разработчики будут долго разбираться и читать строки. Проще написать новую программу.

  • Либо выкидывать программу и писать новую. Тратится куча времени и сил разработчиков, чтобы переписать те же свойства: руки, ноги, голова. А к ним добавить новые — действия человечков.

Чтобы решать сложные задачи, программисты договорились и придумали для этого новые стандарты. Назвали правила объектно-ориентированным программированием.

Что такое ООП

Мир состоит из объектов: человек, котик, компьютерная мышка или плита на кухне. У человека есть всё для существования — руки, ноги, органы и т.д. Компьютерная мышка тоже имеет всё, чтобы работать: провод или беспроводной датчик, корпус, лампочки, кнопки для клика. Все объекты состоят из таких деталей — набора данных для нормальной работы.

ООП — это тоже мир, но в программировании. Он состоит из объектов, а те — из своих деталек.

Вернёмся к примеру с человечками. У каждого есть похожий набор параметров-генов. Эти параметры — первый объект. Например, строение тела.

Также, все люди могут выполнять однотипные действия — ходить, бегать, плавать и т.д. Эти параметры относятся к первому объекту. Такой себе, стандартный человечек.

Если говорить языком ООП, то руки и ноги — переменные. Это конкретный набор данных, который можно подставить для любого человечка.

Ходить и прыгать — функции. Это действия, которые может выполнять человечек. Если бы мы писали программу, то функция Человечек. Ходить — это процедурная программа. Один параметр и одно действие.

А теперь добавим другие объекты. Например, человечки из разных континентов: Африка, Азия и Европа. У них похожий набор параметров (человечек). Но есть и свои — цвет кожи, рост, вес, цвет волос, тембр речи, возраст и т.д.

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

По принципам ООП общие характеристики складываются по коробкам — объектам. А те взаимодействуют между собой. Например, коробка человечков из Европы возьмёт общие характеристики из одной коробки, добавив свои.

Как видим, коробки с параметрами человечков соединяются и между собой. В реальной жизни так получаются смешанные расы: метисы, мулаты и другие. Ничего не писали заново, а просто смешали готовые коробочки — объекты.

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

Главные принципы ООП

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

Инкапсуляция — объект независим от остальных. Например, если убрать коробку с главными характеристиками человечков, то другие не перестанут работать. Они возьмут эти же характеристики, но оставят внутри своей коробочки.

Абстракция ООП — у каждого объекта есть внутренний интерфейс. Представим, что нам нужно внести в программу всех сотрудников компании. 

  • Что важно для человека, как живого существа: рост, вес, органы, кровеносные сосуды. 

  • А что важно для работодателя: должность, возраст, семейное положение, заработная плата.

Вторые характеристики более важные для работодателя. Они и будут в объекте «Сотрудник компании».

Если бы мы создавали объект «Спортсмен», то для него важны другие переменные и функции: рост, вес, телосложение, возраст. Параметры для работодателя ему вряд ли пригодятся. Поэтому интерфейс их не использует, даже если данные внесли по какой-то причине.

Поэтому абстракция — самостоятельный интерфейс. Нам не важно, что внутри него. Важнее то, что нам дают правильные переменные и функции: работодателю — свои. А тренеру спортивной команды — свои.

Наследование — способность копировать переменные и функции с других объектов. Пример с человечками — родовое дерево.

Каждый человек — набор генов прошлых поколений. От мамы передались голубые глаза. От папы — родинка на плече. А от дедушки — высокий рост. Это и есть наследование: взять из объектов несколько переменных и функций. А из них создать новый.

С наследованием в программировании можно не копипастить код, а создать один вариант, который понадобится для всех объектов. После объекты подключить и всё заработает. Или переиспользовать код в будущем: для новых человечков, как в примере.

Полиморфизм — язык используется без «синонимов». Например, для всех человечков действие «ходить» — это одинаковый метод. Он звучит только так. Если мы для одного человечка напишем «ходить», а для другого «карабкаться» — это разные методы.

Так можно заранее продумывать связь между модулями. Возьмём для примера сервис рассылок в интернет-магазине. Это набор объектов из товаров и покупателей. И есть набор методов — придуманных программистом действий в рассылке.

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

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

Метод может работать в разных объектах по-разному. Но программист об этом знает, поэтому доверяет методу .Удалить, и не придумывает синонимы.

Плюсы и минусы ООП

У объектно-ориентированного программирование много плюсов. Поэтому подход используется почти во всех современных языках программирования. 

Вот неполный перечень языков программирования, в которых поддерживаются принципы ООП: Python, C++, Ruby, C#, JavaScript, Objective-C. А, например, Java — это чистый объектно-ориентированный язык.

  1. Код просто читать. Помните структуру программы в процедурном программировании: дерево из строчек кода, где добавить элемент — переписать часть дерева и добавить корней. В ООП всё разбито на объекты и сразу понятно — из чего он состоит, и что из него берут другие объекты.

  2. Меньше копипаста. В процедурном программировании ничего необычного, если для похожего кода дважды переписывают одинаковые значения. В ООП копипаст решается принципом наследования.

  3. Сложные программы выглядят и пишутся проще. В начале статьи как пример комплексной программы мы приводили наш мир. ООП разбивает мир на маленькие блоки — их легко написать. А если нужно — подробно углубиться в конкретный объект.

  4. Программы пишутся на едином языке. Между программистами нет «языкового барьера»: работу первого легко прочитает второй. Не копаясь в дереве с кучей корней, а пройдётся от объекта к объекту. Это как читать книгу: страница за страницей.

Без минусов ООП не остался:

  1. Сложнее процедурного программирования. Нужно знать много теории: изучить строение объектов, их связь и принципы. В этой статье лишь общая информация. Если углубиться — деталей больше.

  2. Потребуется больше памяти на обслуживание кода. Объекты ООП состоят из методов, переменных, внутренних интерфейсов. Структуры занимают больше памяти, чем в процедурном программировании. Но сейчас это менее важно. У всех дома компьютеры или ноутбуки с процессорами от 4 ядер, сносной оперативной памятью и видеокартами.

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



АВТОР:

Редакция Академиии ITSTEP

Образование для взрослых

Эмоциональное выгорание на работе: что делать если не хочется работать

Почему эмоциональное выгорание стало новой нормой в эпоху онлайн-работы. Как избежать в условиях дистанционной работы: признаки, эффективные методы профилактики и психического благополучия

Причины и последствия выгорания на работе в эпоху удаленной занятости В последние годы формат труда претерпел существенные изменения. Пандемия COVID-19 ускорила массовый переход к удаленной занятости, который ранее считался преимуществом только для избранных отраслей, таких как IT. Сегодня миллионы людей по всему миру работают из дома, не выходя из собственной квартиры. Такая трансформация рынка труда создала новые вызовы - в частности, увеличение уровня стресса, потерю баланса между работой и личной жизнью и рост количества случаев эмоцио�

ШАГ логотип

Дизайн

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

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

10 основных принципов графического дизайна Графический дизайн — это искусство визуальной коммуникации, которое сочетает в себе текст, изображения, цвета и формы для передачи информации или создания определённого настроения. Он используется в различных сферах: от рекламы и веб-дизайна до упаковки продуктов и мобильных приложений. Принципы графического дизайна — это основные правила, которые помогают создавать гармоничные и эффективные визуальные композиции. Без их понимания даже самые талантливые художники и дизайнеры могут столкн�

ШАГ логотип

Программирование

Какая зарплата у QA Engineer в Украине | Cколько зарабатывает тестировщик

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

Зарплата тестировщика в Украине: сколько можно заработать? Тестировщик программного обеспечения (QA-инженер) — это специалист, который отвечает за проверку работы приложений, поиск ошибок и контроль качества продукта. Его основная цель — обеспечить стабильную и безопасную работу программных решений перед их выпуском. Профессия тестировщика стала особенно популярной благодаря низкому порогу входа. В отличие от разработчиков, которые должны досконально знать языки программирования, тестировщики могут начать карьеру с базового поним�

ШАГ логотип

Soft-skills

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

Узнайте, как преодолеть синдром самозванца, развить уверенность и успешно строить карьеру в IT с нашим пошаговым руководством ▶ Подробнее

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

ШАГ логотип

Этот сайт использует Cookies

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