Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag,"—  Präsentation transkript:

1 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -1- Springer-Verlag, ISBN 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

2 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -2- Springer-Verlag, ISBN 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

3 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -3- Springer-Verlag, ISBN 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)

4 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -4- Springer-Verlag, ISBN 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

5 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -5- Springer-Verlag, ISBN Objekte und Klassen Weitere Beispiele: UML Buch (Java Stil)

6 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -6- Springer-Verlag, ISBN 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

7 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -7- Springer-Verlag, ISBN 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

8 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -8- Springer-Verlag, ISBN 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

9 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -9- Springer-Verlag, ISBN 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

10 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -10- Springer-Verlag, ISBN 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)

11 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -11- Springer-Verlag, ISBN 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

12 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -12- Springer-Verlag, ISBN Strukturelle Objektbeziehungen: Einschlussbeziehungen Beispiel: –Eine Vorlesung hat 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

13 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -13- Springer-Verlag, ISBN 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

14 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -14- Springer-Verlag, ISBN 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(); }

15 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -15- Springer-Verlag, ISBN 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 –Daten O Daten S und Methoden O Methoden S

16 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -16- Springer-Verlag, ISBN 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

17 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -17- Springer-Verlag, ISBN Strukturelle Objektbeziehungen: Vererbungsbeziehungen Beispiel: –Der ZustandSeriennummer, 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

18 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -18- Springer-Verlag, ISBN 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) { //... } }

19 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -19- Springer-Verlag, ISBN 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)

20 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -20- Springer-Verlag, ISBN 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

21 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -21- Springer-Verlag, ISBN Verhaltensbezogene Objektbeziehungen: Informationsfluss Beispiel für Nachrichtenversand: –Ein Objekt :Student der Klasse Student schickt einem Objekt :Studentensekretariat die Personaldaten

22 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -22- Springer-Verlag, ISBN 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

23 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -23- Springer-Verlag, ISBN Verhaltensbezogene Objektbeziehungen: Informationsfluss Beispiel: –Kollaborationsdiagramm einer komplexeren Interaktion Anmeldung mit Mahnung zwischen :Student und :Studentensekretariat

24 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -24- Springer-Verlag, ISBN Verhaltensbezogene Objektbeziehungen: Informationsfluss Informationsflussbeziehungen kö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

25 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -25- Springer-Verlag, ISBN 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

26 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -26- Springer-Verlag, ISBN Verhaltensbezogene Objektbeziehungen: Methodenaufruf Beispiel: –Ein Roboter :Robot gibt einem seiner Antriebe :Drive einen Auftrag durch den Methodenaufruf vorwärts () Methodenaufruf in Java Der Client ruft auf einem Server-Objekt d der Klasse Drive eine Methode auf. //... d.vorwärts(); //...

27 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -27- Springer-Verlag, ISBN 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();

28 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -28- Springer-Verlag, ISBN 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

29 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -29- Springer-Verlag, ISBN 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 Informationsfluss Paar von Nachrichten Zum Vergleich noch einmal als Methodenaufruf

30 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -30- Springer-Verlag, ISBN 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

31 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -31- Springer-Verlag, ISBN Objektorientierte Software-Entwicklung Hauptphasen bei der objektorientierten Software-Entwicklung –Analyse (analysis) –Entwurf (design) –Implementierung (implementation)

32 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -32- Springer-Verlag, ISBN 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

33 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -33- Springer-Verlag, ISBN 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

34 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -34- Springer-Verlag, ISBN 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

35 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -35- Springer-Verlag, ISBN 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)

36 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -36- Springer-Verlag, ISBN 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

37 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -37- Springer-Verlag, ISBN 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

38 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -38- Springer-Verlag, ISBN Analyse einer Werkstück-Vereinzelungseinheit Roboterzelle Applet zur Simulation der Vereinzelung

39 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -39- Springer-Verlag, ISBN Werkstück-Vereinzelungseinheit Roboterzelle Nachbau der Vereinzelungseinheit (Bälle werden nach links ausgeblasen) Demonstrationen Fernsteuerung einer Werkstückvereinzelung

40 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -40- Springer-Verlag, ISBN 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

41 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -41- Springer-Verlag, ISBN Analyse einer Werkstück-Vereinzelungseinheit Vereinfachtes Schema der Vereinzelungseinheit Simulation in einem Applet

42 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -42- Springer-Verlag, ISBN 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

43 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -43- Springer-Verlag, ISBN 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

44 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -44- Springer-Verlag, ISBN Analyse einer Werkstück-Vereinzelungseinheit Modellierung der Beziehungen Alternative Klassendiagramme für die Vereinzelungseinheit

45 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -45- Springer-Verlag, ISBN Analyse einer Werkstück-Vereinzelungseinheit Vereinzelungseinheit (Alternative I) nach Szenarium 1 Für Szenarium 2

46 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -46- Springer-Verlag, ISBN Analyse einer Werkstück-Vereinzelungseinheit Klassendiagramm für die Vereinzelungseinheit mit Vererbung (des generalisierenden Konzepts Gerät). (Für Szenarium II, für get_Seriennummer )

47 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -47- Springer-Verlag, ISBN 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

48 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -48- Springer-Verlag, ISBN Analyse einer Werkstück-Vereinzelungseinheit Klassendiagramm für E-Menge

49 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -49- Springer-Verlag, ISBN 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

50 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -50- Springer-Verlag, ISBN Beispiel: Architekturmuster einer Gerätefernsteuerung Schema eines Geräts mit entfernter Steuerung

51 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -51- Springer-Verlag, ISBN Beispiel: Architekturmuster einer Gerätefernsteuerung Klassendiagramm für Muster Remote Control- Controller-Hardware

52 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -52- Springer-Verlag, ISBN 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

53 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -53- Springer-Verlag, ISBN Beispiel: Architekturmuster einer Gerätefernsteuerung Schema Remote-Controller

54 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -54- Springer-Verlag, ISBN Beispiel: Architekturmuster einer Gerätefernsteuerung Entwurfsmuster des Stellvertreters (Proxy)

55 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -55- Springer-Verlag, ISBN 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

56 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -56- Springer-Verlag, ISBN 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

57 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -57- Springer-Verlag, ISBN 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

58 Folien zu Kapitel 4: Objektorientierte Software-Entwicklung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java -58- Springer-Verlag, ISBN 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)


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

Ähnliche Präsentationen


Google-Anzeigen