• Keine Ergebnisse gefunden

Algorithmen und Datenstrukturen 07

N/A
N/A
Protected

Academic year: 2022

Aktie "Algorithmen und Datenstrukturen 07"

Copied!
30
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Algorithmen und Datenstrukturen 07

Stefan Ploner

5. Dezember 2011

(2)

Besprechung Blatt 6 Vererbung Unified Modeling Language (UML) Vorbereitung Blatt 7

1 Besprechung Blatt 6 Fragen

2 Vererbung Allgemein abstract Interfaces

3 Unified Modeling Language (UML) Ablaufdiagramme

Klassendiagramme

Anwendungsfalldiagramme 4 Vorbereitung Blatt 7

Anmerkungen

Algorithmen und Datenstrukturen 07 Stefan Ploner

(3)

Fragen zu Blatt 6?

(4)

Besprechung Blatt 6 Vererbung Unified Modeling Language (UML) Vorbereitung Blatt 7 Allgemein

Allgemein

in Java erben alle Klassen von der Klasse Object

Schl¨usselwort extends

class A extends Object { ... } class B extends A { ... }

da alle Klassen, wenn nicht anders angegeben, von Object erben, wirdextends Object weggelassen

class A { ... }

Erben von mehreren Klassen in Java nicht m¨oglich

Algorithmen und Datenstrukturen 07 Stefan Ploner

(5)

Unterklassen k¨onnen auf

alle Attribute und Methoden der Klasse selbst und

alle sichtbaren Attribute und Methoden der Oberklassen zugreifen

Oberklassen k¨onnen

nur auf Attribute und Methoden der Oberklasse zugreifen

die Oberklasse weiß nicht, ob und wieviele Unterklassen existieren ⇒ entsprechend keinerlei Zugriff

(6)

Besprechung Blatt 6 Vererbung Unified Modeling Language (UML) Vorbereitung Blatt 7 Allgemein

class A {

public String name;

private String blubb;

}

class B extends A { public int zahl;

public void toString() {

System.out.println(name + ": " + zahl);

} }

in B.toString() kann blubbnicht ausgegeben werden, da die Variable dort nicht sichtbar ist

die toString()-Funktion w¨urde in Klasse A nicht funktionieren, da zahl dort nicht zugreifbar ist

Algorithmen und Datenstrukturen 07 Stefan Ploner

(7)

Konstruktoren

Konstruktoren werden nicht vererbt

Konstruktoren rufen automatisch den parameterlosen Konstruktor der Oberklasse auf

wenn dieser nicht existiert, muss mit superein bestimmter Konstruktor aufgerufen werden

(8)

Besprechung Blatt 6 Vererbung Unified Modeling Language (UML) Vorbereitung Blatt 7 Allgemein

class Fahrzeug { protected speed;

public Fahrzeug(int speed) { this.speed = speed;

} }

class Auto extends Fahrzeug { public void Auto(int speed) {

// super-Aufruf ist immer die erste Anweisung super(speed);

// setzt oft private Variablen der Oberklasse ...

} }

Algorithmen und Datenstrukturen 07 Stefan Ploner

(9)

Type-Casting

