Диаграмма Классов – Class diagram

 
 

Диаграмма Классов определяет типы объектов системы и различного рода статические связи, которые существуют между ними (ассоциации, обобщения, агрегации). На диаграммах Классов изображаются также атрибуты классов, операции классов и ограничения, которые накладываются на связи между объектами.

На рисунке изображена диаграмма Классов для системы АТМ.

Для представления полной картины системы можно разработать столько диаграмм Классов, сколько требуется. Диаграммы Классов являются хорошим инструментом проектирования. С их помощью разработчики могут видеть и планировать структуру системы ещё до фактического написания кода, благодаря чему они с самого начала могут понять, хорошо ли спроектирована система.

Согласно Мартину Фаулеру существует три различные точки зрения на построение диаграмм Классов (или любой модели): концепция, спецификация, реализация.

1. Концептуальная точка зрения. Диаграмма Классов отображает понятия предметной области. Эти понятия соответствуют реализующим их классам, но прямое соответствие зачастую отсутствует. Концептуальная модель может иметь весьма слабое отношение (или вообще не иметь никакого отношения) к реализующему её программному обеспечению, поэтому её можно рассматривать как независимую от языка программирования. Диаграмма Классов будет отображать классы без атрибутов и операций, а также отношения между классами. Эти диаграммы полезны, когда проект находится в стадии анализа.

2. Точка зрения спецификации. Моделирование спускается на уровень программного обеспечения, но рассматриваются только интерфейсы классов, а не реализация. Диаграммы Классов будут отображать уточнённые отношения между классами (обобщения, агрегации, ассоциации) и сами классы с атрибутами и операциями. Диаграммы с точки зрения спецификации полезны, когда ещё на стадии проектирования Вы уже работаете с программным обеспечением.

3. Точка зрения реализации. Моделирование спускается на уровень реализации, и в этом случае действительно имеют дело с классами языка программирования (как это принято в объектно-ориентированном программировании). Диаграммы Классов будут отображать абстрактные и производные классы, параметризованные классы, стереотипы, видимость классов, классы отношений, направление и кратность отношений между классами и т.п. Данные диаграммы используйте только в том случае, когда необходимо проиллюстрировать конкретный способ реализации.

Обычно для описания системы создаются перечисленные выше диаграммы Классов:

1. Диаграммы, которые показывают классы предметной области и отношения между классами.

2. Диаграммы, на которых отображаются классы программных сущностей вместе с атрибутами и операциями классов, отношения между классами с направлением и кратностью этих отношений.

3. Диаграммы, которые соответствуют выбранному языку программирования.

Основное применение диаграмм Классов заключается в описании архитектуры программной системы. Следует помнить, что не надо строить модели всего на свете. Вместо этого следует сконцентрироваться на главных направлениях. Лучше иметь не очень много диаграмм Классов, которые постоянно находятся в работе и отображают все внесённые изменения, чем иметь дело с массой лишних и устаревших моделей.

Самая большая опасность, связанная с диаграммами Классов, заключается в том, чтобы слишком рано не погрязнуть в деталях реализации. С этим можно бороться, если сфокусировать внимание на концептуальной точке зрения и точке зрения спецификации, ограничившись основными классами, ассоциациями, обобщениями и агрегациями.