Objektorientierter Entwurf

Slides:



Advertisements
Ähnliche Präsentationen
Konzepte objektorientierter Systeme
Advertisements

Definition von Klassen in Java
Die Definitionsphase -Objektorientierte Analyse - Das statische Modell
Assoziationen Verbindungen zwischen Objekten einer Klasse
Objektorientierter Entwurf
Objektorientierter Entwurf
Design - Enwurf Objekt/Klasse Attribut Operation Assoziationen
Objektorientierter Entwurf (OOD) Übersicht
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Java: Grundlagen der Objektorientierung
Abhängigkeitsbeziehung
Abstrakte Klassen.
Polymorphie (Vielgestaltigkeit)
Lösungen
Objektorientierte Konzepte und Notation in UML
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
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
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Packages Vortrag : Cornelia Hardt 23. November 1999.
C++ Vererbung und Polymorphie
DVG Klassen und Objekte
Objektorientierte Analyse und Design mit der Unified Modelling Language (UML) Sandra Meißl
1 Dienstbeschreibung mit DAML Ein graphischer Editor für DAML - Ting Zheng Betreuer: Michael Klein, Philipp Obreiter.
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
7. Vorlesung Vererbung Einfach- und Mehrfachvererbung Polymorphismus
12. Vorlesung: Aktivitätsdiagramme
Unified Modeling Language Repetition / Einführung zu UML
Entwurfs- und Implementationsdiagramme
Objektorientiertes Programmieren
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Objektorientierte Konzepte/UML Geoinformation I Vorlesung 2 WS 2000/2001.
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.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
ObjektOrientiertes Programmieren
Informatik Zustandsorientiertes Modellieren und Programmieren 2.4 Datenkapselung 2.4 Datenkapselung Objekte können miteinander kommunizieren, indem.
2. Zustandsorientiertes Modellieren 2.4 Datenkapselung
Klassenhierarchien, Vererbung
Objektorientierte Programmierung
Objektorientierte Modellierung mit UML
Klassen und Klassenstruktur
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Unified Modeling Language UML
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
SS 2014 – IBB4C Datenmanagement Do 17:00 – 18:30 R Vorlesung #3 ER Modellierung.
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs Übung Besprechung der Hausaufgabe Vererbung
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
Java-Kurs - 9. Übung Besprechung der Hausaufgabe
Sichtbarkeit einschränken
UML-Klassendiagramm: Klassen
Objektorientierte Programmierung (OOP)
Abstrakte Klassen und das Interface-Konzept
Objektorientierte Programmierung (OOP)
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.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
OOP II.
Die Struktur einer Java-Klasse
1. Die rekursive Datenstruktur Liste 1.5 Das Entwurfsmuster Kompositum
1. Die rekursive Datenstruktur Liste 1
 Präsentation transkript:

Objektorientierter Entwurf Statische Konzepte im OOD: Polymorphismus Generalisierung Pakete Dynamische Konzepte im OOD: Aktivität

Polymorphismus gehört zu den wesentlichen Grundpfeilern der Objektorientierung Grundsätzlich gilt: Polymorphismus ermöglicht den gleichen Namen für gleichartige Operationen zu verwenden, die mit Objekten unterschiedlicher Klassen auszuführen sind. So wird erreicht, das dieselbe Botschaft an Objekte unterschiedlicher Klassen gesendet werden kann, die darauf auf ihre Weise unterschiedlich reagieren.

Polymorphismus spätes Binden: Operation wird erst zur Ausführungszeit an ein bestimmtes Objekt gebunden C++  explizites Deklarieren (virtual) Java  automatisch polymorph Grafikobjekt mittelpunkt istSichtbar + zeichnen( ) Kreis Rechteck laenge breite - radius + zeichnen( ) + zeichnen( )

Ziel: Polymorphismus anwenden Übung 1 Ziel: Polymorphismus anwenden Erstellen Sie für folgende Problemstellung ein Klassendiagramm unter Verwendung des Konzepts Polymorphismus: Literaturstellen (Bücher und Artikel aus Zeitschriften) sind nach Autoren sortiert in einer gemeinsamen Liste abzulegen. Für jedes Buch sind der Autor, Titel, Ort und Erscheinungsjahr zu speichern, für jeden Artikel Autor, Titel, Zeitschriftentitel, Ausgabennummer und Seitenangaben. Folgende Funktionalität soll realisiert werden: Jede Literaturstelle ist zu erfassen und nach Autoren sortiert in der Liste zu speichern. Alle Literaturstellen sollen nach Autoren sortiert ausgegeben werden.

Generalisierung Oberklassen als abstrakte Klassen modellieren gemeinsame Eigenschaften und Operationen für die Unterklassen festlegen Einfach- oder Mehrfachvererbung? Einfachvererbung --> Struktur, in der jede Klasse (außer der Wurzel) genau eine Oberklasse besitzt. Baumstruktur

Generalisierung Mehrfachvererbung --> Struktur, in der jede Klasse (außer der Wurzel) mehrere Oberklasse besitzen kann. Problem dabei: Namenskonflikte: Klasse kann von ihren unterschiedlichen Oberklassen Attribute und Operationen erben, die namensgleich, aber unterschiedlichen Inhalts sind. Spaghetti Vererbung  unverständliche Strukturen in C++ möglich, in Java durch Schnittstellen nachbildbar

