Тема_7 (1122352), страница 7
Текст из файла (страница 7)
Кузнецов. Базы данных.83 Проектирование РБДДиаграммы классов языка UML (5)Основные понятия диаграмм классов UML (3) Классы, атрибуты, операции(1) Классом называется именованноеописание совокупности объектов собщими атрибутами, операциями,связями и семантикой Графически класс изображается в виде прямоугольника У каждого класса должно быть имя (текстовая строка), уникальноотличающее его от всех других классов При формировании имен классов в UML допускается использованиепроизвольной комбинации букв, цифр и даже знаков препинания Однако на практике рекомендуется использовать в качестве именклассов короткие и осмысленные прилагательные и существительные,каждое из которых начинается с заглавной буквы Примеры описания классов показаны на рисунке29.10.2009С.Д.
Кузнецов. Базы данных.84 Проектирование РБДДиаграммы классов языка UML (6)Основные понятия диаграмм классов UML (4) Классы, атрибуты, операции(2) Атрибутом класса называется именованноесвойство класса, описывающее множество значений,которые могут принимать экземпляры этого свойства Класс может иметь любое число атрибутов (вчастности, не иметь ни одного атрибута) Свойство, выражаемое атрибутом, является свойством моделируемойсущности, общим для всех объектов данного класса Так что атрибут является абстракцией состояния объекта Имена атрибутов представляются в разделе класса, расположенномпод именем класса На практике для имен атрибутов рекомендуется использовать короткиеприлагательные и существительные, отражающие смыслсоответствующего свойства класса Первое слово в имени атрибута рекомендуется писать с прописнойбуквы, а все остальные слова – с заглавной Пример описания класса с указанными атрибутами показан на рисунке29.10.2009С.Д.
Кузнецов. Базы данных.85 Проектирование РБДДиаграммы классов языка UML (7)Основные понятия диаграмм классов UML (5) Классы, атрибуты, операции(3)Операцией класса называется именованная услуга, которую можнозапросить у любого объекта этого классаОперация – это абстракция того, что можно делать с объектомКласс может содержать любое число операций (в частности, не содержатьни одной операции)Набор операций класса является общим для всех объектов данногокласса.Операции класса определяются в разделе, расположенном ниже раздела сатрибутамиМожно ограничиться только указанием имен операций, оставив детальнуюспецификацию выполнения операций на более поздние этапымоделированияДля именования операций рекомендуется использовать глагольныеформы, соответствующие ожидаемому поведению объектов данногоклассаОписание операции может также содержать ее сигнатуру, т. е.
имена итипы всех параметров, а если операция является функцией, то и тип еезначения29.10.2009С.Д. Кузнецов. Базы данных.86 Проектирование РБДДиаграммы классов языка UML (8)Основные понятия диаграмм классов UML (6) Классы, атрибуты, операции(4) Для класса Человек определены триоперации: выдатьВозраст, сохранитьТекущийДоход, выдатьОбщийДоход В операции выдатьВозраст используютсязначение атрибута датаРождения и значениетекущей даты Операция сохранитьТекущийДоход позволяет зафиксировать всостоянии объекта сумму и дату поступления дохода данного человека Операция выдатьОбщийДоход выдает суммарный доход данногочеловека за указанное время Заметим, что состояние объекта меняется при выполнении тольковторой операции Результаты первой и третьей операций формируются на основетекущего состояния объекта29.10.2009С.Д.
Кузнецов. Базы данных.87 Проектирование РБДДиаграммы классов языка UML (9)Основные понятия диаграмм классов UML (7) Категории связей. Связь-зависимость(1)В диаграмме классов могут участвовать связи трех разныхкатегорий:зависимость (dependency),обобщение (generalization) иассоциация (association)При проектировании реляционных БД наиболее важны вторая итретья категории связей, поэтому о связях-зависимостях будетсказано только самое основное.Зависимостью называют связь по применению, когда изменение вспецификации одного класса может повлиять на поведение другогокласса, использующего первый классЧаще всего зависимости применяют в диаграммах классов, чтобыотразить в сигнатуре операции одного класса тот факт, чтопараметром этой операции могут быть объекты другого классаПонятно, что если интерфейс второго класса изменяется, этовлияет на поведение объектов первого класса29.10.2009С.Д.
Кузнецов. Базы данных.88 Проектирование РБДДиаграммы классов языка UML(10)Основные понятия диаграмм классов UML (8) Категории связей. Связь-зависимость Пример диаграммы классов со(2)связью-зависимостью В классе РасписаниеЗанятийопределены две операции сочевидной семантикой, параметрамикоторых являются объекты классаКурс При изменении интерфейса класса Курс изменится поведение объектовкласса РасписаниеЗанятий. Зависимость показывается прерывистой линией со стрелкой,направленной к классу, от которого имеется зависимость Связи-зависимости существенны для объектно-ориентированныхсистем (в том числе и для ООБД) При проектировании традиционных РБД непонятно, как использоватьинформацию о наличии связей-зависимостей между классами29.10.2009С.Д.
Кузнецов. Базы данных.89 Проектирование РБДДиаграммы классов языка UML(10)Связью-обобщениемназываетсясвязь(8)междуобщей сущностью,Основныепонятия диаграммклассов UMLСвязь-обобщение(1)называемой суперклассом, или родителем, и болееспециализированной разновидностью этой сущности, называемойподклассом, или потомкомОбобщения иногда называют связями «is a», имея в виду, чтокласс-потомок является частным случаем класса-предкаКласс-потомок наследует все атрибуты и операции класса-предка,но в нем могут быть определены дополнительные атрибуты иоперации.Объекты класса-потомка могут использоваться везде, где могутиспользоваться объекты класса-предкаЭто свойство называют полиморфизмом по включению, имея ввиду, что объекты потомка можно считать включаемыми вомножество объектов класса-предкаГрафически обобщения изображаются в виде сплошной линии сбольшой незакрашенной стрелкой, направленной к суперклассу29.10.2009С.Д.
Кузнецов. Базы данных.90 Проектирование РБДДиаграммы классов языка UML(11) Здесь показан примерОсновные понятия диаграмм классов UML (9) Связь-обобщение (2)иерархии одиночногонаследования: у каждогоподкласса имеется только одинсуперкласс. В отличие от механизманаследования типов сущностейER-модели здесь отсутствуеткласс ПРОЧИЕ, т.е. в классеЛетательныйАппарат могутприсутствовать «собственные»объекты, не относящиеся ни кклассу Аэроплан, ни к классуВертолет Одиночное наследование является достаточным в большинствеслучаев применения связи-обобщения29.10.2009С.Д.
Кузнецов. Базы данных.91 Проектирование РБДДиаграммы классов языка UML(12) Однако в UML допускается иОсновные понятия диаграмм классов UML (10) Связь-обобщение (3)множественное наследование, когдаодин подкласс определяется наоснове нескольких суперклассов В качестве одного из разумных (неслишком распространенных)примеров рассмотрим даннуюдиаграмму классов На этой диаграмме классы Студенти Преподаватель порождены изодного суперклассаЧеловекИзУниверситета Вообще говоря, к классу Студент относятся те объекты классаЧеловекИзУниверситета, которые соответствуют студентам, а к классуПреподаватель – объекты класса ЧеловекИзУниверситета,соответствующие преподавателям29.10.2009С.Д. Кузнецов.
Базы данных.92 Проектирование РБДДиаграммы классов языка UML(13) Но, как это часто случается,Основные понятия диаграмм классов UML (11) Связь-обобщение (4)многие студенты уже в студенческиегоды начинают преподавать, так чтомогут существовать такие дваобъекта классов Студент иПреподаватель, которымсоответствует один объект классаЧеловекИзУниверситета Итак, среди объектов классаСтудент могут быть преподаватели, анекоторые преподаватели могут бытьстудентами Тогда мы можем определить класс СтудентПреподаватель путеммножественного наследования от суперклассов Студент и Преподаватель29.10.2009С.Д.
Кузнецов. Базы данных.93 Проектирование РБДДиаграммы классов языка UML(14) Так что полиморфизм поОсновные понятия диаграмм классов UML (12) Связь-обобщение (5)включению продолжает работать Заметим, что для этого пришлосьотказаться от еще одного свойствамеханизма наследования ER-модели– отсутствие общих экземпляров уподтипов одного типа сущности В данном случае множественноенаследование возможно именнопотому, что в классы Студент иПреподаватель входят разныеобъекты, которым соответствуетодин и тот же объект суперкласса29.10.2009С.Д. Кузнецов.
Базы данных.94 Проектирование РБДДиаграммы классов языка UML(15)Следуеттакже отметить,что множественноенаследование,Основныепонятиядиаграмм классовUML (13) Связь-обобщение(6)помимо того, что не слишком часто требуется на практике,порождает ряд проблем, из которых одной из наиболее известныхявляется проблема именования атрибутов и операций в подклассе,полученном путем множественного наследованияНапример, предположим, что при образовании подклассов Студенти Преподаватель в них обоих был определен атрибут с именемномерКомнатыОчень вероятно, что для объектов класса Студент значениямиэтого атрибута будут номера комнат в студенческом общежитии, адля объектов класса Преподаватель – номера служебныхкабинетовКак быть с объектами класса СтудентПреподаватель, для которыхсущественны оба одноименных атрибута (у студентапреподавателя могут иметься и комната в общежитии, и служебныйкабинет)?29.10.2009С.Д.
Кузнецов. Базы данных.95 Проектирование РБДДиаграммы классов языка UML(16)Основныепонятия диаграммклассов UML(14) изСвязь-обобщение(7)На практикеприменяетсяодноследующихрешений:запретить образование подклассаСтудентПреподаватель, пока в одном из суперклассовне будет произведено переименование атрибутаномерКомнаты;наследовать это свойство только от одного изсуперклассов, так что, например, значением атрибутаномерКомнаты у объектов классаСтудентПреподаватель всегда будут номера служебныхкабинетов;унаследовать в подклассе оба свойства, ноавтоматически переименовать оба атрибута, чтобыпрояснить их смысл; назвать их, например,номерКомнатыСтудента и номерКомнатыПреподавателя29.10.2009С.Д.
Кузнецов. Базы данных.96 Проектирование РБДДиаграммы классов языка UML(17)Ни одноиз решенийне являетсяполностьюОсновныепонятиядиаграммклассов UML(15) Связь-обобщение (8)удовлетворительнымПервое решение требует возврата к ранее определенному классу,имена атрибутов и операций которого, возможно, уже используются вприложенияхВторое решение нарушает логику наследования, не давая возможностина уровне подкласса использовать все свойства суперклассовНаконец, третье решение заставляет использовать длинные именаатрибутов и операций, которые могут стать недопустимо длинными,если процесс множественного наследования будет продолжаться отполученного подклассаНо, конечно, сложность проблемы именования атрибутов иопераций несопоставимо меньше сложности реализациимножественного наследования в реляционных БДПоэтому при использовании UML для проектированияреляционных БД нужно очень осторожно использоватьнаследование классов вообще и стараться избегатьмножественного наследования29.10.2009С.Д.