Основы ООП
Объектно-ориентированное программирование (ООП) — методология или стиль программирования, при котором код организуется в логически связанные объекты с четкими интерфейсами и поведением. Это помогает создавать программы, которые легко понять, изменять и масштабировать
⚪️ Когда эффективно?
Когда система содержит схожие объекты, имеет сложную структуру данных и требует модульности и расширяемости. ООП подходит для проектов, где важно переиспользование кода и управление сложностью системы.
За счет чего эффективно?
— облегчения понимания и обслуживания кода благодаря модульной структуре
— улучшения переиспользование кода и уменьшения дублирования
— увеличения гибкости системы и возможности расширения функциональности без изменения существующего кода
▫️Основные принципы ООП
😈Инкапсуляция: скрытие реализации внутри класса.
Позволяет скрыть детали реализации и предоставить интерфейс для взаимодействия с объектом ➡️ обеспечивает безопасность и упрощает использование объекта другими частями программы
⚪️ Класс Animal содержит
— приватную переменную weight
— публичный метод feed()
Переменная weight скрыта от прямого доступа извне класса ➡️ предотвращает непреднамеренное изменение их значений.
Вместо этого доступ к ним осуществляется через методы класса ➡️ есть контроль доступа к данным.
😈Наследование: создание новых классов на основе существующих.
Подклассы наследуют свойства и методы родительского класса ➡️ можно повторно использовать код и упростить разработку.
Подклассы могут расширять функциональность родительского класса, добавляя новые методы или изменяя существующие.
⚪️ Рассмотрим классы Animal и Mammal
Класс Mammal -- подкласс Animal. Т.е. можно наследовать от него его свойства и методы, такие как move() или eat().
Класс Mammal может добавлять собственные методы, например, milkfeeding(), расширяя функциональность базового класса Animal.
😈Полиморфизм: способность объектов разных типов использовать общий интерфейс для выполнения различных действий.
Проявляется в том, что разные объекты могут реагировать на одну и ту же команду по-разному в зависимости от их типа
⚪️ У нас есть классы Dog и Cat, оба имеют метод makesound()
Когда вызывается метод makesound() для объекта класса Dog, он издаёт лай, а для объекта класса Cat - мяукание
😈Абстракция: позволяет отделить концепцию от её реализации.
Уровень абстракции скрывает сложные детали реализации и предоставляет простой интерфейс для использования объекта ➡️ помогает сосредоточиться на важных аспектах объекта, игнорируя незначительные детали.
⚪️ Класс 4legs абстрактный и имеет метод без реализации walk(). Класс является абстракцией (робот или насекомое тоже может иметь 4 ноги). Объект такого класса невозможно создать.
Но можно наследовать потомков.
Dog наследует класс 4legs и реализует метод walk()
💡 Зачем ООП аналитику?
Поможет структурировать требования в соответствии с требованиями бизнеса:
— выделить объекты
— определить их атрибуты
— методы и взаимосвязи между ними
⚪️Нужно описать систему управления библиотекой.
Можно представить систему как совокупность объектов, таких как "книга", "автор" и "читатель", каждый из которых имеет свои атрибуты и методы.
*️⃣Также понимание ООП поможет:
— спроектировать архитектуру приложения: используя принципы наследования, инкапсуляции и полиморфизма разделить функционал на компоненты
— в определении общих интерфейсов и абстракций, которые позволят разным частям системы взаимодействовать между собой
*️⃣Существуют объектно-ориентированные методы системного анализа (ООМСА).
Это подход к анализу, проектированию и моделированию систем, основанный на принципах ООП
Основные методы:
— моделирования объектов и классов
— анализа взаимодействия объектов
— проектирования классов и иерархий
— анализа наследования и агрегации
⭐️ Подборки материалов по этой и другим темам доступны в базе знаний по системному анализу
#проектирование
Post #355
14.1K