Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in...

58
W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag, ISBN 3-540- 20958-1 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung Objektorientierte Software-Entwicklung Analyse und Design Foliensatz von A. Weber zur Vorlesung Informatik I, Bonn, 2002/03 Überarbeitet von W. Küchlin zu Informatik I, Tübingen 2003/04

Transcript of Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in...

Page 1: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Objektorientierte Software-Entwicklung

Analyse und Design

Foliensatz von A. Weber zur Vorlesung Informatik I, Bonn, 2002/03Überarbeitet von W. Küchlin zu Informatik I, Tübingen 2003/04

Page 2: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -2- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Objekte und Klassen

• Objekt (object)– Gedankliche oder reale Einheit in der Umwelt oder in Software

– Objekt i.A. gegeben durch Zustand (Attribute) und Funktionalität (Methoden, Operationen)

– Zustand ist durch die Werte von (Zustands-)Variablen (in Java: Felder (fields)) gegeben

– Methoden sind Algorithmen, die auf den Variablen operieren und so den Objekt-Zustand verändern können

– Ein Objekt ist ein Einzelstück• wie etwa ein bestimmtes Gerät mit Seriennummer

Page 3: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -3- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Objekte und Klassen

• Zwei Objekte gehören der gleichen (Objekt-) Klasse (class) an, wenn ihr Zustand und ihre Funktionalität gleich aufgebaut sind– alle Objekte einer Klasse haben die selben Methoden

– jedes Objekt hat einen eigenen Satz von Variablen mit dem gleichen Namen und Typ, aber mit eigenen Werten

• Z.B. zwei Geräte-Objekte mit unterschiedlicher Seriennummer

– Graphische Repräsentation nach folgendem Schema• Verwenden im wesentlichen UML (Unified Modeling Language)

Page 4: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -4- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

z: Schaltzustands: Seriennummerk: Kanall: Lautstärke

aus() ein() getSeriennummer() wähleKanal() wähleLautstärke()

TV2000

«datatype»Schaltzustand

«datatype»Seriennummer

«datatype»Kanal

«datatype»Lautstärke

Objekte und Klassen

• Beispiel: Fernsehapparate der Klasse „TV2000“– Zustand setzt sich zusammen aus

den Werten der Zustandsvariablen (Name: Typ)

• s: Seriennummer, k: Kanal, l: Lautstärke, z: Schaltzustand

– Funktionalität setzt sich zusammen aus den Funktionen

• wähleKanal(), ein(), aus(), wähleLautstärke(), getSeriennummer()

• Graphische Notation

Zustand

Funktio-nalität

Name

Page 5: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -5- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Objekte und Klassen

• Weitere Beispiele:

d: Drehzahlr: Rückwärtslaufv: Vorwärtslaufz: EinAus

aus() ein() getDrehzahl() rückwärts() setDrehzahl() vorwärts()

Motor

p: Greifpositionz: EinAus

aus() bewegeLinear() bewegePunktZuPunkt() ein()

Robot

UMLBuch

(Java Stil)

Page 6: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -6- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Objektbeziehungen

• etwas UML Notation:– name: type– Zugang (access) zu Variablen und Methoden:

• + public (für alle anderen Objekte offen)

• - private (nur für Objekte der eigenen Klasse offen)

• # protected (nur für Objekte verwandter Klassen offen)

– Klassen: groß geschrieben– Objekte: unterstrichene Namen name: Class

• name ein Objekt, Klasse unbekannt

• : Class ein anonymes Objekt der Klasse Class

Page 7: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -7- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Objektbeziehungen

• Modellieren vom Beziehungen durch mathematische Relationen (Relation = Beziehung)

– Die Liste der Beziehungen ist die Liste der Tupel der Relation

– Diese Listen lassen sich in Tabellen speichern• Geschieht auf diese Art in relationalen Datenbanken

– Aus objektorientierter Sicht entspricht jeder Zeile ein Objekt• Die Tabelle entspricht der Klasse als der Summe ihrer Objekte

– Eine Objektklasse allein modelliert also auch schon eine Beziehung • Die zwischen den Zuständen der Objekte

Page 8: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -8- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Objektbeziehungen

• Beziehungen zwischen Objektklassen also „Relationen von Relationen“

• Objekte sind jedoch noch mächtiger (als Relationen von Relationen)– Enthalten neben Daten auch Funktionen

