¨ • 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!
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
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
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
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