Основные принципы ООП
Абстракция
Придание объекту уникальных характеристик
Определение концептуальных границ объекта
Работа с объектами без углубления в их реализацию
Использование инкапсуляции, полиморфизма или наследования для работы с объектами
Создание функции доступа или свойства для обращения к скрытым данным объекта
Разделение несущественных деталей реализации и значимых характеристик
Использование специальных интерфейсов для описания применений программы
Инкапсуляция
Сокрытие сложности реализации компонента
Взаимодействие с объектом через интерфейс
Защита жизненно важных данных компонента
Использование интерфейса объекта для взаимодействия
Реализация с помощью ключевого слова: public
Запрет на использование закрытых данных и методов (ключевые слова: private, protected, internal)
Применение инкапсуляции для сокрытия реализации
Наследование
Описание нового класса на основе уже существующего (родительского) класса
Класс-наследник реализует спецификацию базового класса
Простое наследование: базовый класс и производные классы
Абстрактные классы: содержат абстрактные методы и не могут использоваться для создания объектов напрямую
Множественное наследование: класс может наследовать методы нескольких предков
Реализация методов интерфейсов в C#, Java, Delphi и др.
Полиморфизм
Возможность объектов с одинаковой спецификацией иметь различную реализацию
Один интерфейс, множество реализаций
Повышение коэффициента повторного использования кода
Формы полиморфизма
Параметрический полиморфизм:
Создание универсальных базовых типов
Реализация функции для всех типов одинаково
создание методов родственных классов с откладыванием объявления типов до времени выполнения
создание типов, реализуемых во время выполнения программы
Полиморфизм переопределения
Абстрактные методы как отложенные методы
Вызов подходящей версии отложенного метода в дочерних классах
Специальный полиморфизм: специальная реализация для данных каждого типа