На этом шаге рассмотрим типичные приемы моделирования семантики класса в UML.
Главная цель использования классов – моделирование абстракций, которые определяются проблемой, которую вы пытаетесь решить, либо технологией, применяемой для решения данной проблемы. После того как эти абстракции идентифицированы, следующий шаг – спецификация их семантики.
UML предоставляет широкий спектр средств моделирования, начиная с относительно неформальных (обязанностей) и заканчивая в высшей степени формализованными (OCL – Object Constraint Language). Имея такой выбор, вы должны определить желаемый уровень детализации в соответствии с коммуникативным предназначением вашей модели. Если ее назначение состоит в передаче информации конечным пользователям и экспертам в предметной области, она может быть менее формальной. Если же цель заключается в поддержке прямого и обратного проектирования между моделью и кодом, то модель должна быть формализована в большей степени. Если назначение модели – ее математическое представление со строгим доказательством корректности, следует максимально формализовать ее.
Чтобы смоделировать семантику класса, выберите один из следующих вариантов, выстроенных в порядке возрастания формальности:
На практике вы будете использовать для разных абстракций вашей системы некую комбинацию вышерассмотренных подходов. Моделируя семантику класса, помните о том, что вы намерены выразить в первую очередь: ЧТО делает класс, или же КАК он это делает. В первом случае спецификация семантики класса предполагает описание его открытого, внешнего представления, во втором – закрытого, внутреннего. Можно использовать сочетание обоих представлений, внешнее показывая клиентам класса, а внутреннее – тем, кто занят его реализацией.
На следующем шаге рассмотрим стереотипы связи зависимости в UML.