класова диаграма
Диаграма на клас(англ. Static structure diagram) е структурна диаграма на езика за моделиране UML, демонстрираща общата структура на системната йерархия на класовете, техните взаимодействия, атрибути (полета), методи, интерфейси и връзки между тях. Той се използва широко не само за документиране и визуализация, но и за проектиране чрез преден или обратен инженеринг [1] .
Съдържание
Целта на създаването на диаграма на класа е графично представяне на статичната структура на декларативните елементи на системата (класове, типове и др.) Тя също така съдържа някои поведенчески елементи (например операции), но тяхната динамика трябва да бъде отразена в диаграми от други типове (комуникационни диаграми, диаграми на състоянието). За удобство на възприемането диаграмата на класовете може да бъде допълнена и с представяне на пакети, включително вложени [2] .
Когато представя обекти в реалния свят, разработчикът трябва да отрази тяхното текущо състояние, тяхното поведение и техните взаимни взаимоотношения. На всеки етап се прави абстракция от маловажни детайли и концепции, които не са приложими към реалността (производителност, капсулиране, видимост и т.н.). Класовете могат да се разглеждат от гледна точка на различни нива. По правило те се разграничават от три основни: аналитично ниво, ниво на проектиране и ниво на изпълнение [3]:
- на ниво анализ класът съдържа само скица на общите контури на системата и работи като логическа концепция на предметната област или софтуерен продукт.
- на ниво дизайн класът отразява основни дизайнерски решения относно разпределението на информацията и планираната функционалност, обединявайки информация за състояние и операции.
- на ниво изпълнение, класът е усъвършенстван доформата, в която е най-удобна за внедряване в избраната среда за разработка; в същото време не е забранено да се пропускат в него онези общи свойства, които не се прилагат в избрания език за програмиране.
Класовата диаграма е ключов елемент в обектно-ориентираното моделиране. В диаграмата класовете са представени в кутии, съдържащи три компонента:
- Името на класа се изписва най-отгоре. Името на класа е центрирано и изписано с удебелен шрифт. Имената на класовете започват с главна буква. Ако класът е абстрактен, името му се изписва с получер курсив.
- В средата са полетата (атрибутите) на класа. Те са подравнени вляво и започват с малка буква.
- Долната част съдържа методите на класа. Те също са подравнени вляво и с главни букви.
UML предоставя механизми за представяне на членове на класа, като атрибути и методи, и допълнителна информация за тях.
За да зададете видимостта на членовете на класа (т.е. за всички атрибути или методи), тези символи трябва да бъдат поставени преди името на члена: [4]
+ | Обществен |
- | Частно (Лично) |
# | Защитен |
/ | Изведено (може да се комбинира с други) |
Обхвати
UML дефинира два типа обхвати за членове:екземплярикласификатор, като последният имаподчертани имена. [5]
- Членове на класификатора. На много езици те се наричат статични. Обхватът е самият клас.
- Стойностите на полетата са еднакви за всичкиекземпляри в дадена единица за превод
- Извикването на метод не променя състоянието на обекта
Иметое подчертано, за да посочи членството в класификатора, в противен случай обхватът се приема за обхват по подразбиране.
Връзката е специален тип логическа връзка между обекти, показана в диаграми на класове и обекти. UML има следните видове връзки:
Връзки на клас обект
Пристрастяване
Зависимостта [en] обозначава връзка между класове, така че промяна в спецификацията на класа доставчик може да повлияе на работата на зависимия клас, но не и обратното.
Асоциация
Асоциацияпоказва, че обекти от един обект (клас) са свързани с обекти от друг обект по такъв начин, че можете да преминавате от обекти от един клас към друг. Това е общ случай на композиция и агрегация.
Например класът Person и класът School имат асоциация, тъй като човек може да учи в училище. Една асоциация може да получи името „проучва в“.
Двойните асоциации са представени от линия без стрелки в краищата, свързваща два класови блока. Асоциациите от по-висока степен имат повече от два края и са представени от линии, единият край на които отива към блока на класа, а другият към общия диамант. В изгледа за еднопосочна асоциация се добавя стрелка, за да посочи посоката на асоциацията.
Една асоциация може да бъде наименувана и роли, връзки, индикатори, множители, видимост или други свойства могат да бъдат етикетирани в краищата на реда, който я представлява.
Агрегациятаевид асоциация в отношенията между цялото и неговите части. Като тип асоциация може да се наименува агрегиране. Една релация на агрегиране не може да включва повече от два класа (контейнер и съдържание).
Агрегираневъзниква, когато един клас е колекция или контейнер от други. Освен това, по подразбиране, агрегирането се наричаагрегиране по препратка, т.е. когато животът на съдържащите се класове не зависи от живота на съдържащия клас. Ако контейнерът е унищожен, то съдържанието му не е.
Графично агрегирането е представено от празен диамант в поле за клас и линия от този диамант до съдържащия клас.
Състав
Съставе по-строг вариант на агрегиране. Известно също като агрегиране по стойност.
Композициятаима твърда зависимост от продължителността на живота на екземплярите на клас контейнер и екземплярите на съдържащия се клас. Ако контейнерът бъде унищожен, тогава цялото му съдържание също ще бъде унищожено.
Графично представен като агрегация, но със запълнен диамант.
Разлики между състав и агрегация
Да вземем един илюстративен пример. Стаята е част от апартамента, следователно композицията е подходяща тук, защото стаята не може да съществува без апартамент. И например мебелите не са неразделна част от апартамента, но в същото време апартаментът съдържа мебели, така че трябва да се използва агрегат.
Класови взаимоотношения
Генерализация (наследяване)
Обобщението показва, че единият от двата свързани класа (подтип) е частна форма на другия (супертип), което се наричаобобщениена първия. На практика това означава, че всеки екземпляр на подтип също е такъвсупертипов екземпляр. Например: животните са супертип на бозайници, които от своя страна са супертип на примати и т.н. Тази връзка се описва най-лесно с израза „А е Б“ (приматите са бозайници, бозайниците са животни).
Графично обобщението е представено чрез линия с празен триъгълник в супертипа.
Обобщението е известно също като наследство или връзка "е" (или връзка "е").
Внедряване
Внедряването е връзка между два елемента на модела, където един елемент (клиент) прилага поведението, определено от другия (доставчик). Реализацията е отношение цяло-част. Графично изпълнението е представено по същия начин като наследяването, но с пунктирана линия.
Доставчикът обикновено е абстрактен клас или интерфейсен клас.
Обща връзка
Пристрастяване
Зависимостта е слаба форма на връзка на използване, при която промяна в спецификацията на едното води до промяна в другото, без непременно да бъде обърнато. Възниква, когато даден обект се появи, например, под формата на параметър или локална променлива.
Графично представен с пунктирана стрелка, преминаваща от зависимия елемент към този, от който зависи.
Има няколко именувани варианта.
Зависимостта може да бъде между екземпляри, класове или екземпляр и клас.
Усъвършенстване на взаимоотношенията
Сила на връзката (множество)
Кардиналността на релацията (множител) означава броя на връзките между всеки екземпляр на класа (обект) в началото на реда с екземпляра на класа в неговия край. Има следните типични случаи:
">