Objektorientierter Entwurf

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

der Universität Oldenburg
Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
Programmierung 1 - Repetitorium
Objektorientierte Programmierung
Frame-Logik Eine Einführung Andreas Glausch.
Kritische Betrachtung
Die Definitionsphase -Objektorientierte Analyse - Das statische Modell
Objektorientierter Entwurf
Design - Enwurf Objekt/Klasse Attribut Operation Assoziationen
Objektorientierter Entwurf (OOD) Übersicht
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Java Packages Richard Göbel. FH-Hof Das Modulkonzept für Java Packages dienen zur Strukturierung größerer Java- Programme Ein Package kann: eigene.
Java: Grundlagen der Objektorientierung
Klassendiagramm Verwandte Begriffe: class, Typ, Objektfabrik
Abstrakte Klassen.
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
Objektorientierter Entwurf
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Sebastian Grahn Sebastian Kühn
Programmieren mit JAVA
Programmieren mit JAVA
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Packages Vortrag : Cornelia Hardt 23. November 1999.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
Klassen 02 - Klassen.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Einführung in die Programmierung Datensammlung
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
Entwurfs- und Implementationsdiagramme
UML WS 09/10: Datenbanken vs MarkUp Dozent: Prof. Dr. Manfred Thaller
Copyright 2011 Bernd Brügge, Christian Herzog Grundlagen der Programmierung TUM Wintersemester 2011/12 Kapitel 11, Folie 1 2 Dr. Christian Herzog Technische.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Informatik 1 Letzte Übung.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Objektorientierte Modellierung mit UML
Klassen und Klassenstruktur
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
OQL-Anbindung an Java (1) Java als Beispiel für die Einbettung von OQL in eine Programmiersprache Die OQL-Einbettung in Java ist teilweise mit dynamischem.
RelationentheorieObjektorientierte Datenbanken  AIFB SS C++-ODL (1/6) Erweiterung des deklarativen Teils einer C++-Klasse Datentypen d_String,
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Abstrakte Klassen und das Interface-Konzept
Tutorium Software-Engineering SS14 Florian Manghofer.
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
Tutorium Software-Engineering SS14 Florian Manghofer.
C++ FÜR cOMPUTERSPIELENTWICKLER
Tutorium Software-Engineering SS14 Florian Manghofer.
OOP II.
OO-Programmierung & Vererbung
1. Die rekursive Datenstruktur Liste 1
Implementieren von Klassen
 Präsentation transkript:

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

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

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

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

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)

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

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

Beispiel:

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

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}

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

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

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

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}

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.

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

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

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.

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

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

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

Beispiel

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

Ü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

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

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

Komponentendiagramm Alternative Darstellung

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

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

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

Komponentendiagramm Darstellung des Innenlebens einer Komponente

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

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