Skip to content

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 private deklariert
  • Zugriff erfolgt über public Methoden
  • 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: <> Belegbar

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

2. 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