Перейти к основному содержимому

Основы ООП

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

Когда эффективно?

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

За счет чего эффективно?

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

Основные принципы ООП

  1. Инкапсуляция: скрытие реализации внутри класса.

    • Позволяет скрыть детали реализации и предоставить интерфейс для взаимодействия с объектом, обеспечивая безопасность и упрощая использование объекта другими частями программы.
    • Пример: Класс Animal содержит приватную переменную weight и публичный метод feed(). Переменная weight скрыта от прямого доступа извне класса, предотвращая непреднамеренное изменение их значений. Вместо этого доступ к ним осуществляется через методы класса, обеспечивая контроль доступа к данным.
  2. Наследование: создание новых классов на основе существующих.

    • Подклассы наследуют свойства и методы родительского класса, что позволяет повторно использовать код и упростить разработку. Подклассы могут расширять функциональность родительского класса, добавляя новые методы или изменяя существующие.
    • Пример: Класс Mammal является подклассом Animal, наследуя его свойства и методы, такие как move() или eat(). Класс Mammal может добавлять собственные методы, например, milkfeeding(), расширяя функциональность базового класса Animal.
  3. Полиморфизм: способность объектов разных типов использовать общий интерфейс для выполнения различных действий.

    • Проявляется в том, что разные объекты могут реагировать на одну и ту же команду по-разному в зависимости от их типа.
    • Пример: Классы Dog и Cat имеют метод sound(). При вызове метода sound() для объекта класса Dog, он издаёт лай, а для объекта класса Cat - мяукание.
  4. Абстракция: позволяет отделить концепцию от её реализации.

    • Уровень абстракции скрывает сложные детали реализации и предоставляет простой интерфейс для использования объекта, помогая сосредоточиться на важных аспектах объекта, игнорируя незначительные детали.
    • Пример: Класс 4legs абстрактный и имеет метод без реализации walk(). Объект такого класса невозможно создать, но можно наследовать потомков. Класс Dog наследует 4legs и реализует метод walk().

Зачем ООП аналитику?

Поможет структурировать требования в соответствии с требованиями бизнеса:

  • Выделить объекты
  • Определить их атрибуты
  • Методы и взаимосвязи между ними

Пример: Нужно описать систему управления библиотекой. Можно представить систему как совокупность объектов, таких как "книга", "автор" и "читатель", каждый из которых имеет свои атрибуты и методы.

Также понимание ООП поможет:

  • Спроектировать архитектуру приложения: используя принципы наследования, инкапсуляции и полиморфизма разделить функционал на компоненты.
  • В определении общих интерфейсов и абстракций, которые позволят разным частям системы взаимодействовать между собой.

Существуют объектно-ориентированные методы системного анализа (ООМСА). Это подход к анализу, проектированию и моделированию систем, основанный на принципах ООП. Основные методы:

  • Моделирования объектов и классов
  • Анализа взаимодействия объектов
  • Проектирования классов и иерархий
  • Анализа наследования и агрегации

Подборка материалов

  1. Основы ООП
  2. Что такое объекты и классы с картинками
  3. Структура ООП
  4. ООП: суть и задачи
  5. ООП в картинках
  6. Как ООП помогает разработчикам
  7. Зачем нужно понимать ООП
  8. Об ООП на простых примерах
  9. ООП на Python: как избежать путаницы в коде
  10. Цикл статей про ООП от Skillbox
  11. Языки в ООП
  12. Объектно-ориентированный анализ процессов
  13. Объектно-ориентированный анализ, объектно-ориентированное проектирование

Видео

  1. ООП за 10 минут
  2. Курс: ООП Python
  3. ООП цикл видео
  4. [ООП vs Функциональное программирование](https://www.youtube.com