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

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

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

ШАГ логотип

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

ITSTEP Academy

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

18.01.2023

11119 просмотров

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Что такое ООП

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



АВТОР:

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

Дизайн

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

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

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

ШАГ логотип

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

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

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

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

ШАГ логотип

Soft-skills

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

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

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

ШАГ логотип

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

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

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

Чего боятся IT-специалисты: 8 ключевых страхов в работе, которые преследуют разработчиков и инженеров IT-специалисты работают в быстро меняющейся среде, где высокая ответственность, жёсткие сроки и постоянный поток новых технологий создают дополнительное давление. Даже опытные разработчики и инженеры сталкиваются с тревогами, которые могут влиять на их продуктивность, мотивацию и эмоциональное состояние. Страх — это естественная реакция человека на неопределённость и возможные риски. В IT-индустрии он может проявляться в различных фор

ШАГ логотип

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

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