Skip to content

Latest commit

 

History

History
111 lines (85 loc) · 9.31 KB

OOP.md

File metadata and controls

111 lines (85 loc) · 9.31 KB

Объектно Ориентированное Программирование

ООП - Основные понятия


ООП - Базовые принципы

  • Наследование
    • механизм, который позволяет описать новый класс на основе существующего (родительского). При этом свойства и функциональность родительского класса заимствуются новым классом. Нужно, прежде всего, для повторного использование кода. Cвойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником, дочерним или производным классом.
  • Абстракция
    • выделение главных, наиболее значимых характеристик предмета и отбрасывание второстепенных. Для каждого объекта мы задаём минимальное количество методов, полей и описаний, которые позволят решить задачу. Чем меньше характеристик, тем лучше абстракция, но ключевые характеристики убирать нельзя.
  • Инкапсуляция
    • ограничение доступа к данным и возможностям их изменения. Свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе.
  • Полиморфизм
    • возможность работать с несколькими типами так, будто это один и тот же тип. При этом поведение объектов будет разным в зависимости от типа, к которому они принадлежат.
    • Свойство системы, позволяющее использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
    • Пример: реализуем в системе два разных класс, которые имеют метод getData - один с диска, другой из сети. При необходимости переключаем их. В других частях системы мы обращаемся к getData() и не думаем, как именно и откуда получаются данные — на этом уровне нам не важно. Интерфейс одинаковый, внутренняя релаизация разная.
    • Способность объекта использовать методы производного класса, который не существует на момент создания базового.


ООП - Принципы SOLID
  • Single Responsibility Principle (Принцип единственной ответственности)

    • Каждый класс должен решать лишь одну задачу.


  • Open-Closed Principle (Принцип открытости-закрытости).

    • Программные сущности (классы, модули, функции) должны быть открыты для расширения, но не для модификации.


  • Liskov Substitution Principle (Принцип подстановки Барбары Лисков).

    • Необходимо, чтобы подклассы могли бы служить заменой для своих суперклассов.
    • Классы-наследники могли бы использоваться вместо родительских классов, от которых они образованы, не нарушая работу программы.
    • Если оказывается, что в коде проверяется тип класса, значит принцип подстановки нарушается.


  • Interface Segregation Principle (Принцип разделения интерфейса).

    • Создавайте узкоспециализированные интерфейсы, предназначенные для конкретного клиента.
    • Клиенты не должны зависеть от интерфейсов, которые они не используют.


  • Dependency Inversion Principle (Принцип инверсии зависимостей).

    • Объектом зависимости должна быть абстракция, а не что-то конкретное.
    • Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций.
    • Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.





Legmo, 2019-2023