Понятия ООП: инкапсуляция, наследования, полиморфизм. Объекты, классы, домены, отношения между ними - Painted-Black/BMSTU-OOP GitHub Wiki
Основные принципы ООП:
- Инкапсуляция - свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе. Инкапсуляция есть объединение в единое целое данных и алгоритмов обработки этих данных. Инкапсуляция позволяет в максимальной степени изолировать объект от внешнего окружения. Она существенно повышает надежность разрабатываемых программ, т.к. локализованные в объекте алгоритмы обмениваются с программой сравнительно небольшими объемами данных, причем количество и тип этих данных обычно тщательно контролируются. В результате замена или модификация алгоритмов и данных, инкапсулированных в объект, как правило, не влечет за собой плохо прослеживаемых последствий для программы в целом.
- Наследование – позволяет создать новый класс на основе уже существующего, частично или полностью заимствуя его функциональность. Наследование есть свойство объектов порождать своих потомков. Объект-потомок автоматически наследует от родителя все поля и методы, может дополнять объекты новыми полями и заменять (перекрывать) методы родителя или дополнять их.
Принцип наследования решает проблему модификации свойств объекта и придает ООП в целом исключительную гибкость.
- Полиморфизм – использование объектов с одинаковым интерфейсом без информации о типе и внутренней структуре объекта. Дает возможность работать с несколькими типами так, будто это один и тот же тип. При этом поведение объектов будет разным в зависимости от типа, к которому они принадлежат.
Основные понятия ООП
Объект - конкретная реализация абстрактного понятия, обладающая характеристиками состояния, поведения, индивидуальности.
В программе в виде объектов могут представляться:
- Физические объекты
- Элементы интерфейса
- Структуры данных
- Группы людей
- Хранилища данных
- Пользовательские типы данных
- Участники компьютерных игр и т. д.
Категории объектов:
- Реально существующие в физическом мире
- Роли - абстракция цели или назначения объекта. Один объект может выступать в разных ролях.
- Инцидент - абстракция чего-то произошедшего (наводнение)
- Взаимодействия - объекты, получаемые из взаимоотношений между другими объектами (перекресток, взятка)
- Спецификации - объекты, используемые для предоставления правил (правила дорожного движения)
Объект находится в таком же отношении к своему классу, в каком переменная находится по отношению к своему типу. Объект является экземпляром класса.
Состояние - один из возможных вариантов существования объекта.
Поведение - описание объекта в терминах изменения его состояний и передачи сообщений (данных) под воздействием других объектов. Поведение - это некоторая реакция объекта в ответ на внешнее воздействие.
Индивидуальность - сущность объекта, отличающая его от других объектов.
Действие – деятельность или операция, которые должны быть выполнены над объектом.
Модель Мура:
- Множество состояний, которые может принимать объект. Каждое состояние представляет стадию в жизненном цикле типичного экземпляра.
- Множество событий, на которые реагирует объект, в результате которых объект меняет свое состояние
- Правила перехода определяют, какое новое состояние получает в следствие какого-нибудь события (событие может и не изменять объект)
- Действие состояний - деятельность или операция который должен быть выполнены над объектом чтобы он мог достичь состояния (каждому действию соответствует состояние).
Отношения между объектами:
- Отношения использования (старшинства)
- объекты воздействия (активные) - воздействуют на другие объекты, но сами никогда не подвержены воздействию
- исполнители (пассивные) - только подвержены воздействию других объектов
- посредники (активные + пассивные)
- Отношения включения
Класс - такая абстракция множества предметов реального мира, что все предметы этого множества (объекты) имеют одни и те же характеристики, все экземпляры подчинены и согласованы с одним и тем же поведением.
Класс является своего рода формой, определяющей, какие данные и функции будут включены в объект класса. При объявлении класса не создаются никакие объекты этого класса. Класс является описанием совокупности сходных между собой объектов.
Отношения классов:
- Наследование - один класс может использовать другой. На основе одного класса, мы строим новый класс, путем добавления новых характеристик и методов
- Использование – один класс вызывает методы другого класса
- Наполнение - класс в классе
- Метакласс - класс, существующий для создания других классов (современные языки не поддерживают).
Домен - отдельный реальный мир, населенный отчетливым набором объектов, которые ведут себя в соответствии с характерными правилами поведения. Отдельный, реальный, гипотетически и абстрактный мир, населенный отчетливым набором объектов, которые ведут себя в соответствии с предусмотренным доменом правилами. Каждый домен образует отдельное и связное единое целое.
Класс определяется в одном домене.
Отношения доменов:
- Клиенты
- Сервера
Домены:
- Прикладной - основная задача
- Архитектурный - задает архитектуру системы
- Сервисные домены - набор сервисных функций для работы прикладного домена
- Домен реализации - функционал, который предоставляет какой-то низкий уровень/ОС.
Если классов в домене становится слишком много, домен разбивают на подсистемы (по минимуму связей).