
- •Тема 2.3 Объектно-ориентированное проектирование
- •2.3.1 Объектный подход
- •2.3.2 Сложная система с точки зрения объектного подхода
- •2.3.3 Основные положения объектного подхода
- •Структура классов
- •Архитектура модулей
- •Составляющие объектного подхода.
- •Классы и объекты.
- •Объект.
- •Отношения между объектами.
- •Классы.
- •Отношения между классами.
Отношения между объектами.
Отношения между двумя объектами основываются на предположении, что каждый объект имеет информацию о другом объекте: об операциях, которые над ним можно выполнять и об ожидаемом поведении. Рассмотрим два типа отношений между объектами:
-отношения использования или старшинства и
-отношения включения или родства.
Отношения использования. Каждый объект, включенный в эти отношения, может выполнять одну из трех следующих функций:
-воздействие, т.е. объект может воздействовать, никогда не подвергаясь воздействию со стороны других объектов, что соответствует понятию – активный объект,
-исполнение, в этом случае объект подвергается воздействию со стороны другого объекта, никогда не выступая в роли активного,
посредничество, такой объект может быть, как воздействующим, так и исполнителем, он создается для выполнения операций в интересах некоторого активного объекта или другого посредника.
Пересылка сообщений между объектами, как правило, однонаправлена, но встречаются и двунаправленные связи. При пересылке сообщений от одного объекта к другому они должны быть определенным образом синхронизированы. Для последовательной системы такая синхронизация реализуется, как правило, через вызов подпрограмм. В параллельной системе ситуация значительно сложнее. Отсюда вытекает следующий способ классификации объектив:
объект-транслятор – пассивный объект с одним каналом управления,
блокированный объект – пассивный объект с несколькими каналами управления,
параллельный объект – активный объект с несколькими каналами управления.
Отношение включения. Если некоторый объект можно определить, как состоящий из других объектов, которые являются элементами состояния данного объекта, то это и характеризует отношение включения.
Отношения включения и использования тесно связаны. Отношения включения имеют то преимущество, что при их использовании сокращается число обрабатываемых объектов. Однако в этом случае возникает сильная зависимость между объектами, чего можно избежать в том случае, когда будут задействованы отношения использования
Классы.
В то время, как объекты отражают конкретную сущность, определенную в пространстве и во времени, класс определяет абстракцию, которая отражает сущность объекта. Т.о. класс – это группа или множество объектов с общими свойствами или свойством.
С точки зрения ООD можно дать следующее определение: класс – это множество объектов, связанных общностью структуры и поведения.
Каждый объект является экземпляром какого-либо класса, а каждый класс может порождать любое необходимое количество объектов. Как правило классы статичны. Все их особенности и содержание определяется уже в процессе компиляции, а следовательно каждый создаваемый объект относится к строго определенному классу. Объект является динамической составляющей системы, и в процессе ее реализации может создаваться, модифицироваться и разрушаться. Объект не может быть классом, но класс может быть объектом. Класс, экземплярами которого являются классы называется метаклассом.
В то время, как объект существует и играет в системе определенную роль, класс содержит описание структуры и поведения всех объектов, связанных отношениями общности. Т.о. класс в системе играет роль соглашения о связях в отношении абстракции и всех ее реализаций. В языках со строгой типизацией и ранними связями нарушение таких соглашений можно выявить уже на этапе компиляции.
Существует внешнее и внутреннее проявление класса. Интерфейсная часть описания класса соответствует его внешнему проявлению, подчеркивает его абстрактность, но скрывает структуру и особенности поведения. (!!!!!Интерфейсная част класса состоит из перечня действий, которые допускает описание других классов, констант, переменных, необходимых для полного определения данной абстракции)
Интерфейсную част класса можно разделить на три составляющие:
-общедоступная – та часть в которой даются определения, видимые для всех объектов пользователей,
-защищенная, где даются определения, видимые только для объектов, относящихся к подклассам данного класса,
-обособленная, в которой даются определения, скрытые для объектов всех других классов.