Определение уровней иерархии
является ответственной задачей. Как правило,
иерархические уровни достаточно явно представлены
в предметной области и задачей разработчиков
является фиксация этих уровней в модели.
Но бывают ситуации, когда декомпозиция
по уровням неочевидна, однако дополнительное
межуровневое деление не вызывает серьезных
осложнений, так как все изменения локализованы
в рамках одного уровня.
Уровни иерархии системы
отличаются видами решаемых задач, а, следовательно,
и теми интерфейсами, которые имеет каждый
уровень. Любой верхний уровень реализует
свою функциональность через интерфейсы
нижних уровней. Верхний уровень может
определять/использовать интерфейсы нескольких
нижних уровней.
Уровни системы могут иметь подуровни вложенности.
Объекты верхнего подуровня агрегируют
объекты нижнего подуровня, так же как
и при делении на основные уровни. Отличие
подуровня от уровня состоит в том, что
подуровень не имеет собственной спецификации
интерфейса. То есть, все объекты одного
уровня содержат реализацию того интерфейса,
который специфицирован для данного уровня
независимо от того, какому подуровню они
принадлежат. Типичным примером деления
на подуровни может служить уровень графических
примитивов системы графического пользовательского
интерфейса GUI. Этот уровень содержит
элементарные графические примитивы: точки,
прямые и кривые линии. Из элементарных
графических примитивов складываются композитные
графические примитивы, такие как, многоугольники,
овалы, шрифты, образы (картинки). Но при
этом и элементарные, и композитные примитивы
остаются примитивами и реализуют один
и тот же интерфейс. Другой пример деления
на подуровни будет рассмотрен в примере
проекта реляционной системы управления
базами данных.
|
Рис.
2. Деление на уровни и подуровни |
Определение подуровней
происходит при разработке уровня, именно
тогда определяется, что уровень содержит
контейнеры, агрегирующие классы того же
уровня.
|