Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Objektorientierter Entwurf

Ähnliche Präsentationen


Präsentation zum Thema: "Objektorientierter Entwurf"—  Präsentation transkript:

1 Objektorientierter Entwurf
Basiskonzepte innerhalb des OOD: Klassen (generische ~, Container, Schnittstellen) Attribut Operation UML: Komponentendiagramm

2

3 OOD-Modell Soll das spätere Programm widerspiegeln; aber: höhere Abstraktionsebene, Verdeutlichung des Zusammenwirkens einzelner Elemente Erstellen eines statischen und dynamischen Modells

4 <<interface>>
Klasse Allgemein: Notation Name: Wie in der Analyse fett und zentriert, beginnend mit Großbuchstabe Stereotypen verwenden, um Zugehörigkeit einer Klasse zu einer bestimmten Entwurfsschicht zu zeigen: <<interface>>, <<database>>, … PERSON <<interface>> UIButton

5 Klasse Parametrisierte Klasse (Template): Queue queue: T[0..n]
Die parametrisierte Klasse Queue enthält ein Attribut queue, das mit Hilfe des Typs T und der Multiplizität [0..n] definiert wird; in den beiden Klassen, die Queue als Vorlage benutzen, wird dann Typ und Anzahl der maximalen Werte/Objekte bestimmt Queue queue: T[0..n] insert() delete() <<bind>> <Tfloat,n100> <<bind>> <TPerson,n100> FloatQueue Adressbuch

6 Klasse Container-Klasse
Verwaltung von Objekten einer anderen Klasse (fehlte im Entwurf!) stellt Operationen bereit, um auf die zu verwaltenden Objekte zugreifen zu können Vordefiniert in Bibliotheken (z.B. C++  STL)

