ООП Flashcards
OOP principles
Абстракция
Выделение важных сущностей и свойств реального мира для их моделирования в программе.
Инкапсуляция
Объединение внутри класса данных и операций с ними; защита данных и других деталей реализации от прямого доступа.
Полиморфизм
Возможность использования производного класса там, где разрешен экземпляр базового класса; при этом вызываются методы, переопределенные в производном классе.
Наследование
Возможность создания производных классов на основе существующих.
Отношения между классами и объектами
Наследование (IS-A) - треугольник и сплошная стрелка
Реализация - треугольник и пунктирная стрелка
Ассоциация - это отношение, при котором объекты одного типа неким образом связаны с объектами другого типа. Например, объект одного типа содержит или использует объект другого типа. (стрелка arrow)
Композиция - это отношение типа (HAS-A) содержит. При этом внешний класс полностью управляет жизненным циклом внутреннего объекта. (закрашенный ромбик и стрелка arrow ->)
Агрегация (HAS-A) - также предполагает отношение HAS-A, но при агрегации реализуется слабая связь, то есть в данном случае объекты будут равноправны. Внешний объект будет содержать ссылку на базовый класс, а не на конкретный и объект будет передаваться извне, например через конструктор. (полый ромбик и стрелка arrow ->)
Статическое и динамическое связывание
Если связывание проводится компилятором (компоновщиком) перед запуском программы, то оно называется статическим или ранним связыванием (early binding).
В свою очередь, позднее связывание (late binding) это связывание, проводимое непосредственно во время выполнения программы, в зависимости от типа объекта. Позднее связывание также называют динамическим (dynamic) или связыванием на стадии выполнения (runtime binding)