На этом шаге рассмотрим класс как элемент диаграммы классов в UML.
На рис. 1 показана пиктограмма, представляющая один из классов в диаграмме классов и пример класса в системе управления гидропонной теплицей. Пиктограмма класса состоит из трех компонентов: имени, атрибутов и операций.
Рис.1. Пиктограмма класса и пример класса в системе
управления теплицей
Каждый класс должен иметь уникальное имя в соответствующем пространстве имен. По общепринятому соглашению имя начинается с прописной буквы, а пробелы между именами пропускаются. Кроме того, первая буква атрибута и операции является строчной, а последующие слова начинаются с прописных букв. Пробелы при этом также игнорируются. Поскольку класс является пространством имен для своих атрибутов и операций, имя атрибута должно быть однозначным в контексте класса. Выбор имен операций зависит от правил, принятых в конкретном языке программирования. Формат спецификаций атрибутов и операций показан ниже [Rumbaugh, Jacobson, and Booch. The Unified Modeling Language Reference Manual, pp. 187,498.].
Концепция видимости (visibility) — открытый, закрытый, защищенный или пакетный. Как для атрибута, так и для операций, тип — это имя класса или тип данных. Кратность атрибута measuredTemperature (Измеренная температура) на рис. 1 в классе TemperatureSensor (Датчик температуры) составляет [ 0 ... 60 ] и означает, что он представляет собой массив, состоящий из 60 измерений температуры. Значение атрибута, заданное по умолчанию, указывается в момент его создания, разумеется, если это значение вообще предусмотрено. Строка свойств, указанная в фигурных скобках, описывает дополнительные свойства атрибута, как, например, строка {list}, указанная после атрибута measuredTemperature в классе TemperatureSensor. В данном случае ключевое слово list (список) означает, что измерения температуры упорядочены и могут повторяться. Это позволяет определить порядок измерений температуры во времени и допускает повторяющиеся значения. Комбинация имяПараметра : Тип повторяется столько раз, сколько аргументов имеет операция.
В некоторых диаграммах классов полезно указывать лишь некоторые атрибуты и операции. Это объясняется тем, что, за исключением простейших случаев, перечислять все члены класса в диаграмме нецелесообразно. Таким образом, представленные атрибуты и операции лишь конспективно представляют спецификацию класса, который является единственным местом объявления всех своих членов. Если необходимо показать больше членов класса, следует увеличить размер его пиктограммы. Если проектировщик решил не показывать ни один член класса, можно указать лишь имя класса.
При желании синтаксис атрибутов и операций можно привести в соответствие с правилами выбранного языка программирования.
Экземпляры абстрактного класса создать невозможно. Поскольку абстрактные классы имеют исключительное значение для проектирования качественных иерархий классов, для них используются особые обозначения (см. рис. 2). В частности, имя абстрактного класса изображается курсивом. Это позволяет подчеркнуть, что существовать могут лишь экземпляры его подклассов. Операция абстрактного класса также изображается курсивом, чтобы показать, что она может по-разному реализоваться во всех экземплярах его подклассов. В системе управления гидропонной теплицы существуют удобрения, содержащие витаминные добавки, но не имеющие тип "элемент питания". Следовательно, класс Foodltem (Элемент питания) является абстрактным.
Рис.2. Представление абстрактного класса
На следующем шаге рассмотрим отношения между классами как один из элементов диаграммы классов.