7 Implementierung C++: template <class ElementType, int max>
class Queue{ public: void insert(ElementType element) {...} }; typedef Queue<int,100> IntQueue; typedef Queue<string,100> StringQueue; IntQueue intQueue; StringQueue strQueue; strQueue.insert(„Meier"); intQueue.insert(5);

8 Klasse Schnittstelle (Interface)
Enthält Signaturen von Operationen (abstrakt) und evtl. Attribute Verwendung wie abstrakte Klasse Schlüsselwort <<interface>>

9 Beispiel:

10 Schnittstelle : Implementierung
Java: Deklaration: interface ClassInfo{ public abstract String getClassName(); } Nutzung: class MyClass implements ClassInfo{ public String getClassName(){ return „MyClass“; C++: Mittels Klassenkonzept

11 Klasse Abstrakte Klassen Oberklasse zu „realen“ Klassen
kann keine Objekte erzeugen jede Klasse, die eine mit abstract gekennzeichnete Operation enthält muss ebenfalls abstract sein UML: Oder: Medium Medium {abstract} erfasse() erfasse() {abstract}

12 abstract class AbstClass1{
Implementierung Java: - Kennzeichnung mittels „abstract“ - Eine Klasse, die eine abstrakte Operation besitzt, muss als abstrakt deklariert sein abstract class AbstClass1{ public void operation1(){} public abstract void operation2(){} } C++: - Keine spezielle Kennzeichnung

13 Attribute UML erlaubt alle Zeichen im Attributnamen  Name an Konvention Programmiersprache anpassen; beginnend mit Kleinbuchstaben Sichtbarkeiten public sichtbar in allen Klassen UML: + protected sichtbar in der Klasse und allen Unterklassen UML: # private sichtbar in der Klasse UML: - package sichtbar für alle Klasse im gleichen Paket UML:~

14 Attribute Notation: Sichtbarkeit / name : Typ [Multiplizität] = Anfangswert {Eigenschaftswert} - Nur der Name des Attributs ist zwingend anzugeben; Standard: Sichtbarkeit, Name, Typ

15 Attribute Eigenschaftswerte:
UML bietet eine Reihe von vordefinierten Eigenschaftswerten, wie z.B.: {read only}  Attributwert unveränderbar {ordered}  Menge von Werten, geordnet ( vorname[1..3] {ordered} ) Weitere Eigenschaftswerte dürfen nach Belieben definiert werden (ebenso Einschränkungen) rueckflug: Date {rueckflug > hinflug}

16 Attribute Typen: UML erlaubt neben vordefinierten Typen die Definition beliebiger weiterer Typen  Typen der Programmiersprache, die verwendet werden soll, benutzen. Abgeleitete Attribute: Abgeleitete Attribute ins OOD- Modell eintragen. Sie werden später als Attribute oder durch eine Operation realisiert, die den aktuellen Wert des abgeleiteten Attributs ermittelt.

17 Operationen Name: beliebig, sollte mit Kleinbuchstaben beginnen; auch hier: Syntax der verwendeten Programmiersprache zu Grunde legen Überladen von Operationen: Im OOD darf derselbe Operationsnamen innerhalb einer Klasse mehrfach vorkommen, allerdings mit verschiedenen Parametern

18 Operation Sichtbarkeiten : public sichtbar in allen Klassen UML: +
protected sichtbar in der Klasse und in allen Unterklassen UML: # privat sichtbar in der Klasse UML: - package sichtbar im selben Paket UML: ~

19 Operationen Signatur: Im OOD-Modell vollständig anzugeben
Spezifikation: Sichtbarkeit name (Parameterliste) : Ergebnistyp {Eigenschaftswert} Für die Parameterliste gilt: Richtung parametername : Typ [Multiplizität] = Anfangswert {Eigenschaftswert} Auch hier ist nur die Angabe des Namens zwingend.

20 z.B. erfassen(in name: string)
Operation Signatur: Richtung in : bei reinen Eingabeparametern; nur lesender Zugriff der Operation möglich z.B. erfassen(in name: string) out : bei reinen Ausgabeparametern; Operation erzeugt den Wert des Parameters und gibt ihn an die aufrufende Funktion zurück inout : lesen, verändern, zurückgeben

21 Operation Eigenschaftswerte:
Analog zu Attributen gibt es in UML vordefinierte und die Möglichkeit, eigene zu definieren

22 Operation Für abstrakte Operationen gilt dasselbe wie für abstrakte Klassen: - sie besteht nur aus der Signatur (ohne Wertangabe im OOD / ohne „aktive“ Implementierung) - sie werden im Rahmen von Generalisierungsstrukturen ins OOD-Modell eingetragen - UML: kursiv oder {abstract} - in Schnittstellen sind Operationen immer abstrakt und müssen nicht gesondert als abstrakt gekennzeichnet werden

23 Beispiel

24 Operation Erweiterung gegenüber Analyse: vollständige Signatur
Namen und Typen aller Parameter Ergebnistyp der Operation Sichtbarkeiten

25 Übung 1 Ziel: Generische Klasse entwerfen
Bilden sie generische Klassen und versuchen Sie die Signaturen zu spezifizieren. Bilden Sie auch Klassen, die die Templates benutzen. 1) Liste: Operationen: Einfügen eines Elements in die Liste, Entfernen an einer angegebenen Position, Lesen eines Elements an der angegebenen Position 2) Menge (Set): Operationen: Einfügen eines Elements, Prüfung auf Enthaltensein eines Elements, Prüfen ob Menge Teilmenge einer anderen Menge ist, Bilden des Durchschnitts zweier Mengen

26 Komponentendiagramm Wie ist die Struktur des Systems, wie wird sie erzeugt? Komponente: Softwarebaustein, der über feste Schnittstellen verfügt, wobei das Innenleben der Komponente modifiziert werden kann  Vorteil: Austauschbarkeit Komponentenbasierte Entwicklung: z.B. .NET, JavaBeans

27 <<component>>
Komponentendiagramm Notation: Komponente und Schnittstelle <<component>> Komponente Komponente

28 Komponentendiagramm Alternative Darstellung

29 Komponentendiagramm Die einzelnen Komponenten sind über ihre Schnittstellen miteinander verbunden: <<component>> KomponenteB <<component>> KomponenteA <<component>> KomponenteC

30 <<artefact>>
Komponentendiagramm Artefakte Artefakte sind physische Informationseinheiten, z.B. eine Quellcodedatei oder eine ausführbare Binärdatei Die Art des Artefakts kann durch Stereotypen spezifiziert sein: <<file>> =Datei <<document>> =Datei, die weder Quellcode noch ausführbaren Programmcode besitzt <<source>> =Datei mit Quellcode <<executable>> = ausführbare Datei <<library>> =Datei, die Bibliothek enthält (z.B. dll- Datei) <<artefact>> ArtefaktX

31 Komponentendiagramm Abhängigkeiten zwischen Artefakten und Komponenten
Artefakt1 wird durch Komponente realisiert Keine näher spezifizierte Abhängigkeit Class-Datei wird automatisiert aus aus Java-Datei erstellt OOD-Modell wird aus OOA-Modell erstellt

32 Komponentendiagramm Darstellung des Innenlebens einer Komponente

33 Komponentendiagramm Abhängigkeiten zwischen Modellelementen
Klasse Fahrzeug ist Exemplar der Klasse Fahrzeugtyp Kunden-Window besitzt Zugriffsrechte auf Klasse Kunde OOD-Klasse Kunde realisiert OOA-Klasse Kunde EditierbareListe ist durch Klasse Liste ersetzbar Klasse Bestellung benötigt für volle Funktionalität Artikel

34 Übung 2 Ziel: Komponentendiagramm erstellen
Erstellen Sie ein Komponentendiagramm mit den folgenden Komponenten und den jeweils angegebenen Schnittstellen, die diese Komponenten zur Verfügung stellen und benutzen: - Online-Reservierung: benutzt Reservierung - Zimmerbelegung: bietet Zimmeranfrage und Buchung - Preisberechnung: bietet Preisliste und Sonderangebote - Zimmerreservierung: bietet Stornierung und Reservierung, benutzt Zimmeranfrage, Buchung, Preisliste und Sonderangebote.


Herunterladen ppt "Objektorientierter Entwurf"

Ähnliche Präsentationen


Google-Anzeigen