Encapsulation & UML – 2026-02-11 (POG)¶
Encapsulation (Kapselung)¶
Definition:
Kapselung bedeutet, dass Attribute (Daten) und Methoden innerhalb einer Klasse gebündelt und vor direktem Zugriff von außen geschützt werden.
Der Zugriff erfolgt kontrolliert über definierte Schnittstellen (z. B. Getter und Setter).
Ziele der Kapselung¶
- Schutz der Datenintegrität
- Verhinderung unerlaubter Manipulation
- Trennung zwischen interner Logik und externer Nutzung
- Wartbarkeit und Erweiterbarkeit
Technische Umsetzung in Java¶
- Attribute werden in der Regel
privatedeklariert - Zugriff erfolgt über
publicMethoden - Validierungslogik wird typischerweise im Setter implementiert
Beispielhafte Logik:
Ein Raum darf keine negative Anzahl an Sitzplätzen haben → Prüfung im Setter.
Klassische Objektorientierung¶
Klassen¶
Eine Klasse ist eine Blaupause für Objekte.
Sie definiert:
- Attribute (Zustand)
- Methoden (Verhalten)
Beispiele:
Raum - Gebäude - Sitzanzahl - Belegungsstatus
Kurs - Name - Dauer - Dozent
Objekte sind konkrete Instanzen dieser Klassen.
UML (Unified Modeling Language)¶
UML ist eine standardisierte grafische Sprache zur Modellierung von Softwaresystemen.
Sie dient dazu: - Strukturen darzustellen - Abläufe zu visualisieren - Beziehungen zwischen Objekten zu zeigen - Systeme vor der Implementierung zu planen
Prüfungsrelevant: Diagrammtypen erkennen, lesen und interpretieren.
1. Klassendiagramm¶
Zeigt: - Klassen - Attribute - Methoden - Beziehungen - Multiplizitäten
classDiagram
class Raum {
-String gebaeude
-int sitze
-boolean belegt
+getSitze()
+setSitze(int sitze)
}
class Kurs {
-String name
-int dauer
-String dozent
}
Raum "1" <|-- "0..*" Kurs : beherbergt
Bedeutung¶
-
-= private : Das Attribut oder die Methode ist nur innerhalb derselben Klasse sichtbar. Von außen (auch von Unterklassen) kein direkter Zugriff. -
+= public : Öffentlich sichtbar. Kann von allen anderen Klassen aufgerufen oder verwendet werden. -
~= package : Sichtbar nur innerhalb desselben Pakets (Namespace). Außerhalb des Pakets kein Zugriff. -
#= protected : Sichtbar innerhalb der eigenen Klasse und in abgeleiteten Klassen (Vererbung). Von nicht-verwandten Klassen nicht zugreifbar. -
"1"zu"0..*"= 1:n-Beziehung
Eine Instanz der ersten Klasse kann mit null bis beliebig vielen Instanzen der zweiten Klasse verbunden sein.
Beispiel:
Ein Raum kann mehrere Kurse beherbergen.
Ein Kurs findet genau in einem Raum statt.
---¶
Interfaces¶
Ein Interface definiert einen Vertrag. Es beschreibt, welche Methoden eine Klasse bereitstellen muss, ohne deren Implementierung festzulegen.
Ein Interface enthält: - Methodensignaturen - keine konkrete Implementierung (Ausnahme: default-Methoden in Java) - keine Instanziierungsmöglichkeit
Zweck¶
- Abstraktion
- Polymorphie
- Entkopplung von Klassen
- Austauschbarkeit von Implementierungen
Beispiel:
Ein Interface Belegbar definiert:
- +belege()
- +istBelegt(): boolean
Unterschiedliche Klassen können dieses Interface implementieren,
z. B. Raum oder OnlineKurs.
Interface im UML-Klassendiagramm¶
Darstellungsmöglichkeiten:
1) Mit Stereotyp:
<
2) Mit „Lollipop“-Notation (Kreis-Symbol)
Implementierung: - Gestrichelte Linie - Hohles Dreieck zeigt auf das Interface
classDiagram
class Belegbar {
<<interface>>
+belege()
+istBelegt(): boolean
}
class Raum {
-boolean belegt
+belege()
+istBelegt(): boolean
}
Belegbar <|.. Raum
¶
classDiagram
class Belegbar {
<<interface>>
+belege()
+istBelegt(): boolean
}
class Raum {
-boolean belegt
+belege()
+istBelegt(): boolean
}
Belegbar <|.. Raum2. Aktivitätsdiagramm¶
Zeigt: - Prozessabläufe - Entscheidungen - Schleifen
graph TD
A[Start] --> B{Ist der Kurs voll?}
B -- Ja --> C[Warte auf freien Platz]
B -- Nein --> D[Kurs belegen]
C --> B
D --> E[Ende]
- Raute = Entscheidung
- Pfeile = Kontrollfluss
- Rücksprung = Schleife
3. Zustandsdiagramm¶
Zeigt: - Zustände eines Objekts - Übergänge - Ereignisse
stateDiagram
[*] --> Verfuegbar
Verfuegbar --> Belegt : Kurs belegt
Belegt --> Verfuegbar : Kurs beendet
Ein Raum kann: - verfügbar - belegt
sein. Ereignisse lösen Zustandswechsel aus.
4. Sequenzdiagramm¶
Zeigt: - Interaktionen zwischen Objekten - Zeitliche Reihenfolge - Nachrichtenfluss
sequenceDiagram
participant Student
participant Kurs
Student->>Kurs: Kurs belegen
Kurs-->>Student: Bestaetigung
- Objekte oben
- Zeit von oben nach unten
- Pfeile = Methodenaufrufe oder Rückgaben
Prüfungszusammenfassung (AP1)¶
Du solltest können:
- Encapsulation korrekt erklären
- Access Modifier zuordnen (
private,public,protected, package) - UML-Diagramme lesen und interpretieren
- Multiplizitäten verstehen (1, 0.., 1..)
- Sichtbarkeiten im Klassendiagramm korrekt deuten (
+,-,#,~) - Navigierbarkeit von Beziehungen erkennen (gerichtete Assoziationen)
- Strukturdiagramme von Ablaufdiagrammen unterscheiden
Wichtige UML-Konzepte:
Sichtbarkeiten
- + = public
- - = private
- # = protected
- ~ = package
Bestimmen, wer auf Attribute oder Methoden zugreifen darf.
Multiplizitäten
- 1 = genau ein Objekt
- 0..1 = optional
- 0..* = beliebig viele
- 1..* = mindestens eins
Beschreiben, wie viele Objekte in Beziehung stehen.
Navigierbarkeit
- Pfeilrichtung zeigt, welche Klasse die andere „kennt“.
- Beispiel: Raum --> Kurs bedeutet, dass Raum eine Referenz auf Kurs besitzt.
- Keine Pfeile = bidirektionale Assoziation.
Merksatz:
- Klassendiagramm = Struktur
- Aktivitätsdiagramm = Ablauf
- Zustandsdiagramm = Lebenszyklus
- Sequenzdiagramm = Kommunikation