Основные принципы ООП

Абстракция

Придание объекту уникальных характеристик

Определение концептуальных границ объекта

Работа с объектами без углубления в их реализацию

Использование инкапсуляции, полиморфизма или наследования для работы с объектами

Создание функции доступа или свойства для обращения к скрытым данным объекта

Разделение несущественных деталей реализации и значимых характеристик

Использование специальных интерфейсов для описания применений программы

Инкапсуляция

Сокрытие сложности реализации компонента

Взаимодействие с объектом через интерфейс

Защита жизненно важных данных компонента

Использование интерфейса объекта для взаимодействия

Реализация с помощью ключевого слова: public

Запрет на использование закрытых данных и методов (ключевые слова: private, protected, internal)

Применение инкапсуляции для сокрытия реализации

Наследование

Описание нового класса на основе уже существующего (родительского) класса

Класс-наследник реализует спецификацию базового класса

Простое наследование: базовый класс и производные классы

Абстрактные классы: содержат абстрактные методы и не могут использоваться для создания объектов напрямую

Множественное наследование: класс может наследовать методы нескольких предков

Реализация методов интерфейсов в C#, Java, Delphi и др.

Полиморфизм

Возможность объектов с одинаковой спецификацией иметь различную реализацию

Один интерфейс, множество реализаций

Повышение коэффициента повторного использования кода

Формы полиморфизма

Параметрический полиморфизм:

Создание универсальных базовых типов

Реализация функции для всех типов одинаково

создание методов родственных классов с откладыванием объявления типов до времени выполнения

создание типов, реализуемых во время выполнения программы

Полиморфизм переопределения

Абстрактные методы как отложенные методы

Вызов подходящей версии отложенного метода в дочерних классах

Специальный полиморфизм: специальная реализация для данных каждого типа