Основные конструкции языка UML

Категории классов

Когда система разрастается до десятка классов, можно заметить груп­пы классов, связанные внутри и слабо зацепляющиеся с другими. Такие группы классов образуют категории.

Категория классов – это агрегат, состоящий из классов и других катего­рий классов.

Категория классов не имеет операций или состояний в явном виде, они содержатся в ней не­явно в описаниях агрегированных классов.

Некоторые классы в категории могут быть открытыми, то есть экспортиро­ваться для использования за пределы категории. Остальные классы могут быть частью реализации, то есть не использоваться никакими классами, внешними к этой категории.

Между категориями и классами может существовать отношение использования. Категория может использовать невложенные категории и классы. С другой стороны, и классы могут использовать категории.

В C++ категории классов реализуются с помощью введения пространств имен – namespace. Однако пространство имен позволяет реализовать более широкое понятие. Оно может включать в себя классы, другие пространства имен, свободные подпрограммы и глобальные (внутри пространства имен) данные.

Заметим, что пространства имен связаны с идеей модульности, выполняя функцию логического группирования элементов (в отличие от модулей, осуществляющих в первую очередь физическое группирование элементов).

Пример. Объединим все классы, разработанные для использования в графической системе, в одну категорию. Предоставим пользователю описания в файле GraphSys.h:

namespace GraphSys{

class Point{... };

class Color{... };

class Shape {... };

class Circle: public Shape{... };

class SolidCircle: public Circle {... };

...

}

Реализация указанных классов находится в файле GraphSys.срр:

# include "GraphSys.h"

namespace GraphSys{

Circle:: draw(){...}

SolidCircle:: draw(){...}

...

}

Обращение к членам пространства имен осуществляется с использованием явной квалификации:

GraphSys:: Circle C;

GraphSys:: SolidCircle SC;

С другой стороны, описание using в пользовательском коде позволяет не использовать все время явную квалификацию:

# include "GraphSys.h"

using namespace GraphSys;

void user_func(){

Circle C;

...

C.draw();

}

Поскольку использование объектно-ориентированного подхода особенно важно при разработке сложных программных продуктов, модели предметной области, которые приходится строить в этих случаях, тоже будут сложны. Поэтому большое значение при объектно-ориентированном подходе имеют средства, позволяющие визуализировать, сохранять и документировать принимаемые решения. Одним из таких средств является унифицированный язык моделирования UML. Разработка системы средствами UML происходит в виде построения набора диаграмм, позволяющих описать определенные части моделируемой реальности в определенных аспектах. В данном разделе мы рассмотрим основные элементы ряда диаграмм UML.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: