Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #65, АПРЕЛЬ 2006 г.

программирование на доске почета

БОРИС ВОЛЬФСОН

Спецвыпуск: Хакер, номер #065, стр. 065-056-2


Более крупной сущностью (по сравнению с классом) является компонент, который обычно представляет собой физическую часть системы, например DLL (динамически подключаемую библиотеку).

Аналогичную функцию выполняют пакеты: они также служат контейнерами для других сущностей, но являются более универсальным механизмом и могут служить просто для логического разделения сущностей. Например, чтобы нагляднее представить для себя структуру программы, ты объединил в пакет элементы графического интерфейса пользователя, но в реальности они будут находиться в разных компонентах. Пакеты очень удобны при проектировании «сверху вниз» или при нисходящем проектировании: при таком подходе ты разбиваешь будущую программу на большие части (пакеты), а затем детализируешь их. На диаграммах пакет обозначается в виде папки:

С основными сущностями разобрались, теперь переходим к отношениям.

Отношение — это связь между сущностями определенного вида. В языке UML существует три вида основных отношений. Пожалуй, самым общим их видом является отношение зависимости (Dependency), которое указывает, что изменение одной сущности повлияет на другую сущность. В нашем случае изменения в классе Engine (движок) могут повлиять на класс Car (машина).

Вторым важным отношением является ассоциация (Association), которая показывает, что объекты одной сущности связаны с объектами другой сущности. Следует отметить, что отношение ассоциации является довольно общим понятием и существует его частный вид — композиция. На диаграммах она обозначается в виде стрелки с ромбиком (схема «отношение композиции»).

На очереди третье отношение — обобщение (Generalization). Это отношение отражает понятие объектно-ориентированного программирования «наследование». При таком отношении родительский класс обобщает дочерний, наследующий все его открытые и защищенные поля и методы.

В данном случае мы имеем класс Figure, который является абстрактным (его имя написано курсивом), то есть создать экземпляры этого класса невозможно. Класс «Фигура» имеет два метода: Draw (для рисования) и Hide (для сокрытия). В классах-потомках эти методы могут быть переопределены для рисования конкретных фигур: Rectangle будет прорисовывать прямоугольники, а Cicle — круги.

Виды отношения между сущностями могут меняться в зависимости от стадии проектирования. Например, сначала ты можешь установить, что класс Car связан с классом Engine, и обозначишь это зависимостью. Позже, при дальнейшем уточнении системы, это отношение сменится на композицию, когда станет ясно, что двигатель будет частью машины.

Назад на стр. 065-056-1  Содержание  Вперед на стр. 065-056-3