• Keine Ergebnisse gefunden

42.1 Vervollständigung von Operationen

N/A
N/A
Protected

Academic year: 2021

Aktie "42.1 Vervollständigung von Operationen"

Copied!
7
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Softwaretechnologie, © Prof. Uwe Aßmann

Technische Universität Dresden, Fakultät Informatik 1

Objektorientierter Entwurf 42) Verfeinerung des

Klassenmodells

K

abra kadabra

abc xyz

K

abra (x:T1) T2 kadabra (y: T2): T1

abc: T1 xyz: T2

Version 11-0.1, 10.07.11

Prof. U. Aßmann, Softwaretechnologie 2

Objektorientierter Entwurf

(Object-Oriented Design, OOD)

1) Einführung in die objektorientierte Softwarearchitektur 1)Modularität und Geheimnisprinzip

2)Entwurfsmuster für Modularität

3)BCD-Architekturstil (3-tier architectures)

2) Verfeinerung des Entwurfsmodells zum Implementierungsmodell (Anreicherung von Klassendiagrammen) (42)

1)Verfeinerung von Operationen 2)Verfeinerung von Assoziationen 3)Verfeinerung von Vererbung 3) Verfeinerung von Lebenszyklen

1)Verfeinerung von verschiedenen Steuerungsmaschinen 4) Verfeinerung mit Object Fattening

5) Objektorientierte Rahmenwerke (frameworks) 6) Softwarearchitektur mit dem Quasar-Architekturstil

Softwaretechnologie, © Prof. Uwe Aßmann

Technische Universität Dresden, Fakultät Informatik 3

42.1 Vervollständigung von Operationen

Zum Selbststudium

Prof. U. Aßmann, Softwaretechnologie 4

Parameter und Datentypen für Operationen

Analysephase:

oft Operationsname ausreichend

ggf. Parameternamen ohne weitere Information

Entwurfsphase:

Parameter und Datentypen der Operationen genau festlegen

Zu einem Aktionsdiagramm (Statechart, Aktivitätsdiagramm) oder Interaktionsdiagramm (Sequenzdiagramm, Kommunikationsdiagramm) zuordnen

Implementierung:

Methodenrumpf schreiben

Beispiele (Klasse Besprechungsraum):

+ freienRaumSuchen

(plaetze: int, start: Date, dauer: int=60, raum: Besprechungsraum):

Besprechungsraum

– istFrei(beginn: Date, dauer: int):boolean + reservieren (für: Termin):boolean;

(2)

Prof. U. Aßmann, Softwaretechnologie 5

Beispiel OOP: Ausfüllen eines Methodenrumpfs in Java (1)

class Teambesprechung {

private Teammitglied[] teilnahme; ...

private boolean abstimmen (Hour beginn, int dauer) { boolean ok = true;

for (int i=0; i<teilnahme.length; i++) ok = ok &&

teilnahme[i].terminBestaetigen(beginn, dauer);

return ok;

}}

Teambesprechung Teammitglied

– abstimmen()

teilnahme2..*

+terminBestaetigen()

*

Operationen aus dem Analysemodell müssen in der Implementierung ausgefüllt werden

Prof. U. Aßmann, Softwaretechnologie 6

Beispiel Methodenrumpf (2)

class Teambesprechung {

private Teammitglied[] teilnahme; ...

private boolean abstimmen (Hour beginn, int dauer) ...

public Teambesprechung

(String titel, Hour beginn, int dauer, Teammitglied[] teilnehmer) {

... titel, beginn, dauer lokal speichern this.teilnahme = teilnehmer;

if (! abstimmen(beginn, dauer))

System.out.println("Termin bitte verschieben!");

else ...

} ...

}

Teambesprechung Teammitglied

– abstimmen()

teilnahme2..*

+terminBestaetigen()

*

Beispiel Methodenrumpf (3)

