Объектно-ориентированное проектирование. Павлов А.Ю. - 12 стр.

UptoLike

Составители: 

7. Отношение конкретизации между классами.
Задание
Определить отношения между классами, полученными в лабораторной работе 2.
Подготовка к лабораторной работе
Перед выполнением лабораторной работы необходимо прочитать краткие
теоретические сведения.
Для допуска к работе студент обязан отчитаться по контрольным вопросам
прочитанного раздела.
Выполнение лабораторной работы
Для выполнения работы необходимо:
определить отношения между классами;
оформить работу и отчитаться по ней.
Методические указания к выполнению лабораторной работы
Отношения между классами и объектами связаны с конкретными действиями.
Если мы хотим, чтобы объект X послал объекту Y сообщение М, то прямо или
косвенно класс X должен быть доступенвидим») для класса Y, иначе невозможно
определить в классе X операцию М. Объект X также должен быть «видим» для Y,
иначе Y не будет знать о существовании X. Под доступностью и видимостью
понимается способность одной абстракции обращаться к внешним ресурсам другой
абстракции. Таким образом, взаимозависимость является мерой видимости.
Одним из полезных правил является закон Деметера, который установил, что
«
методы любого класса не должны зависеть от структуры других классов, за
исключением собственной структуры (верхнего уровня). В каждом методе
посылаются сообщения только объектам из предельно ограниченного множества
классов». Следование этому закону позволяет создавать близко связанные классы,
реализация которых защищена от доступа. Такие классы достаточно автономны и для
понимания их логики нет
необходимости знать строение других классов. При анализе
структуры классов для системы в целом можно обнаружить, что иерархия
наследования либо широкая и мелкая, либо узкая и глубокая, либо сбалансированная.
В первом случае структура классов выгладит как лес из свободно стоящих классов,
которые могут свободно смешиваться и вступать во взаимоотношения. Во втором
случае структура классов напоминает одно дерево из ветвей-классов, имеющих общего
предка. Каждый из вариантов имеет свои достоинства и недостатки. Между
отдельными классами существует более тесная взаимозависимость, но совсем не
используется общность структуры. В случае дерева классов эта общность используется
максимально, поэтому каждый из классов имеет меньший размер.
Однако для понимания
сущности таких классов нужно знать все особенности
наследованных или использованных свойств других классов. Иногда требуется выбирать
между отношениями наследования и использования. Например, следует ли в классе
«автомобиль» использовать или наследовать классы «двигатель» и «колесо»? В данном
случае более целесообразны отношения использования. По мнению Мейера, между