• Funktionen aus mathematischer Sicht spezielle Relationen• Aus Sicht der Informatik i.A. durch Programme repräsentiert

– Nur einfache Funktionen können als Tabelle repräsentiert werden– Vgl. auch hier wieder das Problem der Komplexität

• Spezielle Notation zur Repräsentation verschiedener Beziehungen zwischen Objekt-Klassen erleichtert das Verstehen durch den Menschen

Page 9: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -9- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

• Allgemeine Beziehung zwischen Klassen durch Linien repräsentiert – Bsp: Zwischen Objekten der

Klasse Person und Objekten der Klasse Auto besteht die Beziehung „besitzt“

• Linie kann annotiert sein: Charakter der Beziehung– Name über der Linie angeben (Leserichtung durch Dreieck)– Vielfachheiten an Enden angegeben

• Zahl, oder * für „beliebig“ (0, 1, 2, ...), oder Bereich 1..2– Rolle der Klassen in der Relation an Enden angegeben

• Bsp: Person=Besitzer, Auto=Besitztum

Objektbeziehungen

Page 10: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -10- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Objektbeziehungen

• Beziehungen zwischen Objekten (bzw. Objekt-Klassen) können verschiedenster Natur sein. Wichtig:– strukturelle Beziehungen (structural relationship),

• liegen statisch, zur Übersetzungszeit, fest und beziehen sich auf Klassen

– verhaltensbezogene Beziehungen (behavioral relationship)• bestehen dynamisch, zur Laufzeit, zwischen Objekten

• Strukturell– Einschluss (containment, has-a)– Subtyp oder Vererbung (inheritance, subtype, is-a)

• Verhaltensbezogen– Informationsfluss oder Nachrichten (message)– Methodenaufruf oder Kunde/Lieferant (client/server)

Page 11: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -11- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Strukturelle Objektbeziehungen: Einschlussbeziehungen

• Zwei Objektklassen stehen in einer Einschluss-Beziehung (containment) zueinander, falls Objekte der einen Klasse Objekte der anderen Klasse einschließen

• Wir sprechen von einer Ansammlung oder Aggregation (aggregation) der Teilobjekte im umfassenden Objekt

• Wir sprechen auch von einer „hat-“ (has-a)-Beziehung, da hier ein umfassendes Objekt ein oder mehrere Teilobjekte hat

• Die Aggregation wird graphisch dadurch veranschaulicht, dass man am umfassenden Ende der Beziehungslinie eine Raute anbringt

Page 12: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -12- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Strukturelle Objektbeziehungen: Einschlussbeziehungen

• Beispiel:

– Eine Vorlesung „hat“ 0..200 Studenten

– Ein Student nimmt an 0..5 Vorlesungen teil• Die Analyse der realen Welt kann Fehler enthalten und muss

gegebenenfalls an neue Situationen angepasst werden– Eine Vorlesung kann auch 400 Studenten haben

Page 13: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -13- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Strukturelle Objektbeziehungen: Einschlussbeziehungen

• Die Aggregation kann im allgemeinen eine recht lose Beziehung sein– Zu einer Vorlesung gehören zwar Studenten, aber die Studenten

sind kein integraler Bestandteil• Zur Not könnte die Vorlesung auch ohne Studenten abgehalten werden

– Jedes Teilobjekt ist eines der Attribute des umfassenden Objekts, also Teil seines Zustands

• Für den (häufigen) Spezialfall, dass die Teilobjekte integraler Bestandteil des Ganzen sind, sprechen wir von einer Kompositions-Beziehung (composition relationship)– Die Teile sind nicht ohne das Ganze denkbar (sinnvoll).– Falls wir die Komposition speziell hervorheben wollen, benutzen

wir im Diagramm eine schwarz gefüllte Raute

Page 14: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -14- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Strukturelle Objektbeziehungen: Einschlussbeziehungen

• Beispiel: – Ein Auto „hat“ 4 Räder und einen Motor

