Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP_Otvety.docx
Скачиваний:
26
Добавлен:
07.04.2025
Размер:
2.59 Mб
Скачать

13. Solid – принципы: sol.

SOLID – это английская аббревиатура для пяти известных принципов, применяемых при разработке объектно-ориентированных программ

● S — Single Responsibility Principle (SRP), единственная ответственность. Каждый класс отвечает за строго определенную функциональность, инкапсулированную в классе. Если это не так, класс нужно разбить и использовать композицию.

● O — Open-Close Principle (OCP), открытость-закрытость. Программные сущности (классы, функции, модули) должны быть открыты для расширения, но закрыты для изменения. Есть две интерпретации принципа: ○ Однажды разработанная реализация класса в дальнейшем требует только исправления ошибок, а новые или измененные функции требуют создания нового класса, возможно, наследуемого от старого.

● L — Liskov Substitution Principle (LSP), принцип подстановки Барбары Лисков. Если нечто справедливо по отношению к классу-предку, то оно должно быть справедливо и к классу-потомку, только такое наследование допустимо. Иначе: функции, которые используют базовый тип, должны иметь возможность использовать подтипы базового типа без знания об этом. Поведение наследуемых классов не должно противоречить поведению базового класса.

14. Solid – принципы: id.

SOLID – это английская аббревиатура для пяти известных принципов, применяемых при разработке объектно-ориентированных программ

I — Interface Segregation Principle (ISP), принцип разделения интерфейсов. Сложные интерфейсы необходимо разделять на более специфические, чтобы потенциальные объекты, использующие только часть интерфейса, не реализовывали все его методы. Клиенты не должны реализовывать методы, которые им не нужно использовать. Кроме того, этот принцип указывает на то, что интерфейс должен решать лишь какую-то одну задачу.

D — Dependency Inversion/Injection Principle (DIP), принцип инверсии/внедрения зависимостей.

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

  • Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

15. Объектная интроспекция и рефлексия.

Интроспекция и рефлексия – два связанных понятия, описывающих возможность программного кода анализировать (интроспекция) и изменять (рефлексия) свою собственную внутреннюю структуру.

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

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

В C++ интроспекцию можно провести, например, с помощью dynamic_cast. В Java используется instanceof или Object.getClass() и Class.getName(). Можно использовать собственные методы:

● с помощью виртуального метода getClassName(), который возвращает в строке название класса; метод не учитывает иерархию класса;

● с помощью виртуального метода isA(String _who), сравнивает переданную строку с названием класса и вызывает метод для вышестоящего в иерархии класса; метод учитывает иерархию.

Соседние файлы в предмете Объектно ориентированное программирование