1 / 40

Objektorientierter Entwurf

Objektorientierter Entwurf. Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen. OOD-Modell. Soll das spätere Programm widerspiegeln; aber: höhere Abstraktionsebene, Verdeutlichung des Zusammenwirkens einzelner Elemente

carys
Download Presentation

Objektorientierter Entwurf

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Objektorientierter Entwurf Wdh.: Basiskonzepte innerhalb des OOD Statische Konzepte im Entwurf: Assoziationen

  2. OOD-Modell • Soll das spätere Programm widerspiegeln; aber: höhere Abstraktionsebene, Verdeutlichung des Zusammenwirkens einzelner Elemente • Erstellen eines statischen und dynamischen Modells/ Elaboration des bereits bestehenden OOA-Modell

  3. 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

  4. Klasse Parametrisierte Klasse (Template): 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

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

  6. 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);

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

  8. Beispiel:

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

  10. 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}

  11. 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

  12. 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:~

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

  14. 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}

  15. 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.

  16. 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

  17. 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: ~

  18. 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.

  19. 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

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

  21. 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

  22. Beispiel

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

  24. Assoziation Assoziationen im OOA-Modell • Welche Klassen kennen sich, zwischen welchen Objekten existieren Beziehungen? • Binäre Assoziationen • Multiplizitäten • Benennung/ Rolle

  25. Assoziation Navigierbarkeit KlasseX KlasseY unspezifiziert KlasseX KlasseY unidirektional KlasseX KlasseY bidirektional Navigierbarkeit explizit ausgeschlossen KlasseX KlasseY  Navigierbarkeit kann auch in Objektdiagramme eingetragen werden

  26. Assoziation • Implementierung • Mittels Zeigern • Multiplizität 0..1 oder 1: ein einzelner Zeiger • >1: Menge von Zeigern • * : Container • Beispiel Java: • class Angestellter • { • protected Abteilung arbeitetIn; • public void link(Abteilung abt) • {arbeitetIn=abt;} • public void unlink(Abteilung abt) • {... arbeitetIn=null;} • public Abteilung getlink() • {return arbeitetIn;} • }

  27. Assoziation • Sichtbarkeit • Die Sichtbarkeit einer Assoziation kann im Entwurfsmodell eingetragen werden. • z.B.: • Eigenschaftswert • z.B.: KlasseX KlasseY + rolle passenger Flugzeug Fluggast {union} first {subset passenger} business {subset passenger} * {ordered}

  28. Assoziation

  29. Assoziation

  30. Übung 1 • Ziel: Klassen und Assoziationen des OOA-Modells in den Entwurf abbilden. Aus einem Analysemodell resultiert folgendes Klassendiagramm: Student Firma matrikelnummer name immatrikulation anzahl name ort branche * 0..1 praktikant immatrikulieren() anmeldenPraktikum() erstelleListe() Entwickeln Sie dieses Diagramm als Teil des Entwurfsmodells weiter.

  31. 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

  32. Komponentendiagramm • Notation: Komponente und Schnittstelle <<component>> Komponente Komponente

  33. Komponentendiagramm • Alternative Darstellung

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

  35. 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

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

  37. Komponentendiagramm • Darstellung des Innenlebens einer Komponente

  38. Komponentendiagramm 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 • Abhängigkeiten zwischen Modellelementen

  39. Ü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.

More Related