In Java:Jedes Teilobjekt wird innerhalb des umfassenden Objekts als Feld deklariert.class Auto { Rad vr,vl,hr,hl; Motor m; // ... m.ein();}

Page 15: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -15- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Strukturelle Objektbeziehungen: Vererbungsbeziehungen

• Zwei Objektklassen stehen in einer Subtypbeziehung zueinander, falls der eine (der Subtyp) alle Eigenschaften der anderen (des Obertyps) besitzt – Und darüber hinaus evtl. noch weitere

• Der Subtyp (subtype) ist also eine ganz spezielle Abart (instance) des Obertyps (supertype) dadurch, dass er (evtl.) weitere spezialisierende Eigenschaften hat

• Der Obertyp ist eine Verallgemeinerung des Subtyps• Es gelten für die Menge der Daten und Methoden von

Subtyp S und Obertyp O die Beziehungen– DatenO DatenS und MethodenO MethodenS

Page 16: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -16- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Strukturelle Objektbeziehungen: Vererbungsbeziehungen

• Ein Typ wird also durch Hinzunahme von Eigenschaften weiter spezialisiert

• Wir sprechen auch davon, dass der Subtyp zunächst die Eigenschaften des Obertyps erbt (inherit)– Die Beziehung ist eine Vererbungsbeziehung (inheritance

relationship)– Umgekehrt verallgemeinert der Obertyp den Subtyp dadurch, dass

er spezialisierende Eigenschaften weglässt• Wir sprechen darum auch von einer Verallgemeinerung

(generalization)• Verallgemeinerungen erlauben es, Replikationen von Eigenschaften

und Methoden in ähnlichen Typen zu vermeiden, indem sie in einem gemeinsamen Obertyp zusammengefasst werden

• Vererbungsbeziehungen werden durch einen Pfeil mit breiter hohler Spitze veranschaulicht– Jede Vererbungsbeziehung kann eine Aufrufbeziehung von der

Unterklasse zur Oberklasse (in Pfeilrichtung) beinhalten

Page 17: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -17- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Strukturelle Objektbeziehungen: Vererbungsbeziehungen

• Beispiel:– Der Zustand

„Seriennummer“, der sowohl in „Fernsehgerät“ als auch in „Motor“ vorhanden ist, wird in einem gemeinsamen Obertyp „Gerät“ aufgeführt und von dort vererbt

– Vererbungsbeziehungen werden durch einen Pfeil veranschaulicht

seriennummer

seriennummer seriennummer

Page 18: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -18- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Strukturelle Objektbeziehungen: Vererbungsbeziehungen

• Weiteres Beispiel: – Kaffeemaschinen vom Typ Cafe2000 haben eine Funktion zur

Befüllung von Kaffee und Wasser für bis zu 12 Tassen

– Das Luxusmodell Cafe2000LT hat zusätzlich noch eine Timerfunktion zur Eingabe der gewünschten Startzeit

Vererbung in Java: In Java erweitert (extend) man die Oberklasse (um weitere Eigenschaften) zu einer Unterklasse.class Cafe2000LT extends Cafe2000 { Time t; void timer(Time time) { // ... } }

Page 19: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -19- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Verhaltensbezogene Objektbeziehungen: Informationsfluss

• Objekte interagieren untereinander durch Austausch von Information

• Die elementarste und allgemeinste Art der Interaktion zwischen zwei Objekten ist das Versenden einer Nachricht (message) von einem Objekt zu einem andern

• Logisch wie Versenden eines Briefs– Eine Methode des Absenders schickt die Nachricht an den

Empfänger, wo eine weitere Methode die Nachricht empfängt und weiterverarbeitet

– Das Absenden und Empfangen geschieht unabhängig voneinander• Absender und Empfänger müssen also nie im Gleichklang sein und der

Absender kann nach dem Abschicken sofort weiterarbeiten asynchrone Kommunikation (asynchronous communication)

Page 20: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -20- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Verhaltensbezogene Objektbeziehungen: Informationsfluss

• Nachrichtenversand (message passing) hat den sehr großen Vorteil, dass er genauso gut zwischen räumlich getrennten Systemen funktioniert

• Wir veranschaulichen den Nachrichtenfluss als Pfeil mit offener Spitze über der zugrundeliegenden Beziehung – UML verwendet hier einen ähnlichen Pfeil mit einer

einarmigen Spitze– Wir dekorieren den Pfeil nach Bedarf mit geeigneten

Erläuterungen

Page 21: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -21- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Verhaltensbezogene Objektbeziehungen: Informationsfluss

• Beispiel für Nachrichtenversand:– Ein Objekt :Student der Klasse „Student“

schickt einem Objekt :Studentensekretariat die Personaldaten

Page 22: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -22- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Verhaltensbezogene Objektbeziehungen: Informationsfluss

• Wie in realer Welt können Objekte ein komplexes Geflecht von Informationsfluss-Beziehungen eingehen– Jedes Objekt kann (z. B. durch verschiedene Methoden)

vielerlei Nachrichten senden und auch empfangen

• Diese komplexen Situationen können durch Interaktionsdiagramme (interaction diagrams) modelliert werden– Sequenzdiagramme (sequence diagram)

• zeitl. Abfolge durch Anordnung der Nachrichten von oben nach unten

– Kollaborationsdiagramme (collaboration diagram)• Die Nachrichten werden bei Bedarf nummeriert, um ihre zeitliche

Abfolge zu verdeutlichen

Page 23: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -23- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Verhaltensbezogene Objektbeziehungen: Informationsfluss

• Beispiel:– Kollaborationsdiagramm einer komplexeren

Interaktion „Anmeldung mit Mahnung“ zwischen :Student und :Studentensekretariat

Page 24: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -24- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Verhaltensbezogene Objektbeziehungen: Informationsfluss

• Informationsflussbeziehungenkönnen i.A. als Client/Server Beziehungen modelliert werden– Ein Objekt spielt dabei die Rolle des Kunden

(Auftraggeber, Client)• Dieses fordert eine Dienstleistung an

– Ein anderes Objekt spielt die Rolle des Dienstleisters (Lieferant, Server)

• Dieses erbringt die Dienstleistung

Page 25: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -25- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Verhaltensbezogene Objektbeziehungen: Client/Server

• Dienstleistungen des Servers sind aufrufbare Methoden– Der Kunde ruft die Methode des Servers auf und liefert gegebenenfalls nötige

Parameter mit– Der Server führt die Methode aus und liefert ein Ergebnis zurück

• Sei es nur die Meldung, dass er fertig ist– Client und Server sind hier wie bei einem Telefongespräch für die Dauer des

Methodenaufrufs im Gleichklang• Der Client wartet zuerst, bis der Server seinen Aufruf akzeptiert und wartet

danach auf das Ergebnis• Synchrone Kommunikation (synchronous communication)

• Der Methodenaufruf (method call) ist von großer Bedeutung, da er die Erledigung von Aufgaben durch Delegation von Unteraufgaben erlaubt– Funktioniert aber nicht ohne weiteres zwischen räumlich getrennten Systemen

• Wir veranschaulichen den Methodenaufruf als Pfeil mit geschlossener Spitze über der zugrundeliegenden Beziehung– Wir dekorieren den Pfeil nach Bedarf mit geeigneten Erläuterungen

Page 26: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -26- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Verhaltensbezogene Objektbeziehungen: Methodenaufruf

• Beispiel: – Ein Roboter :Robot gibt einem seiner

„Antriebe“ :Drive einen Auftrag durch den Methodenaufruf vorwärts()

Methodenaufruf in JavaDer Client ruft auf einem Server-Objekt d der Klasse Drive eine Methode auf.// ...d.vorwärts();// ...

Page 27: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -27- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Verhaltensbezogene Objektbeziehungen

• Jede Einschlussbeziehung ermöglicht im allgemeinen eine Informationsflussbeziehung– Das umfassende Objekt kennt seine Teile und kann

ihnen deshalb eine Nachricht senden bzw. ihre Methoden aufrufen

d.vorwärts();

Drive d;vorwärts();

Page 28: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -28- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Verhaltensbezogene Objektbeziehungen: Methodenaufruf

• Der Methodenaufruf kann insbesondere in räumlich getrennten Systemen auch als Austausch eines Nachrichtenpaares verstanden werden– Allerdings mit der Maßgabe, dass der Empfänger die

Auftragsnachricht möglichst zeitnah bearbeitet und– der Sender der Auftragsnachricht wartet, bis er die zugehörige

Quittungsnachricht (mit dem Ergebnis) erhalten hat• Im objektorientierten Kontext wird manchmal nur noch

vom Versand von Nachrichten gesprochen, auch wenn es sich um Methodenaufrufe handelt– Da Nachrichten immer auch über Systemgrenzen hinweg verschickt

werden können– Allerdings ist Infrastruktur für einen entfernten Methodenaufruf

(remote method invocation) heute allgemein verfügbar• Java RMI • RPC (remote procedure call) Software für C

Page 29: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -29- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Verhaltensbezogene Objektbeziehungen: Client/Server

• Ein Methodenaufruf kann also als spezielle Form einer Informationsflussbeziehung verstanden werden

• Beispiel: – Ein Roboter :Robot interagiert mit einem seiner Antriebe :Drive

Als allgemeiner InformationsflussPaar von Nachrichten

Zum Vergleich noch einmal alsMethodenaufruf

Page 30: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -30- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Verhaltensbezogene Objektbeziehungen: Client/Server

• Ein Objekt kann sowohl Client als auch Server sein

• :Kunde im Beispiel nur Client

• :AutoHersteller ist Server (für Kunde) als auch Client (für Zulieferer1 und Zulieferer2)

• Zulieferer1 und Zulieferer2 sind Server

Page 31: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -31- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Objektorientierte Software-Entwicklung

• Hauptphasen bei der objektorientierten Software-Entwicklung– Analyse (analysis)– Entwurf (design)– Implementierung (implementation)

Page 32: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -32- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Hauptphasen der objektorientierten Software-Entwicklung: Analyse

• Analyse (analysis)– „Reale Welt“ wird auf die Existenz von Objekten

und Objektbeziehungen hin untersucht• Ein objektorientiertes Modell der realen Welt wird

erstellt

• Außerdem wird analysiert, auf welche Art das Softwaresystem später genutzt werden soll

– Welche Funktionalität es wem zur Verfügung stellen muss

– Es wird gefragt, was mit den Objekten warum geschieht oder geschehen soll

Page 33: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -33- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Hauptphasen der objektorientierten Software-Entwicklung: Entwurf

• Entwurf (design)– Das objektorientierte Modell der realen Welt wird in

die Welt der Software übertragen – Es wird aufgrund von programmiertechnischen

Notwendigkeiten ergänzt oder modifiziert• Es entsteht ein Modell der Software-Architektur

– Nun ist von Interesse, wie etwas im Prinzip geschehen soll

Page 34: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -34- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Hauptphasen der objektorientierten Software-Entwicklung: Implementierung

• Implementierung (implementation)– Die Software-Architektur wird zum lauffähigen

Programm konkretisiert• Objektzustände werden durch Datenstrukturen

repräsentiert

• Objektfunktionalität wird durch Algorithmen realisiert und ausprogrammiert

– Es wird genau festgelegt, wie alles im Einzelnen geschieht

Page 35: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -35- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Objektorientierte Analyse und Entwurf

• Objektorientierte Analyse beschäftigt sich mit dem Extrahieren von Objektklassen und Objektbeziehungen aus einer informellen Problembeschreibung– Das Ziel ist es, ein Modell der realen Welt zu gewinnen, das dann im

anschließenden Entwurf zum Grundstock eines Modells der Software wird

• Bei der Analyse beginnt man mit einer natürlich-sprachlichen Beschreibung des Problems – Das Problem kann z. B. sein, dass ein bestimmtes Software-System zur

Anlagesteuerung gebraucht wird– Zum einen muss das Umfeld des Systems beschrieben werden, also z. B.

die zu steuernden Geräte einer Anlage– Zum anderen werden alle Nutzungsarten (use cases) separat beschrieben

mit einer genauen schrittweisen Aufzählung der abzubildenden Arbeitsabläufe

• Wir sprechen von einer Nutzungsartanalyse (use case analysis) und Nutzungsszenarien (scenarios)

Page 36: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -36- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Objektorientierte Analyse und Entwurf

• Diese Beschreibungen untersuchen wir gezielt nach – darin enthaltenen Objekten, ihren Attributen, ihrer

Funktionalität und ihren Beziehungen• Substantive geben oft Hinweise auf Objekte und ihre Zustände,• Verben auf Funktionalität,• Aussagen wie „hat ein“ oder „ist ein“ deuten auf Objektbeziehungen

hin

• Im objektorientierten Entwurf werden die gefundenen Strukturen auf die jeweilige Programmiersprache abgebildet und gegebenenfalls um softwaretechnische Notwendigkeiten und Hilfskonstrukte (z. B. spezielle Datenstrukturen) ergänzt– Da wir diese Konstrukte hier noch nicht kennen, konzentrieren

wir uns im folgenden größeren Beispiel auf die Analyse und den unmittelbar durch sie bedingten Teil des Entwurfs

Page 37: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -37- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Analyse einer Werkstück-Vereinzelungseinheit

• Gegeben ist eine modellhafte Roboterzelle, bestehend aus einem Roboter mit Zuführ- bzw. Wegführsystemen– Zu Demonstrationszwecken werden Gummibälle in Röhren

und über ein Transportsystem im Kreis bewegt• Der Roboter hebt die Bälle von einem System aufs andere

– Es ist hier nur die Steuerung für die sog. Vereinzelungseinheit zu entwerfen

• Sie ist typisch für die Aufgabe, einen Strom aus Werkstücken (Teilen) so zu separieren, dass die Teile einzeln aufgenommen und weiterbearbeitet werden können

Page 38: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -38- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Analyse einer Werkstück-Vereinzelungseinheit

Roboterzelle

Applet zur Simulation der Vereinzelung

http://robo16.fh-reutlingen.de/german/

Page 39: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -39- Springer-Verlag, ISBN 3-540-20958-1

Werkstück-Vereinzelungseinheit

Roboterzelle

Nachbau der Vereinzelungseinheit(Bälle werden nach links ausgeblasen)

http://robo16.fh-reutlingen.de/german/DemonstrationenFernsteuerung einer Werkstückvereinzelung

Page 40: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -40- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Analyse einer Werkstück-Vereinzelungseinheit

• Situationsbeschreibung– Die Vereinzelungseinheit besteht aus einer senkrechten Röhre, zwei

Schiebern A und B, zwei Sensoren C und D, sowie einem Druckluftventil V – In der Röhre können Bälle gespeichert werden, die von oben zugeführt

werden und die auf Anforderung unten einzeln aus der Röhre geblasen werden sollen

– Die Schieber können die Stellungen geöffnet oder geschlossen einnehmen• Ist ein Schieber geschlossen, so ist die Röhre geschlossen

– Die Sensoren melden, ob sich an der entsprechenden Stelle ein Ball befindet• Falls ja, sind sie aktiviert, falls nein, sind sie deaktiviert

– Am unteren Ende der Röhre befindet sich ein Druckluftventil, das geöffnet oder geschlossen werden kann und das nicht ständig geöffnet bleiben sollte

Page 41: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -41- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Analyse einer Werkstück-Vereinzelungseinheit

• Vereinfachtes Schema der Vereinzelungseinheit

• Simulation in einem Applet

Page 42: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -42- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Analyse einer Werkstück-Vereinzelungseinheit

• Nutzungsszenarien:– 1. Standardoperation:

• Die Bälle werden von oben zugeführt und von der Röhre gespeichert

• Auf Anforderung wird genau ein Ball freigegeben und aus dem Ausgabeschacht geblasen

– 2. Wartung/Fehlerbeseitigung: • Der Wartungstechniker aktiviert einen Wartungszyklus, in dem alle

Operationen der beteiligten Geräte einmal ausgeführt werden

• Stellt er eine Fehlfunktion fest, so lässt er sich die Seriennummer des betreffenden Geräts ausgeben und tauscht es aus

Page 43: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -43- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Analyse einer Werkstück-Vereinzelungseinheit

• Mögliche Objekte– Vereinzelungseinheit, Schieber, Sensor, Ventil, Ball(?),

Röhre(?)

– Bei Ball und Röhre ist fraglich, ob sie Funktionalität und Zustände haben

• Beziehungen– Die Vereinzelungseinheit enthält Schieber, Sensoren, Ventil

und eine Röhre

– Bälle sind kein integraler Bestandteil, aber es besteht in jedem Fall eine (eventuell temporäre) Beziehung

Page 44: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -44- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Analyse einer Werkstück-Vereinzelungseinheit

• Modellierung der Beziehungen

Alternative Klassendiagramme für die Vereinzelungseinheit

Page 45: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -45- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Analyse einer Werkstück-Vereinzelungseinheit

Vereinzelungseinheit (Alternative I) nach Szenarium 1

Für Szenarium 2

Page 46: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -46- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Analyse einer Werkstück-Vereinzelungseinheit

Klassendiagramm für dieVereinzelungseinheitmit Vererbung(des generalisierendenKonzepts „Gerät“).

(Für Szenarium II, für get_Seriennummer)

Page 47: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -47- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Analyse einer Werkstück-Vereinzelungseinheit

• Nun folgt ein weiterer Zyklus der Präzisierung um Hilfskonstrukte mit dem Ziel der Implementierung– Insbesondere ist die (1:n)-Beziehung zu Ball zu modellieren

• Wir gehen in die Analyse zurück– Wir erfahren (vom Hersteller):

• Die Vereinzelungseinheit enthält zu jedem Zeitpunkt eine Menge von maximal sieben Bällen

• Eine endliche Menge kann durch ein Software-Objekt „E-Menge“ modelliert werden, da wir es mit einem abstrakten Datentyp mit Grundmenge und Funktionalität (einfügen, wegnehmen) zu tun haben– Enthaltensein ist hier eine lose Assoziation, da die Bälle auch außerhalb der

Menge existieren können

Page 48: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -48- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Analyse einer Werkstück-Vereinzelungseinheit

Klassendiagramm für E-Menge

Page 49: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -49- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Entwurfsmuster

• Man ist bestrebt, für häufig vorkommende Problemstellungen entsprechende Entwurfsmuster (design patterns) für die Architektur der Software zu entwickeln

• Ein Entwurfsmuster besteht aus einer Anzahl von Klassen und ihren Beziehungen– Gegeben durch ein Klassendiagramm, Interaktionsdiagramm, ...

• Die für die Problemstellung relevanten Attribute und Methoden sind skizziert– aber nicht im Detail vorgeschrieben

• Ein konkreter Entwurf folgt dem Muster, gestaltet es aber im Detail noch aus

Page 50: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -50- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Beispiel: Architekturmuster einer Gerätefernsteuerung

• Schema eines Geräts mit entfernter Steuerung

Page 51: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -51- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Beispiel: Architekturmuster einer Gerätefernsteuerung

Klassendiagramm für Muster „Remote Control- Controller-Hardware“

Page 52: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -52- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Beispiel: Architekturmuster einer Gerätefernsteuerung

• Die Geräte-Hardware selbst unterstützt aber keine Funktionsaufrufe – Kann deshalb unmittelbar nur als Klasse mit Speicherstellen anstatt

von Methoden modelliert werden.

• Für die Realisierung brauchen wir einen Adapter

• Adapter-Pattern

Page 53: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -53- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Beispiel: Architekturmuster einer Gerätefernsteuerung

• Schema Remote-Controller

Page 54: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -54- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Beispiel: Architekturmuster einer Gerätefernsteuerung

• Entwurfsmuster des Stellvertreters (Proxy)

Page 55: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -55- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Objekte, Klassen, abstrakte Datentypen

• Ein Datentyp ist gegeben durch die Spezifikation einer Menge von Objekten mit gleichartigem Zustand und gleicher Funktionalität

• Eine Objekt-Klasse repräsentiert einen Typ (type) durch eine Implementierung– Objekt-Zustand in Datenstruktur gespeichert– Funktionalität durch Funktionen ausprogrammiert (die auf Objekten operieren)

• Diese Bündelung von Objekten mit den auf ihnen relevanten Operationen ist ganz ähnlich wie bei herkömmlichen abstrakten Daten-Typen – In Mathematik wird i.A. von Signaturen gesprochen

• Zustand ist Konzept der Informatik, nicht der Mathematik, siehe auch später

Page 56: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -56- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Objekte, Klassen, abstrakte Datentypen

• Aufrufschnittstelle besteht aus öffentlichen (public) Methoden und Attributen

• Zur Realisierung der Funktionalität werden i.A. auch private Methoden und Attribute benötigt– Dies ergibt sich auch aus dem Prinzip der

funktionalen Dekomposition des Software Designs

Page 57: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -57- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Funktionale Dekomposition

• Funktionale Dekomposition ist ein allgemeines Entwurfsprinzip für Software– Das auch bei objektorientierter Software

Entwicklung wichtigen Platz hat– Ganz wesentlich funktionaler Programmierung

zugrundeliegt– Und auch bei imperativen Sprachen eingesetzt

werden sollte

Page 58: Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,

W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -58- Springer-Verlag, ISBN 3-540-20958-1

Folien zu Kapitel 4: Objektorientierte Software-Entwicklung

Funktionale Dekomposition

• Im Verfahren der funktionalen Dekomposition geht man folgendermaßen vor:

1) Hierarchisch absteigende Zerlegung der Funktion in immer elementarere Teilfunktionen,

2) Abstrakte Spezifikation der Funktionen (bzw. Methoden), die etwa die Aufrufschnittstelle realisieren sollen die jeweils von höheren Funktionen aufgerufen werden und selbst kleinere Teilfunktionen aufrufen

3) Ausprogrammieren der Funktionen (bzw. Methoden)