public static void main(String[] args) { Fahrzeug f1 = new Fahrzeug();

Auto a1 = new Auto();

Fahrzeug f2 = new Auto(); // impliziter Cast // Auto ist ein Fahrzeug - ok

Auto a2 = new Fahrzeug(); // Fehler: Oberklasse // kann nicht in Unterklasse konvertiert werden Auto a3 = (Auto)f2; // expliziter Cast

// Fahrzeuge sind nicht zwangslaeufig Autos Auto a4 = (Auto)f1; // ClassCastException // f1 ist kein Auto, im Prinzip wie a2 }

(10)

Besprechung Blatt 6 Vererbung Unified Modeling Language (UML) Vorbereitung Blatt 7 Allgemein

Statischer und dynamischer Typ

statischer Typ = Variablentyp

dynamischer Typ = Typ der Referenzierten Instanz public static void main(String[] args) {

Fahrzeug f1 = new Fahrzeug();

Auto a1 = new Auto();

// a1: statischer und dynamischer Typ Auto Fahrzeug f2 = new Auto(); // impliziter Cast // f2: statisch: Fahrzeug, dynamisch: Auto Auto a3 = (Auto)f2; // expliziter Cast // a3: statisch und dynamsich Auto }

“return this;” ?

Algorithmen und Datenstrukturen 07 Stefan Ploner

(11)

Uberladen (in Java: bei allen Methoden m¨¨ oglich)

ein Methodenname, mehrere Parameter

hat nichts mit Vererbung zu tun Uberschreiben (in Java: Instanzmethoden)¨

Methode in einer Unterklasse mit selbem Namen und Signatur wie eine Methode der Oberklasse

Methodenaufruf nach dynamischem Typ Verdecken (in Java: Statische Methoden, Attribute)

Methode in einer Unterklasse mit selbem Namen und Signatur wie eine Methode der Oberklasse

Methodenaufruf nach statischem Typ

(12)

Besprechung Blatt 6 Vererbung Unified Modeling Language (UML) Vorbereitung Blatt 7 abstract

abstract

abstrakte Klassen k¨onnen nicht instanziiert werden

erbende Klassen m¨ussen auch abstract sein oder alle abstrakten Methoden ¨uberschreiben

Fahrzeug fahren() : void

Auto fahren() : void

Boot fahren() : void

Flugzeug fahren() : void

die Methode fahren() ist in Auto, Boot und Flugzeug anders, daher ist eine Definition in Fahrzeug nicht sinnvoll

nur Fahrzeuge, die fahren k¨onnen (die die Methode fahren

¨

uberschrieben haben), k¨onnen instanziiert werden

Algorithmen und Datenstrukturen 07 Stefan Ploner

(13)

abstract class Fahrzeug {

private Fahrzeug[] alleFahrzeuge;

protected speed;

public abstract void fahren();

public void alleFahren() {

for (Fahrzeug f : alleFahrzeuge)

f.fahren(); // alle Fahrzeugtypen!

} }

class Auto extends Fahrzeug { public void fahren() {

// brumm brumm }

}

(14)

Besprechung Blatt 6 Vererbung Unified Modeling Language (UML) Vorbereitung Blatt 7 Interfaces

Interfaces

Interfaces bestehen aus Methodensignaturen

Klassen k¨onnen beliebig viele Interfaces implementieren

alle Interfacemethoden m¨ussen in der Klasse vorhanden sein

Interfacemethoden sind immer public interface Comparable {

int compareTo(Object o);

}

class Datum implements Comparable {

public int compareTo(Object o) { ... } }

Algorithmen und Datenstrukturen 07 Stefan Ploner

(15)

Interfaces

Klassen k¨onnen auf den “Interface-Typ” gecastet werden

dann k¨onnen nur die Instanz Methoden ausgef¨uhrt werden

Anwendung:

viele Sortierfunktionen verwenden das Comparable Interface

sie k¨onnen dadurch alle Klassen sortieren, die dieses Interface implementieren -ohne deren Inhalt zu kennen!

(16)
(17)

Bestandteile eines Flussdiagramms

1 abgerundetes Rechteck: Startpunkt und Endpunkte

2 Rechteck: Anweisungen

3 Raute: Bedingungen - die ausgehenden Pfeile m¨ussen mit dem entsprechendem Fall beschriftet sein

Die Bestandteile werden mit Pfeilen in Flussrichtung verbunden.

Schleifen in Anwendungsfalldiagrammen:

ein Zweig der Bedingung f¨uhrt nach Anweisungen (Schleifeninhalt) wieder zur¨uck zur Bedingung

der andere Zweig f¨uhrt zu den Anweisungen nach der Schleife

(18)

Besprechung Blatt 6 Vererbung Unified Modeling Language (UML) Vorbereitung Blatt 7 Klassendiagramme

Aufbau einer “Klassenbox”

<<stereotyp>>

Klassenname Variablen Methoden

Stereotypen:

<<interface>> Interface

<<abstract>> Abstrakte Klasse

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

Algorithmen und Datenstrukturen 07 Stefan Ploner

(19)

Inhalt von Klassen

UML-Darstellung Repr¨asentiert var : final float Variable

blubb() Funktion

bla(blubb : int) : int Funktion mit Parameter und R¨uckgabetyp

<<abstract>>

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

(20)

Besprechung Blatt 6 Vererbung Unified Modeling Language (UML) Vorbereitung Blatt 7 Klassendiagramme

Sichtbarkeitsmodifikatoren in UML-Diagrammen

Modifikator UML-Repr¨asentation

private -

default (nichts) protected #

public +

final (beim Typ dazuschreiben) abstract kursiv

static unterstrichen

instanz (nicht unterstrichen)

Bei final-Funktionen ohne R¨uckgabewert final void verwenden

Algorithmen und Datenstrukturen 07 Stefan Ploner

(21)

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

(22)

Besprechung Blatt 6 Vererbung Unified Modeling Language (UML) Vorbereitung Blatt 7 Klassendiagramme

Assoziationen

Konto

Kunde

Vorlesung

Student

Gebaeude

Raum

-kunde -konto

-student -vorlesung

-raum -gebaeude

Bei Referenztypen werden Attribute nicht in die Klasse geschrieben

⇒Variable, mit der die Klasse referenziert wird, an die Klasse Die Variablen, die in der Klasse enthalten sind, stehen am anderen Ende!

Algorithmen und Datenstrukturen 07 Stefan Ploner

(23)

Multiplizit¨ aten

an Assoziationen werden neben den beteiligten Klassen ihre 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

(24)

Besprechung Blatt 6 Vererbung Unified Modeling Language (UML) Vorbereitung Blatt 7 Klassendiagramme

Multiplizit¨ aten

Konto

Kunde

Vorlesung

Student

Gebaeude

Raum

-kunde 1

-konto 0..*

-student 1..*

-vorlesung 0..*

-raum 1..*

-gebaeude 1

Beziehungen werden in Java zu Attributen (Variablen)

f¨ur Kardinalit¨aten>1 ben¨otigt man Arrays oder Listenklassen

Algorithmen und Datenstrukturen 07 Stefan Ploner

(25)

Vererbungsbeziehungen

normale Vererbung (extends): Durchgezogene Linie mit unausgemalter Dreiecksspitze bei Oberklasse

“implements”-Beziehung: Gestrichelte Linie mit unausgemalter Dreiecksspitze bei Oberklasse

(26)

Besprechung Blatt 6 Vererbung Unified Modeling Language (UML) Vorbereitung Blatt 7 Klassendiagramme

Beispiel: Bauernhof

EierLegend eier : int

eierSammeln() : int

MilchErzeugend milch : float

melken() : float WolleGebend

wolle : double scheren() : double

«interface»

SchlachtVieh schlachten() : void

Huhn eierSammeln() : int schlachten() : void

Sau

schlachten() : void Kuh

melken() : float schlachten() : void

Schaf melken() : float schlachten() : void zaehlen() : int

Algorithmen und Datenstrukturen 07 Stefan Ploner

(27)

Beispiel: Bauernhof

EierLegend eier : int

eierSammeln() : int

MilchErzeugend milch : float

melken() : float WolleGebend

wolle : double scheren() : double

«interface»

SchlachtVieh schlachten() : void

Huhn eierSammeln() : int schlachten() : void

Sau

schlachten() : void Kuh

melken() : float schlachten() : void

Schaf melken() : float schlachten() : void zaehlen() : int

EierlegendeWollmilchsau melken() : float schlachten() : void eierSammeln() : int scheren() : double

(28)

Besprechung Blatt 6 Vererbung Unified Modeling Language (UML) Vorbereitung Blatt 7 Anwendungsfalldiagramme

Komponenten eines Anwendungsfalldiagramms

Akteur

Anwendungsfall Systemkontext

Anwendungsfall

Algorithmen und Datenstrukturen 07 Stefan Ploner

(29)

Beispiel: Flughafen

Kunde

Kundenbetreuer Buchungssystem

Buchen

Stornieren

Administrieren Flugbuchung

Buchen

Stornieren

Administrieren

(30)

Besprechung Blatt 6 Vererbung Unified Modeling Language (UML) Vorbereitung Blatt 7 Anmerkungen

UML-Tools und -Dokumente

Erstellen von UML-Diagrammen

Google Text & Tabellen (docs.google.com)

Dia (live.gnome.org/Dia)

Papyrus UML (eclipse.org/papyrus)

N¨utzlich, da Klassen noch verschoben werden k¨onnen!

Dokumentation des UML-Standards

de.wikipedia.org/wiki/Unified Modeling Language

uml.org

Algorithmen und Datenstrukturen 07 Stefan Ploner

Referenzen

ÄHNLICHE DOKUMENTE

Input The first line of the input contains the number n &lt; 10000 that represents the count of the numbers that are about to be converted to roman number representation... Output

By looking at the map, Sarah realizes that the mountain peaks are interconnected, in two ways: either there is a ski-trail that goes downhill from one mountain peak to the other, or

By looking at the map, Sarah realizes that the mountain peaks are interconnected, in two ways: either there is a ski-trail that goes downhill from one mountain peak to the other, or

Each line is either the message Not enough transactions or two numbers L and H in the form of “L - H” such that L is the bn/3c -th most valuable transaction and H is the most

Namely, every third insertion, we can add it to the min-heap, to make sure that it holds bn/3c elements as n grows, and every other transaction we insert it in the max-heap3.

cadmo.ethz.ch/education/lectures/HS18/DA/uebungen/AD18H9P1.RealCoins.zip The archive also contains additional test cases (which differ from the ones used for grading).. Importing

additional Java class is not allowed (with the exception of the already imported ones java.io. Assigning a channel i to company 0 in this modified instance corresponds to

Betrachten Sie den folgenden Algorithmus zum Aufbau eines max-Heaps aus einem beliebigen Array A... Erstellen beide Methoden den gleichen Heap, wenn sie mit dem gleichen Array