Upload
andrey-radionov
View
1.022
Download
0
Embed Size (px)
Citation preview
ПРИНЦИПЫ ОБЪЕКТНОГО ПОДХОДА
Основные понятияООП
Наследование
Полиформизм
Инкапсуляция
Основные понятияООП
Класс Объект
Объект
Это сущность, способная сохранять свое состояние (информацию) и обеспечивающая набор операций для проверки и изменения этого состояния
Состояние объекта характеризуется текущим значением его атрибутов
ОбъектОбъект
Свойства События и методы
Инкапсуляция
Это определение классов — пользовательских типов данных, объединяющих своё содержимое в единый тип и реализующих некоторые операции или методы над ним
Классы обычно являются основой модульности, инкапсуляции и абстракции данных в языках ООП
Наследование
Способ определения нового типа, наследуя элементы (свойства и методы) существующего и модифицируя или расширяя их
Наследование
Транспорт
Наземный
Легковой
Грузовой
Водный
Воздушный
Полиформизм
Позволяет единообразно ссылаться на объекты различных классов (обычно внутри некоторой иерархии)
Это делает классы ещё более удобными и делает программы, основанные на них, легче для расширения и поддержки
Полиформизм
Класс
Это некое множество объектов, имеющих общую структуру и общее поведение
class Date { private:
int dd; int mm; int yy;
public: void Init (int d, int m, int y); int Day (); int Month (); int Year ();
};
Структура класса
Для поддержки принципа инкапсуляции, существуют четыре основных уровня доступа к членам класса
Разные языки могут поддерживать разное из этих уровней
Структура класса
Открытый (public) доступ — члены с этим уровнем доступа видимы всем клиентам класса
Защищенный (protected) доступ — члены этого уровня видимы самому классу, его подклассам, и абстракциям, находящимся с ним в одном пакете
Пакетный доступ — члены этого уровня доступны только самому классу и абстракциям
Закрытый (private) доступ — члены этого уровня видимы только изнутри самого класса
Абстракция
Абстракция выделяет существенные характеристики некоторого объекта, отличающие его от всех других видов объектов и, таким образом, четко определяет его концептуальные границы с точки зрения наблюдателя
Абстрактные классы
Классы, которые не могут иметь экземпляров
Это означает, что в них присутствуют функции-члены, которые объявлены, но не определены
Эти функции определяются в наследниках, которые уточняют данную абстракцию
Абстрактные классы
class shape {public: virtual void rotate(int) = 0;
virtual void draw() = 0;};
Интерфейс
Это абстрактный класс, который содержит только объявления методов и статические константные поля
Интерфейс определяет чистую абстракцию поведения
Класс-утилита
Это класс, в котором присутствуют только статические члены
Такие классы используются для группировки наиболее часто используемых общих алгоритмов, работающих с другими абстракциями или примитивными данными