класова диаграма

Диаграма на клас(англ. Static structure diagram) е структурна диаграма на езика за моделиране UML, демонстрираща общата структура на системната йерархия на класовете, техните взаимодействия, атрибути (полета), методи, интерфейси и връзки между тях. Той се използва широко не само за документиране и визуализация, но и за проектиране чрез преден или обратен инженеринг [1] .

Съдържание

Целта на създаването на диаграма на класа е графично представяне на статичната структура на декларативните елементи на системата (класове, типове и др.) Тя също така съдържа някои поведенчески елементи (например операции), но тяхната динамика трябва да бъде отразена в диаграми от други типове (комуникационни диаграми, диаграми на състоянието). За удобство на възприемането диаграмата на класовете може да бъде допълнена и с представяне на пакети, включително вложени [2] .

Когато представя обекти в реалния свят, разработчикът трябва да отрази тяхното текущо състояние, тяхното поведение и техните взаимни взаимоотношения. На всеки етап се прави абстракция от маловажни детайли и концепции, които не са приложими към реалността (производителност, капсулиране, видимост и т.н.). Класовете могат да се разглеждат от гледна точка на различни нива. По правило те се разграничават от три основни: аналитично ниво, ниво на проектиране и ниво на изпълнение [3]:

  • на ниво анализ класът съдържа само скица на общите контури на системата и работи като логическа концепция на предметната област или софтуерен продукт.
  • на ниво дизайн класът отразява основни дизайнерски решения относно разпределението на информацията и планираната функционалност, обединявайки информация за състояние и операции.
  • на ниво изпълнение, класът е усъвършенстван доформата, в която е най-удобна за внедряване в избраната среда за разработка; в същото време не е забранено да се пропускат в него онези общи свойства, които не се прилагат в избрания език за програмиране.

Класовата диаграма е ключов елемент в обектно-ориентираното моделиране. В диаграмата класовете са представени в кутии, съдържащи три компонента:

  • Името на класа се изписва най-отгоре. Името на класа е центрирано и изписано с удебелен шрифт. Имената на класовете започват с главна буква. Ако класът е абстрактен, името му се изписва с получер курсив.
  • В средата са полетата (атрибутите) на класа. Те са подравнени вляво и започват с малка буква.
  • Долната част съдържа методите на класа. Те също са подравнени вляво и с главни букви.

UML предоставя механизми за представяне на членове на класа, като атрибути и методи, и допълнителна информация за тях.

За да зададете видимостта на членовете на класа (т.е. за всички атрибути или методи), тези символи трябва да бъдат поставени преди името на члена: [4]

+Обществен
-Частно (Лично)
#Защитен
/Изведено (може да се комбинира с други)

Пакет

Обхвати

UML дефинира два типа обхвати за членове:екземплярикласификатор, като последният имаподчертани имена. [5]

  • Членове на класификатора. На много езици те се наричат ​​статични. Обхватът е самият клас.
  • Стойностите на полетата са еднакви за всичкиекземпляри в дадена единица за превод
  • Извикването на метод не променя състоянието на обекта
  • Членовете са екземпляри. Обхватът е обект.
  • Стойностите на полетата могат да се различават в различните обекти
  • Методите могат да променят полета
  • Иметое подчертано, за да посочи членството в класификатора, в противен случай обхватът се приема за обхват по подразбиране.

    Връзката е специален тип логическа връзка между обекти, показана в диаграми на класове и обекти. UML има следните видове връзки:

    Връзки на клас обект

    Пристрастяване

    Зависимостта [en] обозначава връзка между класове, така че промяна в спецификацията на класа доставчик може да повлияе на работата на зависимия клас, но не и обратното.

    Асоциация

    Асоциацияпоказва, че обекти от един обект (клас) са свързани с обекти от друг обект по такъв начин, че можете да преминавате от обекти от един клас към друг. Това е общ случай на композиция и агрегация.

    Например класът Person и класът School имат асоциация, тъй като човек може да учи в училище. Една асоциация може да получи името „проучва в“.

    Двойните асоциации са представени от линия без стрелки в краищата, свързваща два класови блока. Асоциациите от по-висока степен имат повече от два края и са представени от линии, единият край на които отива към блока на класа, а другият към общия диамант. В изгледа за еднопосочна асоциация се добавя стрелка, за да посочи посоката на асоциацията.

    Една асоциация може да бъде наименувана и роли, връзки, индикатори, множители, видимост или други свойства могат да бъдат етикетирани в краищата на реда, който я представлява.

    Агрегациятаевид асоциация в отношенията между цялото и неговите части. Като тип асоциация може да се наименува агрегиране. Една релация на агрегиране не може да включва повече от два класа (контейнер и съдържание).

    Агрегираневъзниква, когато един клас е колекция или контейнер от други. Освен това, по подразбиране, агрегирането се наричаагрегиране по препратка, т.е. когато животът на съдържащите се класове не зависи от живота на съдържащия клас. Ако контейнерът е унищожен, то съдържанието му не е.

    Графично агрегирането е представено от празен диамант в поле за клас и линия от този диамант до съдържащия клас.

    Състав

    Съставе по-строг вариант на агрегиране. Известно също като агрегиране по стойност.

    Композициятаима твърда зависимост от продължителността на живота на екземплярите на клас контейнер и екземплярите на съдържащия се клас. Ако контейнерът бъде унищожен, тогава цялото му съдържание също ще бъде унищожено.

    Графично представен като агрегация, но със запълнен диамант.

    Разлики между състав и агрегация

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

    Класови взаимоотношения

    Генерализация (наследяване)

    Обобщението показва, че единият от двата свързани класа (подтип) е частна форма на другия (супертип), което се наричаобобщениена първия. На практика това означава, че всеки екземпляр на подтип също е такъвсупертипов екземпляр. Например: животните са супертип на бозайници, които от своя страна са супертип на примати и т.н. Тази връзка се описва най-лесно с израза „А е Б“ (приматите са бозайници, бозайниците са животни).

    Графично обобщението е представено чрез линия с празен триъгълник в супертипа.

    Обобщението е известно също като наследство или връзка "е" (или връзка "е").

    Внедряване

    Внедряването е връзка между два елемента на модела, където един елемент (клиент) прилага поведението, определено от другия (доставчик). Реализацията е отношение цяло-част. Графично изпълнението е представено по същия начин като наследяването, но с пунктирана линия.

    Доставчикът обикновено е абстрактен клас или интерфейсен клас.

    Обща връзка

    Пристрастяване

    Зависимостта е слаба форма на връзка на използване, при която промяна в спецификацията на едното води до промяна в другото, без непременно да бъде обърнато. Възниква, когато даден обект се появи, например, под формата на параметър или локална променлива.

    Графично представен с пунктирана стрелка, преминаваща от зависимия елемент към този, от който зависи.

    Има няколко именувани варианта.

    Зависимостта може да бъде между екземпляри, класове или екземпляр и клас.

    Усъвършенстване на взаимоотношенията

    Сила на връзката (множество)

    Кардиналността на релацията (множител) означава броя на връзките между всеки екземпляр на класа (обект) в началото на реда с екземпляра на класа в неговия край. Има следните типични случаи:

    ">