<sub class="descriptionSection">02-04-2025 02:00:pm // #Tag // [[Programmierung]]</sub> ____ Die **U**nified **M**odelling **L**anguage wird genutzt um komplexe Sachverhalte als Bilder darzustellen und zu dokumentieren. In Java wird hauptsächlich das UML-Klassen Diagramm verwendet, es gibt allerdings auch andere Diagramm arten. ## Klassen Eine Klasse in UML wird durch ein Rechteck dargestellt, welches als Überschrift den Klassen namen trägt und zwei Abschnitte, jeweils für Felder und Methoden hat. ![[../../Assets/Pasted image 20250402141121.png]] ### Extenden von Klassen Eine Klasse wird extended in dem ein Solider Pfeil von der "Child Class" zur "Parent Class" geht: ```mermaid classDiagram class Person{ + name:string + birthYear:Date + getName():string + Person() } class Child{ - height: double + getHeight():double } Child --|> Person ``` ### Interfaces Eine Klasse deklariert das sie ein Interface implementiert in dem ein gestrichelter Pfeil von dem Interface zur Klasse gemalt wird: ```mermaid classDiagram class Person{ + name:string + birthYear:Date + getName():string + Person() } class Child{ - height: double + getHeight():double } class Human{ + name:string + getName():string } <<Interface>> Human Child --|> Person Person ..|> Human ``` ### Abstract Classes Abstrakte Klassen werden Definiert und wie normale Klassen extended: ```mermaid classDiagram class Person{ + name:string + birthYear:Date + getName() string* + Person() } <<Abstract>> Person class Child{ - height: double + getHeight():double } class Adult{ - height: double + getHeight():double } class Human{ + name:string + getName():string } <<Interface>> Human Child --|> Person Adult --|> Person Person ..|> Human ``` > [!NOTE] Abstrakte Methoden > Abstrakte Methoden werden in dieser Art von Diagramm als Kursiv angezeigt, normalerweise definiert man sie aber so in einem UML Diagram: > `methodName(){abstract}` ## Pfeiltypen und bedeutungen ### Ist-ein beziehung Eine Ist-ein beziehung beschreibt eine Klasse mit Vererbung: ![[../../Assets/Pasted image 20250402144902.png]] Beispiel: ```mermaid classDiagram class a class b a --|>b ``` A erbt von B ### HAT EIN Beziehung Eine HAT EIn Beziehung beschreibt das eine Klasse eine Schnittstelle verwendet ### IMPLEMENTS Beziehung Eine Implements Beziehung wird genutzt um zu beschreieben das eine Klasse eine Schnittstelle implementiert: ```mermaid classDiagram class a <<interface>> a class b b ..|> a ``` ```mermaid classDiagram class Auto{ -tankvolumen:double = 70 -tankinhalt:double = 7.0 -verbrauchPro100km:double = 7.0 +Auto() +getTankvolumen() double +getVerbrauchPro100km() double +getTankinhalt() double +istErreichbar(kilometer:double) boolean +tanken(liter:double) +fahren(strekckeKM:double) double } ``` ```mermaid classDiagram Person <|-- Lehrkraft Person <|-- Schüler Schüler <|-- Teilzeitschüler Schüler <|-- Vollzeitschüler class Person{ - Name:string - Adresse:string - Jahrgang:Date + Person(Name:string, Adresse:string, Jahrgang:String) } class Schüler{ - Schulform } class Teilzeitschüler{ - Arbeitgeber } class Vollzeitschüler{ } class Lehrkraft{ } ``` ```mermaid classDiagram class Rechteck{ -x: double -y: double -seteinlaengeA: double -seitenlaengeB: double +getter() double +setter() void +getFlaeche() double } Rechteck <|-- Quadrat class Quadrat{ -seitenlaengeA: double +setA() void +getFlaeche() double #Nur mit seitenlaengeA } ``` ```mermaid classDiagram class Person{ -vorname:string -nachname:string +ausgeben() void } class Dozent class Student{ -matrikelNr:int +ausgeben() void } class Promotionsstudent{ -doktorVater:string +ausgeben() void } Person<|--Student Person<|--Dozent Student<|--Promotionsstudent ```