Besprechung Blatt 5

Objektorientierte Programmierung

Unified Modeling Language (UML)

Vorbereitung Blatt 6

Algorithmen und Datenstrukturen 06 Stefan Ploner

31. Mai 2012

Algorithmen und Datenstrukturen 06

Stefan Ploner

Besprechung Blatt 5

Objektorientierte Programmierung

Unified Modeling Language (UML)

Vorbereitung Blatt 6

1 Besprechung Blatt 5

Fragen 2 Objektorientierte Programmierung

Allgemein Sichtbarkeit Konstanten 3 Unified Modeling Language (UML)

Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung Blatt 6

Anmerkungen

Algorithmen und Datenstrukturen 06

Stefan Ploner

Besprechung Blatt 5

Objektorientierte Programmierung

Unified Modeling Language (UML)

Vorbereitung Blatt 6

Fragen

Fragen zu Blatt 5?

Algorithmen und Datenstrukturen 06

Stefan Ploner

Besprechung Blatt 5

Objektorientierte Programmierung

Unified Modeling Language (UML)

Vorbereitung Blatt 6

Allgemein

Warum Klassen?

¨ • umso mehr (unstrukturierter) Code, desto weniger Uberblick ⇒ Projekte aus u ¨berschaubaren Klassen zusammensetzen • beim Verwenden einer Klasse interne Umsetzung ausblenden • beim Erstellen einer Klasse externen Code ausblenden • Sp¨ atere Korrekturen ohne detaillierter Kenntnis des gesamten

Programms m¨oglich

Algorithmen und Datenstrukturen 06

Stefan Ploner

Besprechung Blatt 5

Objektorientierte Programmierung

Unified Modeling Language (UML)

Vorbereitung Blatt 6

Allgemein

Bestandteile einer Klasse

1

Variablen

2

Methoden

3

Konstruktoren

Wie h¨angt das zusammen?

Algorithmen und Datenstrukturen 06

Stefan Ploner

Besprechung Blatt 5

Objektorientierte Programmierung

Unified Modeling Language (UML)

Vorbereitung Blatt 6

Allgemein

Zugeh¨origkeit zu Klasse oder Instanz

• Zuordnung Instanz → Klasse ist eindeutig (genau eine Klasse) • Zuordnung Klasse → Instanz nicht (beliebig viele Instanzen) • statische Variablen geh¨ oren zur Klasse

¨ → zur Ubersicht [Klasse].statischeVariable verwenden! Algorithmen und Datenstrukturen 06

Stefan Ploner

Besprechung Blatt 5

Objektorientierte Programmierung

Unified Modeling Language (UML)

Vorbereitung Blatt 6

Allgemein

Zugeh¨origkeit zu Klasse oder Instanz • static: Klassenzugeh¨ orig • sonst: Instanzzugeh¨ orig (Instanzeigenschaften) • Instanzmethoden k¨ onnen auf statische Variablen und

Methoden zugreifen. (eindeutig) • Aber nicht umgekehrt!

Beispiele f¨ ur Variablen: • Instanzz¨ ahler → static • Objekteigenschaften → instance • Konstanten → static

Algorithmen und Datenstrukturen 06

Stefan Ploner

Besprechung Blatt 5

Objektorientierte Programmierung

Unified Modeling Language (UML)

Vorbereitung Blatt 6

Allgemein

Initialisierung, das new-Schl¨usselwort • Klassen werden mit ihren statischen Variablen direkt beim

Programmstart angelegt. ⇒ Sie k¨onnen auch dann aufgerufen werden, wenn keine Instanz existiert (main-Methode, Math-Klasse, ...) • Instanzen m¨ ussen w¨ahrend der Ausf¨ uhrung erstellt werden