class Teammitglied { ...

private Teambesprechung[] teilnahme;

public boolean terminBestaetigen (Hour beginn,int dauer){

boolean konflikt = false;

int i = 0;

while (i < teilnahme.length && !konflikt) { if (teilnahme[i].inKonflikt(beginn, dauer)) konflikt = true;

else i++;

};

return !konflikt;

} ...

Teambesprechung Teammitglied

– abstimmen()

teilnahme2..*

+terminBestaetigen()

*

42.2 Verfeinerung von Assoziationen

Zum Selbststudium

(3)

Prof. U. Aßmann, Softwaretechnologie 9

Qualifizierte Assoziation

Definition: Eine Qualifikation (Qualifier) ist ein Attribut für eine Assoziation zwischen Klassen K1 und K2, durch das die Menge der zu einem K1-Objekt assoziierten K2-Objekte partitioniert wird.

Zweck der Qualifikation ist direkter Zugriff unter Vermeidung von Suche (Beschleunigung)

Notation:

K1 0..* K2

a 0..1

K1 K2

statt:

Hinweis: Qualifizierte Assoziationen werden von vielen UML-Werkzeugen nicht oder nur schlecht unterstützt.

Bedeutung vor allem im Zusammenhang mit Datenbanken (Indizes), aber auch mit geeigneten Datenstrukturen nach Java abbildbar.

Prof. U. Aßmann, Softwaretechnologie 10

Qualifizierte Assoziation: Beispiel (1)

Teambesprechung themen Termin

titel beginn

dauer

verschieben() {abstract}

raumFestlegen() einladen() absagen() verschieben()

{abstract}

Raum12.istFrei(start=04.05.02 10:00, dauer=60);

Veranstal- tungsort

0..1 0..*

Besprechungsraum raumNr kapazität reservieren()

freigeben() freienRaumSuchen()

istFrei()

führt zu einer Suche über alle assoziierten Teambesprechungen !

Prof. U. Aßmann, Softwaretechnologie 11

Qualifizierte Assoziation: Beispiel (2)

Teambesprechung themen Termin

titel beginn

dauer

verschieben() {abstract}

raumFestlegen() einladen() absagen() verschieben()

{abstract}

Raum12.istFrei(start=04.05.02 10:00, dauer=60);

Veranstal- tungsort

0..1 0..1

Besprechungsraum raumNr kapazität reservieren()

freigeben() freienRaumSuchen()

istFrei()

kann direkt nach Datum abfragen, ob eine Assoziation besteht beginn

wie bisher kleinere Multiplizität

Indizierter Zugriff (Qualifikation)

Prof. U. Aßmann, Softwaretechnologie 12

Realisierung einer qualifizierten Assoziation

r12: Besprechungsraum raumNr = "r12"

kapazität = 20 04.05.02 09:00

10.05.02 10:00 10.05.02 11:00 10.05.02 12:00 11.05.02 09:00 12.05.02 15:00 12.05.02 17:00

Teambesprechungs- Objekte

Direktzugriff z.B. durch:

Hashfunktion

(Berechnung des Indexwerts aus gegebenem Datum)

Sortierte Baumstruktur beginn

(4)

Prof. U. Aßmann, Softwaretechnologie 13

Geordnete und sortierte Assoziation

{ordered} an einem Assoziationsende:

Es besteht eine feste Reihenfolge, in der die assoziierten Objekte durchlaufen werden können (Sequenz).

Mehrfachvorkommen eines Objekts sind verboten

Keine Angabe an einem Assoziationsende:

Die assoziierten Objekte sind als Menge strukturiert.

Spezieller Einschränkungen als Annotationen möglich,

z.B. die Forderung nach Sortierung gemäß bestimmter Attribute:

Teammitglied 0..* Teilnahme 0..* Teambesprechung {ordered}

Teammitglied 0..* 0..* Teambesprechung Teilnehmer

{sorted}

{key=name}

{order=ascending}

Besprechungen {sorted}

{key=beginn}

{order = ascending}

Prof. U. Aßmann, Softwaretechnologie 14

Raumverwaltung – einzigeInstanz

* 1

freienRaumSuchen()

Bestand

{sorted} {key= kapazität}

Verwaltungsklassen (Materialbehälterklassen)

Teambesprechung themen Termin

titel beginn

dauer

verschieben() {abstract}

raumFestlegen() einladen() absagen() verschieben()

Besprechungsraum raumNr kapazität reservieren()

freigeben() istFrei() Veranstal-

tungsort 0..1

{abstract}

beginn 0..1

freienRaumSuchen()

Hat man eine Menge von Objekten, die verwaltet werden müssen, kann eine Verwaltungs- oder Materialbehälterklasse identifiziert werden

Identifikation von abgeleiteten (redundanten) Elemente

Definition Ein abgeleitetes Modellelement (z.B. Attribut, Assoziation) ist ein Modell-Element, das jederzeit aus anderen (nicht abgeleiteten) Elementen rekonstruiert werden kann.

Notation

/ Modellelement oder Modellelement {derived}

Beispiele:

Teambesprechung

Teammitglied Leitung

Teilnahme 1

*

2..*

... *

/ teilnehmeranzahl name / leiter

Abhängigkeitspfeil mit <<derive>>: Optionale Angabe des Ursprungselements einer Abhängigkeit anzugeben.

/ istInKonfl ikt 1

* <<derive>>

Detailinformation zu abgeleiteten Elementen

Zweck: Durch Ableitung kann Redundanz ausdem Model eliminiert werden, und das führt zu einer besseren Konsistenz

Man kann die Ableitungsregel für abgeleitete Elemente explizit angeben.

(Notation: Object Constraint Language OCL von UML)

{leiter = Leitung.name}

{teilnehmeranzahl = Teilnahme->size}

Teambesprechung

Teammitglied Leitung

Teilnahme 1

* / teilnehmeranzahl

/leiter

... *

name 2..*

(5)

Softwaretechnologie, © Prof. Uwe Aßmann

Technische Universität Dresden, Fakultät Informatik 17

42.3 Verfeinerung von Vererbung

Prof. U. Aßmann, Softwaretechnologie 18

Elimination von nicht-konformer Vererbung

In Analysemodellen hat die Vererbungsrelation oft mehrere Bedeutungen

Während das Analysemodell diese Feinheiten nicht unterscheiden muss, sollte das Entwurfsmodell dies tun

Ansonsten kann es zu Laufzeitfehlern kommen

Prof. U. Aßmann, Softwaretechnologie 19

Wiederh.: Ähnlichkeitsrelationen (Similarity Relationships)

is-a: zeigt Ähnlichkeit an

is-a ist azyklische Relation, bei einfacher Vererbung baumförmig

is-structured-like: zeigt ähnliche Struktur an (structurelle Ähnlichkeit oder Gleichheit)

behaves-like: Verhaltensähnlichkeit

always-behaves-like: Konformanz (conformance), Ersetzbarkeit (substitutability)

sometimes-behaves-like: gelegentlich verhaltensgleich

restrictedly-behaves-like: im allgemeinen konformant, aber nicht in speziellen Situationen (extravagance, restriction inheritance)

Achtung: is-a, is-structured-like, behaves-like werden alle Vererbung genannt

instance-of: A ist aus einer Schablone B gemacht worden

Prof. U. Aßmann, Softwaretechnologie 20

Konforme Vererbung (Konformität, behaves- like)

Konforme Vererbung stellt sicher,

dass Ableiten von Unterklassen niemals Fehler in eine Anwendung einbringt (Robustheit)

dass bei der Unterklassenbildung die Semantik von Oberklassen erhalten bleibt

Liskov'sches Substitutionsprinzip (Liskov substitution principle):

Eine Unterklasse U heisst verhaltenskonform zu einer Oberklasse O, wenn jedes Objekt aus U jedes Objekt aus O ersetzen kann, ohne

eine Anwendungsklasse, die O verwendet, in einen fehlerhaften Zustand zu versetzen

(6)

Prof. U. Aßmann, Softwaretechnologie 21

Extravaganz (restrictedly-behaves-like)

Eine Unterklasse U heisst extravagant (eingeschränkt) zu einer Oberklasse O, wenn nicht alle Objekte aus U alle Objekte aus O ersetzen können, ohne dass in einer Anwendung, die O verwendet, Fehler auftreten

Aka: Eingeschränkte Vererbung (restriction inheritance)

Professor Emeritus giveLecture()

Professor Frage: Was passiert, wenn ein

emeritierter Professor keine Vorlesungen mehr anbietet?

Antwort: Eine Anwendung der Klasse Professor, die dies erwartet, endet in einem fehlerhaften Zustand.

Erklärung: ProfessorEmeritus ist eine extravagante Unterklasse von Professor

Prof. U. Aßmann, Softwaretechnologie 22

Konformitätsproblem in Analysemodellen

Leider sind nicht alle Vererbungshierarchien konform, insbesondere nicht in Analysemodellen

Sowohl in UML als auch in Java drückt die Vererbungsrelation nicht unbedingt Konformität aus

Man muss jede einzelne Vererbung daraufhin untersuchen :-(

Und im Entwurfsmodell Konformität herstellen

ProfManagement

Beispiel: Bibliotheken, Frameworks und Anwendungen

Bibliotheken, Frameworks sind vorgefertigte Pakete mit Vererbungshierarchien von einem anderen

Hersteller

Anwendungen leiten speziellere Unterklassen davon ab

Beispiele:

Java Development Kit

C++ Standard Template Library (STL)

eat() work() sleep() getName()

Person

giveLecture() Professor

visitLecture() drinkBeer()

Student salary

Employee

visitUniversity() drinkBeer()

Alumnus

visitNullCourse() Beginner

PersonManagement

StudentManagement

Beispiel: Konforme Vererbung von Bibliotheks- und Frameworkklassen

Verwendet man beim Entwurf eine zugekaufte Klassenbibliothek, stelle man sicher, dass man Anwendungsklassen nur mit konformer Vererbung ableitet

Ansonsten treten Laufzeitfehler in Klassen der Klassenbibliothek auf

Deren Fehlermeldungen sind völlig unverständlich, da sie nicht die eigentlichen Fehlerursache vermitteln können

(7)

Prof. U. Aßmann, Softwaretechnologie 25

Analyse-Modell Entwurfs-Modell

Zusammenfassung:

UML-Klassenmodelle in Analyse und Entwurf

Skizze: Teilweise unvollständig in Attributen und Operationen

Datentypen und Parameter können noch fehlen Noch kaum Bezug zur

Realisierungssprache Keine Überlegungen zur Realisierung von Assoziationen

Nicht-konforme Vererbung

Vollständige Angabe aller Attribute und Operationen Vollständige Angabe von Datentypen und Parametern Auf Umsetzung in gewählter Programmiersprache bezogen Navigationsangaben, Qualifi kation,

Ordnung, Verwaltungsklassen Entscheidung über Datenstrukturen

Vorbereitung zur Anbindung von Benutzungsoberfl äche und Datenhaltung an fachlichen Kern

Konforme Vererbung

Prof. U. Aßmann, Softwaretechnologie 26

The End

Diese Folien sind eine überarbeitete Version der Vorlesungsfolien zur Vorlesung Softwaretechnologie von © Prof. H. Hussmann, 2002.

used by permission.

Referenzen

ÄHNLICHE DOKUMENTE

Dort gibt es ausführliche Musterlösungen, Proben, Lernzielkontrollen, Schulaufgaben und Klassenarbeiten für alle Schularten, Klassen und Fächer, passend zum aktuellen

(Die Konstruktion muss sichtbar sein.) Markiere dann den Drehpunkt mit rot. b) Zeichne den kleinsten Drehwinkel mit blau ein. c) Berechne den Drehwinkel und schreibe das

In einer ganzen Klasse oder einer Fördergruppe könnte ein Wettbewerb veranstaltet werden, indem jedes Kind dasselbe Spielfeld und dieselbe Buchstabenanweisung erhält; Gewinner ist,

Damit schließt man Hosen, Blusen

nicht selten mehr, als er zu

Kopfschmerzen, vorübergehende Hautveränderungen, selten allergische Reaktionen (Hautrötung/Flush, Juckreiz), Arrhythmieneigung (bes. nach Herzinfarkt)

Wie kann die Fläche eines rechtwinkeligen Dreiecks berechnet werden, wenn die Seiten

Wie kann die Fläche eines rechtwinkeligen Dreiecks berechnet werden, wenn die Seiten bekannt sind?. A