#Diagramm Definition: Das [UML Klassendiagramm](https://de.wikipedia.org/wiki/Klassendiagramm) ist ein Strukturdiagramm der [[UML]] und dient zur grafischen Darstellung von von [Klassen](https://de.wikipedia.org/wiki/Klasse_(Objektorientierung)) sowie deren Beziehungen. ## Table of Contents - [[#Schema|Schema]] - [[#Schema#Klassenname|Klassenname]] - [[#Schema#Variablenname|Variablenname]] - [[#Schema#Variablentyp|Variablentyp]] - [[#Schema#Sichtbarkeit|Sichtbarkeit]] - [[#Schema#Konstruktor|Konstruktor]] - [[#Schema#Attribute|Attribute]] - [[#Schema#Methoden|Methoden]] - [[#Vererbung|Vererbung]] - [[#Vererbung#protected ( )|protected (#)]] --- ### Schema ![[UML-Klassendiagramm-Schema.png]] #### Klassenname Der Klassenname ist der Name, welchen diese Klasse im Programm erhalten soll. In Java sollten Klassen immer mit einem Großbuchstaben beginnen. Beispiel zu obigem Schema: ```Java title:main.java public class Auto ``` #### Variablenname Der Variablenname ist der Name, welchen diese Variable im Programm erhalten soll. In Java sollten Variablen immer mit einem Kleinbuchstaben beginnen. #### Variablentyp Der Variablenname ist der Typ, von welchem diese Variable ist. #### Sichtbarkeit Die Sichtbarkeit beschreibt die Sichtbarkeit von Variablen und Methoden. Dabei steht ein `+`, `-` oder `#` für die Sichtbarkeiten *public, private und protected*. | UML Sichtbarkeit | Java Sichtbarkeit | | :--------------: | ------------------------------------------------ | | + | public | | - | private | | # | [[UML Klassendiagramm#protected ( )\|protected]] | #### Konstruktor Der Konstruktor ist eine spezielle Methode, welche zur Bildung der Klasse dient. Dieser muss immer genau <u>den Namen der Klasse</u> haben. Ein Konstruktor ist immer `public` und hat keinen Rückgabewert (auch nicht void). Mehrere Konstruktoren sind ebenfalls möglich. Beispiel zu obigem Schema: ```Java title:main.java public Auto() { kmStand = 0.0; System.out.println("Ein neues Auto") } ``` #### Attribute Die Attribute sind alle Variablen, welche im oberen Teil des UML Klassendiagramms genannt werden. Diese Attribute haben meist die [[UML Klassendiagramm#Sichtbarkeit|Sichtbarkeit]] `private` Beispiel zu obigem Schema: ```Java title:main.java private String marke: private double kmStand; ``` #### Methoden Die Methoden sind alle Einträge, welche im unteren Teil des UML Klassendiagramms genannt werden, sowie der [[UML Klassendiagramm#Konstruktor|Konstruktor]]. ### Vererbung Durch das Konzept der Vererbung ist es möglich, Attribute und Methoden einer Oberklasse (auch Superklasse oder Basisklasse genannt), an mehrere, speziellere Unterklassen zu vererben. Die Unterklassen (auch Subklassen genannt) besitzen dann automatisch alle Attribute und Methoden der Oberklasse, die nicht auf `private` gesetzt sind. Im UML-Klassendiagramm wird die Vererbungsbeziehung (auch is-a-Beziehung genannt) durch einen Pfeil mit nicht ausgefüllter Spitze dargestellt, der von der Unter- zur Oberklasse zeigt. #### protected (#) Die [[UML Klassendiagramm#Sichtbarkeit|Sichtbarkeit]] protected (gekennzeichnet durch `#`) bewirkt, dass Attribute oder Methoden sowohl in der definierenden Klasse selbst als auch in all ihren Unterklassen sichtbar sind. Alle anderen Klassen können nicht auf sie zugreifen. Bei `public` könnten stattdessen alle Klassen auf diese zugreifen und bei `private` nur die definierende Klasse.