class Beispiel { public static void main(String[] args) { // Neue Instanz der Klasse Beispiel erstellen Beispiel b = new Beispiel(); } } Mit dem new-Schl¨ usselwort wird auch ein Konstruktor aufgerufen. Algorithmen und Datenstrukturen 06

Stefan Ploner

Besprechung Blatt 5

Objektorientierte Programmierung

Unified Modeling Language (UML)

Vorbereitung Blatt 6

Allgemein

Konstruktoren • Ist kein Konstruktor im Code vorhanden, ist automatisch ein

public-zugreifbarer, parameterloser Konstruktor verf¨ ugbar • Sobald irgendein Konstruktor geschrieben wird, ist der

automatische nicht mehr verf¨ ugbar! (Man kann ihn nat¨ urlich wieder von Hand hinzuf¨ ugen) class Beispiel { // so sieht der default-Konstruktor aus: public Beispiel() { } } • Konstruktoren k¨ onnen auch private sein! z.B. Math Algorithmen und Datenstrukturen 06

Stefan Ploner

Besprechung Blatt 5

Objektorientierte Programmierung

Unified Modeling Language (UML)

Vorbereitung Blatt 6

Sichtbarkeit

Sichtbarkeitsmodifikatoren • Sch¨ utzen Klassen vor ungewollten Eingriffen • meist interessiert der innere Aufbau gar nicht

private default protected public

Klasse + + + +

Package + + +

Unterklassen + +

alle +

• gesch¨ utzte Variablen k¨ onnen m¨ oglicherweise u ¨ber ¨offentliche

Getter und Setter doch erreicht werden • diese erm¨ oglichen kontrollierten Zugriff und Wertebereiche

Algorithmen und Datenstrukturen 06

Stefan Ploner

Besprechung Blatt 5

Objektorientierte Programmierung

Unified Modeling Language (UML)

Vorbereitung Blatt 6

Konstanten

Konstanten • Keyword final vor den Variablennamen • zum Sicherstellen (oder Klarstellen) der Unver¨ anderlichkeit • nur einmal zuweisbar • final-Instanzvariablen m¨ ussen am Ende jedes Konstruktors

initialisiert sein (bei der Deklaration oder im Konstruktor) • bei final-Referenzen ist nur die Referenz konstant, nicht das

referenzierte Objekt! Anmerkung: Das Keyword final existiert auch bei Methoden und Klassen

Algorithmen und Datenstrukturen 06

Stefan Ploner

Besprechung Blatt 5

Objektorientierte Programmierung

Unified Modeling Language (UML)

Vorbereitung Blatt 6

Klassendiagramme

Aufbau einer “Klassenbox” Klassenname Variablen Methoden Stereotypen (mehr dazu n¨achste Woche): • Interface • Abstrakte Klasse

Abstrakte Klassen / Methoden k¨ onnen auch durch kursiv -schreiben des Namens verdeutlicht werden.

Algorithmen und Datenstrukturen 06

Stefan Ploner

Besprechung Blatt 5

Objektorientierte Programmierung

Unified Modeling Language (UML)

Vorbereitung Blatt 6

Klassendiagramme

Inhalt von Klassen UML-Darstellung var : final float blubb() bla(blubb : int) : int

Repr¨ asentiert Variable Funktion Funktion mit Parameter und R¨ uckgabetyp

Kuh - milch : float + melken() : float + schlachten() : void

Algorithmen und Datenstrukturen 06

Stefan Ploner

Besprechung Blatt 5

Objektorientierte Programmierung

Unified Modeling Language (UML)

Vorbereitung Blatt 6

Klassendiagramme

(Sichtbarkeits-)Modifikatoren in UML-Diagrammen Modifikator private default protected public final abstract static instanz

UML-Repr¨ asentation (nichts) # + (beim Typ dazuschreiben) kursiv unterstrichen (nicht unterstrichen)

Bei final-Funktionen ohne R¨ uckgabewert final void verwenden

Algorithmen und Datenstrukturen 06

Stefan Ploner

Besprechung Blatt 5

Objektorientierte Programmierung

Unified Modeling Language (UML)

Vorbereitung Blatt 6

Klassendiagramme

Assoziationen 3 Typen: 1

(normale) Assoziation (Linie): normale Beziehung

2

Aggregation (unausgef¨ ullte Raute beim Beh¨alter): Teil-Ganzes-Beziehung (Teil kann auch unabh¨angig existieren)

3

Komposition (ausgef¨ ullte Raute beim Beh¨alter): strenge Teil-Ganzes-Beziehung (immer genau ein Beh¨alter, nicht null)

Beispiele: • Assoziation: Beziehung zwischen Konto und Kunde • Aggregation: Ein Student ist Teil einer Vorlesung - kann aber

auch ohne diese existieren • Komposition: Raum ist immer Bestandteil von genau einem

Geb¨aude, Geb¨aude weg ⇒ Raum auch weg Algorithmen und Datenstrukturen 06

Stefan Ploner

Besprechung Blatt 5

Objektorientierte Programmierung

Unified Modeling Language (UML)

Vorbereitung Blatt 6

Klassendiagramme

Assoziationen Konto -konto

-kunde

Kunde

Vorlesung -vorlesung

-student

Student

Gebaeude -gebaeude

-raum

Raum

Variablen von Typen, die im Diagramm als Klasse auftauchen, werden an der entsprechenden Assoziation notiert ⇒ Die Variable, mit der die Klasse referenziert wird, an die Klasse. Die in der Klasse enthaltenen Variablen stehen am anderen Ende! Algorithmen und Datenstrukturen 06

Stefan Ploner

Besprechung Blatt 5

Objektorientierte Programmierung

Unified Modeling Language (UML)

Vorbereitung Blatt 6

Klassendiagramme

Gerichtete Assoziationen Mitgliederliste

Mitglied

• Enth¨ alt eine Klasse eine Referenzvariable (oder Liste) zum

assoziierten Objekt, ist die Assoziation in dieser Richtung navigierbar • navigierbar in eine Richtung: unidirektional

⇒ Pfeilspitze zur referenzierten Klasse • navigierbar in beide Richtungen: bidirektional

⇒ Pfeilspitzen werden weggelassen

Algorithmen und Datenstrukturen 06

Stefan Ploner

Besprechung Blatt 5

Objektorientierte Programmierung

Unified Modeling Language (UML)

Vorbereitung Blatt 6

Klassendiagramme

Multiplizit¨aten

• an Assoziationen werden auch die Multiplizit¨ aten angegeben • diese geben an, wie viele Objekte einer Beziehung zugeordnet

werden (und daher in der anderen Klasse gespeichert werden) • Darstellung x..y ⇒ x Unter-, y Obergrenze; * ⇒ beliebig

Algorithmen und Datenstrukturen 06

Stefan Ploner

Besprechung Blatt 5

Objektorientierte Programmierung

Unified Modeling Language (UML)

Vorbereitung Blatt 6

Klassendiagramme

Multiplizit¨aten

Konto 0..* -konto

1 -kunde

Kunde

Vorlesung 0..*

-vorlesung

1..* -student

Student

Gebaeude 1

-gebaeude

1..* -raum

Raum

• navigierbare Beziehungen werden in Java zu Variablen • f¨ ur Kardinalit¨aten >1 ben¨ otigt man Arrays oder Listenklassen

Algorithmen und Datenstrukturen 06

Stefan Ploner

Besprechung Blatt 5

Objektorientierte Programmierung

Unified Modeling Language (UML)

Vorbereitung Blatt 6

Anwendungsfalldiagramme

Komponenten eines Anwendungsfalldiagramms

Systemkontext Anwendungsfall Akteur

Merke: Menschliche Akteure links, Systemkomponenten rechts

Algorithmen und Datenstrukturen 06

Stefan Ploner

Besprechung Blatt 5

Objektorientierte Programmierung

Unified Modeling Language (UML)

Vorbereitung Blatt 6

Anwendungsfalldiagramme

Beispiel: Flughafen Flugbuchung Buchen Kunde Stornieren

Administrieren Kundenbetreuer

Algorithmen und Datenstrukturen 06

Buchungssystem

Stefan Ploner

Besprechung Blatt 5

Objektorientierte Programmierung

Unified Modeling Language (UML)

Vorbereitung Blatt 6

Anmerkungen

UML-Tools und -Dokumente Erstellen von UML-Diagrammen • Dia (live.gnome.org/Dia, im CIP installiert) • Google Text & Tabellen (docs.google.com) • Papyrus UML (eclipse.org/papyrus)

N¨ utzlich, da Boxen noch verschoben werden k¨ onnen! Dokumentation des UML-Standards • de.wikipedia.org/wiki/Unified Modeling Language • uml.org

Algorithmen und Datenstrukturen 06

Stefan Ploner

Besprechung Blatt 5

Objektorientierte Programmierung

Unified Modeling Language (UML)

Vorbereitung Blatt 6

Anmerkungen

• Zips werden nicht auf unerlaubte Zeichen gepr¨ uft! • Sofern nicht anders verlangt, d¨ urfen Instanzvariablen

verwendet werden! • Trotzdem bitte nur dann, wenn sie auch n¨ otig sind

Algorithmen und Datenstrukturen 06

Stefan Ploner