Что такое объектно-ориентированное программирование (ООП)?

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

Зачем использовать объектно-ориентированное программирование?

Хотя я считаю парадигму проектирования объектной системы ключевой проблемой программирования, в целом для меня это было более чем просто. В него встроен ряд инструментов, но требовался минимальный уровень настройки, чтобы дать разработчикам представление о том, как они могут создавать свои приложения.

Лучший способ начать заключается в том, чтобы найти подходящий инструмент, который поможет вам использовать объектно-ориентированное программирование. А использование хорошего инструмента сэкономит вам сотни, если не тысячи часов времени разработки, время, которое вы, возможно, не сможете позволить себе самостоятельно, поскольку вам придется заново изучать все инструменты, которые вы будете использовать в приложении, по мере того, как вы пытаетесь. для разработки и реализации вашего приложения.

Одна из лучших особенностей дизайна стиля объектной системы заключается в том, что если проект состоит только из одного объекта, то его и нужно спроектировать.
Важный момент знать об объектно-ориентированном программировании - это тот простой факт, что объекты ведут себя динамически и комплексно. Объекты можно перемещать, перемещать по экрану, или есть только несколько способов сделать это. Каждая функция будет иметь свои собственные общие и множество различных функций в своей области действия. Лучший способ объяснить этот момент - взглянуть на язык и Object.define (или Object.hash). Существует так много разных функций, что программисту приходится писать несколько функций одновременно, чтобы перемещаться по разным экранам. Вы уже поняли основную идею.

Что такое полиморфизм?

Полиморфизм - это термин, который используется в различных условиях для описания обстоятельств, в которых что-то проявляется в нескольких формах. В информатике существует концепция, согласно которой объекты различных типов могут быть доступны с использованием одного и того же интерфейса. Этот интерфейс может быть реализован различными способами для каждого типа. Это фундаментальная идея объектно-ориентированного программирования (ООП).

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

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

  • Производный класс может определять новое поведение, переопределяя виртуальные члены в базовом классе.
  • Производный класс наследует метод ближайшего базового класса, не переопределяя его, сохраняя текущее поведение, позволяя другим производным классам изменять его.
  • Производный класс может объявлять новые невиртуальные реализации тех элементов, которые скрывают реализации базового класса.

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

class Language:
 def say_hello(self):
 raise NotImplementedError(‘Please use say_hello in the child class’)
 
class French(Language):
 def say_hello(self):
 print('bonjour')
class English(Language):
 def say_hello(self):
 print(‘good morning’)
class Italian(Language): 
 def say_hello(self):
 print(‘buongiorno’)

В приведенном выше примере мы инициализировали класс Language, который имеет общие для всех языков свойства. Однако мы хотим инициализировать несколько объектов, которые являются производными от класса Language, но имеют свои особенности. Например, мы хотим приветствовать пользователя на его родном языке, в этом нам помогает полиморфизм. Мы можем инициализировать такие классы, как французский, английский и итальянский. В зависимости от того, перед кем мы находимся, мы можем приветствовать его на разных языках с помощью функции say_hello (). Если эта функция не

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

Преимущества объектно-ориентированного программирования:

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

Недостатки объектно-ориентированного программирования:

  • Крутая кривая обучения: для некоторых людей когнитивный процесс, связанный с объектно-ориентированным программированием, неестественен, и для его адаптации может потребоваться некоторое время. Создавать программы, основанные на взаимодействии объектов, сложно. Некоторые из наиболее важных принципов программирования, такие как наследование и полиморфизм, поначалу могут быть трудными для понимания.
  • Объектно-ориентированные программы обычно больше по размеру, чем процедурные, с большим количеством строк кода.
  • Не подходит для всех типов проблем: существуют проблемы, которые хорошо поддаются стилю функционального программирования, стилю логического программирования или стилю программирования на основе процедур, и применение объектно-ориентированного программирования в таких ситуациях не приведет к созданию эффективных программ.
  • Более медленные программы: объектно-ориентированные программы обычно медленнее, чем системы, основанные на процедурах, потому что им требуется выполнение большего количества инструкций.