Generalisierung Generalisierungsmenge Partitionierung der Unterklassen bezüglich eines bestimmten Aspekts

Generalisierung Generalisierungseigenschaften complete: Partition enthält alle denkbaren Unterklassen incomplete: Partition enthält nur eine Teilmenge der möglichen Unterklassen disjoint: kein Exemplar einer Unterklasse ist gleichzeitig Exemplar einer anderen Unterklasse overlapping: Exemplare, die zu mehr als einer Unterklasse gehören können, sind möglich

Generalisierung Überschreiben (Overriding, redefinition): Neuimplementierung einer Operation innerhalb einer Unterklasse unter gleichem Namen wie in der Oberklasse void Kreis::vergroessern(int faktor) { faktorA=faktor; ... } void Rechteck:: vergroessern(int faktor) {faktorA=faktor/2; ... Grafikobjekt mittelpunkt istSichtbar + vergroesssern( faktor:int) Kreis Rechteck laenge breite - radius + vergroessern(faktor:int) + vergroessern(faktor:int)

Generalisierung Überladen Verwendung desselben Operationsnamens innerhalb einer Klasse mit unterschiedlichen Parametern

Generalisierung Überblick

Pakete Paket Paket1 Paket2 - Zusammenfassen von Klassen zu Gruppen - Verschiedene Abstraktionsebenen darstellbar durch Schachtelung von Paketen - Sictbarkeiten: + public: für alle Pakete sichtbar, die das betreffende Paket importieren (Zugriff ohne qualifizierenden Namen) - private: Sichtbarkeit und Zugriff nur im betreffenden Paket Auf public-Elemente kann außerhalb des Pakets immer über einen qualifizierenden Namen zugegriffen werden (z.B. Paket::Klasse) Paket Paket1 Paket2

Pakete Import-Beziehung zwischen Paketen oder Elementen von Paketen und Paketen: <<import>>:; public-Import: Die Sichtbarkeiten bleiben im importierenden Paket unverändert erhalten - <<access>>: private-Import-Beziehung: Sichtbarkeiten der Kategorie „public“ werden im importierenden Paket privat.

Pakete Paket-Merge: Elemente gleichen Namens können aus mehreren Paketen „gemischt“ werden Elemente des Zielpakets werden in das Quellpaket kopiert Einfacher Merge: Es gilt: 1.Enthält das Zielpaket Z eine Klasse K und das Quellpaket keine Klasse K, dann wird die Klasse K in Q eingefügt. 2.Enthält Z eine Klasse K dann wird die Klasse Z::K in Q eingefügt, die Oberklasse von K ist.

Pakete Beispiel: Komplexes Paketmerge

Pakete Notation Paket: Überblick

Übung 2 Ziel: Paketdiagramm mit Beziehungen erstellen 1) Erstellen Sie ein Paketdiagramm mit den Paketen PAK1 und PAK2, die folgende Elemente enthalten: PAK1 enthält die Klassen +K10, +K11, -K12; PAK2 enthält die Klassen +K20, +K21, -K22, -K23, +K24 Ein weiteres Paket PAK3 soll zu PAK1 eine Importbeziehung besitzen, zu PAK2 eine access-Beziehung. Das Paket PAK4 enthält eine access-Beziehung zu PAK3. 2) Auf welche Klassen aus PAK1 und PAK2 kann ohne qualifizierenden Namen zugegriffen werden? Welche Sichtbarkeiten besitzen diese Klassen in den entsprechenden Paketen PAK3 und PAK4?

Dynamische Konzepte im Entwurf: Aktivität - Eine Aktivität beschreibt die Ausführung von Verarbeitungsschritten und besteht aus mehreren Aktionen - Aktion kann sein: + Aufruf einer Operation, Senden eines Signals + Objektbezogene Aktion + Berechnungen + Ausnahmebehandlung + Empfang von Signalen oder Botschaft - Aktivitätsdiagramm im Entwurf: Beschreibung komplexer Operationen

Aktivität Benennung von Aktionen im Entwurf

Aktivität Konnektoren

Aktivität Exeption Handler = Notationselement das verwendet werden kann um alternative Aktionen im Falle von Fehlerauftreten darzustellen

Aktivität Strukturierter Knoten (structured activity node) Gruppierung von Knoten und Kanten einer Aktivität:

Aktivität Mengenverarbeitung  parallel, stream

Aktivität Entscheidungsknoten, Schleifenknoten

Beispiel

Aktivität Aktivitätsdiagramm: Übersicht der Notationselemente

Übung 3 Ziel: Operation durch ein Aktivitätsdiagramm darstellen Erstellen Sie ein Aktivitätsdiagramm mit Entscheidungs- und Schleifenknoten, das folgendem Pseudocode entspricht: summe=0; lese betrag; anzahl=1; while(betrag>0) { summe=summe+betrag; lese neuen betrag; anzahl=anzahl+1; } gebe summe aus; gebe anzahl der summierten beträge aus;