«Разработка и стандартизация программных средств и информационных технологий» ЛЕКЦИЯ 7. ПРОЕКТИРОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ ПОДХОД ДИАГРАММЫ КЛАССОВ Диаграмма классов определяет типы объектов системы и различные статические связи, которые существуют между ними. Два основных вида логических связей: ассоциации (например, клиент может сделать заказ); подтипы (частный клиент является разновидностью клиента). На диаграммах классов изображаются также атрибуты классов, операции классов и ограничения, которые накладываются на связи между объектами. Концептуальный аспект – диаграммы классов отображают понятия изучаемой предметной области. Эти понятия будут соответствовать реализующим их классам, однако прямое соответствие зачастую отсутствует. Концептуальная модель не зависит от средств реализации (языков программирования). Аспект спецификации – модель спускается на уровень ПО, но рассматриваются только интерфейсы, а не программная реализация классов. Аспект реализации – модель действительно определяет реализацию классов ПО, но рассматриваются только интерфейсы, а не программная реализация классов. Заказ ДатаПолучения Оплачен номер: Строка цена: Деньги * имя роли {если Заказ.Клиент.кредитн ыйРейтинг=”низкий”, то значение Заказ.Оплачен должно быть истинным} атрибуты операции обобщение Корпоративный Клиент контактноеИмя кредитныйРейтинг кредитныйЛимит класс Частный Клиент номерКредитнойКарты сделать напоминание() счётЗаМесяц(целое) * отчёт о закупках Строка заказа количество: Целое цена: Деньги удовлетворён: Двоичное имя адрес кредитныйРейтинг(): Строка ограничение множественность: многозначная элементы строки 1 ассоциация отправить() закрыть() 1 Клиент множественность: обязательная * 0..1 множественность: необязательная Служащий * 1 Продукт Диаграмма классов Ассоциации Ассоциации представляют собой связи между экземплярами классов (объектами) - личность работает в компании - компания имеет ряд офисов Концептуальные связи между классами - Заказ должен поступить от единственного Клиента - Клиент в течение некоторого времени может сделать несколько Заказов - каждый Заказ содержит несколько Строк заказа - каждая Строка заказа соответствует единственному Продукту Роль ассоциации определяется её направлением (от клиента к Заказу и от Заказа к Клиенту). Роль обладает множественностью: * - с одним Клиентом может быть связано множество Заказов [0. ∞) 1 - любой Заказ может поступить только от одного Клиента 0..1 – либо 0, либо 1 Ассоциации в аспекте спецификации представляют собой ответственности классов. Существуют методы, связанные с Клиентом, с помощью которых можно узнать, какие Заказы сделал данный Клиент; В классе Заказ существуют методы, позволяющие узнать, какой Клиент сделал этот Заказ, и какие Строки заказа в него входят. Диаграмма классов с направлениями навигации Заказ ДатаПолучения Оплачен номер: Строка цена: Деньги Клиент * 1 кредитныйРейтинг(): Строка отправить() закрыть() 1 элементы строки имя адрес {если Заказ.Клиент.кредитн ыйРейтинг=”низкий”, то значение Заказ.Оплачен должно быть истинным} Корпоративный Клиент контактноеИмя кредитныйРейтинг кредитныйЛимит сделать напоминание() счётЗаМесяц(целое) * отчёт о закупках Строка заказа количество: Целое цена: Деньги удовлетворён: Двоичное * 0..1 Служащий * 1 Продукт Частный Клиент номерКредитнойКарты Атрибуты «Имя Клиента» Концептуальный уровень Клиент имеет имя Аспект спецификаций Объект Клиент может сообщить своё имя и имеет механизм его определения Аспект реализации Клиент содержит (переменную, данных), его имени Атрибуты всегда имеют единственное значение. поле элемент соответствующее Операции Операции представляют собой процессы, реализуемые классом (методы). Аспект спецификаций Общий метод над типом. Аспект реализации Важно различать операции, изменяющими класса состояния (модификатор) и операции, этого не делающие (запрос) Запросы могут выполняться в любом порядке, последовательность выполнения модификаторов имеет существенное значение. Обобщение Клиент Супертип имя адрес кредитныйРейтинг(): Строка Корпоративный Клиент контактноеИмя кредитныйРейтинг кредитныйЛимит Подтип Частный Клиент номерКредитнойКарты сделать напоминание() счётЗаМесяц(целое) Подтип Концептуальный уровень: Аспект спецификации: Аспект реализации: Корпоративный (Частный) клиент – особый вид Клиента. Всё, что известно для Клиента (атрибуты, ассоциации, операции), справедливо и для Корпоративного (Частного) клиента. Интерфейс подтипа должен включать все элементы интерфейса супертипа. Наследование подклассом всех полей и методов суперкласса и может переопределять наследуемые методы. Ограничения Для описания ограничений можно использовать запись на естественном языке или на языке программирования. Пример: Заказ может быть сделан одним единственным Клиентом. Классификация Однозначная классификация подразумевает, что любой объект принадлежит единственному типу, который может наследовать свойства от супертипов. Множественная классификация предполагает возможность описания объекта разными типами, которые не обязательно связаны наследованием. Хирург Мужчина Семейный врач Женщина Доктор пол (полный) Дискриминатор роль Личность пациент Пациент Медсестра Фельдшер Дискриминатор используется для определения допустимых сочетаний, помечая ассоциацию-обобщение и характеризуя сущность подтипов. Все подтипы с одним дискриминатором являются непересекающимися. Дискриминатор может быть помечен как полный. Это означает, что любой экземпляр суперкласса должен быть и экземпляром одного из подклассов в данной группе. Допустимые сочетания: (Женщина, Пациент, Медсестра), (Мужчина, Доктор, Хирург), (Мужчина, Фельдшер), (Женщина, Пациент), Недопустимые сочетания: (Пациент, Доктор), (Мужчина, Доктор, Медсестра), Не включает типа, определённого полным дискриминатором «пол» Включает сразу два типа, определённые одним дискриминатором «роль» Динамическая классификация допускает изменение типа объектов в рамках структуры подтипов, а статическая этого не допускает. Мужчина Женщина пол {полный} Личность работа (динамическая) Продавец Инженер Менеджер Агрегация и композиция Многоугольник 1 Агрегация 1 Композиция 1 {упорядочено} 3..* Вершина Графический объект Цвет Текстура