Analyse und Entwurf objektorientierter Systeme Teil 3 Modellbildung in der Analysephase 3.1 Statische und dynamische Notationselemente Modul WI111: Objektorientierte Programmierung Fachrichtung Wirtschaftsinformatik Prof. Dr. Gert Faustmann Fachbereich Berufsakademie der FHW Berlin
Statische Konzepte: Objekt Ein Objekt hat eine Identität, einen Zustand und ein Verhalten. Das Verhalten eines Objekts (Operationen) wird allerdings nur bei der zugehörigen Klasse beschrieben. Objekt:Klasse optional Attribut1 = Wert1 Attribut2 = Wert2 Objekt :Klasse Objekt mit Namen, Objekt mit Namen Namenloses Typ und Attributwerten Objekt mit Typ Mögliche Angaben für Attribute: Attribut:Typ = Wert z.b: Anzahl:int = 0 Attribut = Wert Anzahl = 0 Attribut Anzahl
Statische Konzepte: Objektdiagramm Das Objektdiagramm beschreibt Objekte und ihre Verbindungen zu einem bestimmten Zeitpunkt. :Hose Beispiel: Meyer:Kunde Müller:Kunde :Auftrag :Auftrag :Auftrag :Hemd :Hemd :Hut
Übung Erstellen Sie ein Objektdiagramm für das folgende Problem: Eine Tagung ist zu organisieren. Für jeden Teilnahmer der Tagung werden der Name, die Adresse und der Status (Student, Mitglied, Nichtmitglied) gespeichert. Jeder Teilnehmer kann sich für ein oder mehrere halbtägige Tutorien, die zusätzlich angeboten werden, anmelden. Für jedes Tutorium werden dessen Nummer, die Bezeichnung sowie das Datum gespeichert. Alle Tutorien kosten gleich viel. Damit ein Tutorium stattfindet, müssen mindestens 10 Anmeldungen vorliegen. Jedes Tutorium wird von genau einem Referenten angeboten. Für jeden Referenten werden dessen Name und Firma gespeichert. Ein Referent kann sich auch für ein oder mehrere Tutorien anderer Referenten anmelden und kann bei diesen kostenlos zuhören. Diese Anmeldungen zählen bei der Ermittlung der Mindestanmeldungen nicht mit. Ein Teilnehmer kann nicht gleichzeitig Referent sein. Ein Referent kann mehrere Tutorien anbieten. An einem Tutorium können mehrere Referenten kostenlos teilnehmen. Ein Teilnehmer kann sich in der Tagungsanmeldung auch für einige Rahmenprogramme (z.b. Besuch eines Musicals) eintragen lassen. Für jedes Rahmenprogramm werden dessen Bezeichnung, das Datum, die Zeit, der Ort und die Kosten gespeichert.
Statische Konzepte: Klasse Eine Klasse beschreibt für eine Menge von Objekten deren Struktur (Attribute) und Verhalten (Operationen). Mitarbeiter Mitarbeiter Mitarbeiter Mitarbeiter optional Personalnummer Name Gehalt Personalnummer Name Gehalt einstellen() erhöhe Gehalt() drucke Ausweis() optional einstellen() erhöhe Gehalt() drucke Ausweis() Ebenso mögliche Darstellungen der Klasse Mitarbeiter Der Name einer Klasse sollte ein Substantiv im Singular sein, ggfs. ergänzt durch ein Adjektiv Zur Objektverwaltung durch eine Klasse: In der OOA nimmt man an, dass jede Klasse ihre Objekte kennt. Dagegen müssen in der OOD zusätzliche Mittel eingefügt werden (z.b. Listen, DB).
Statische Konzepte: Attribute Attribute beschreiben die Daten, die von den Objekten einer Klasse angenommen werden können. Ein Klassenattribut existiert nur einmal für alle Objekte einer Klasse. Ein abgeleitetes Attribut kann jederzeit aus anderen Attributen berechnet werden. Konto Nr Kontenanzahl Person Geburtsdatum /Alter
Statische Konzepte: Operationen Operationen sind ausführbare Tätigkeiten. Die Menge aller Operationen wird als das Verhalten einer Klasse oder als deren Schnittstelle bezeichnet. Klasse Objektoperation() Konstruktoroperation() Klassenoperation() abstrakteoperation() arbeitet auf einem existierenden Objekt erzeugt ein neues Objekt arbeitet auf allen Objekten, z.b. suchen, summieren muss in abgeleiteter Klasse definiert werden Als Objektoperationen werden in der OOA nur externe Operationen aufgeführt, die von außerhalb des Objekts aufgerufen werden und somit auch auf der Benutzeroberfläche erscheinen. Verwaltungsoperationen (z.b. new(), delete(), get(), set(), link(), unlink()) werden nicht in das Klassendiagramm des OOA-Modells eingezeichnet.
Operationsspezifikationen Für jede Operation in einem Klassendiagramm ist eine semiformale Operationsspezifikation nach folgendem Schema zu erstellen: Effect: In: Out: Beschreibung der erfolgreichen Wirkung einer Ausführung der Operation, betrachtet vom Standpunkt des Aufrufers Name und Rolle eines Eingangsparameters Name und Rolle eines Ausgangsparameters Result: Inhalt des Operationsergebnisses Throws: Fachliche Ausnahmefälle und ihre jeweiligen Bedingungen Effect: In: Result: Buch wird als vom Leser mit einer Frist von 4 Wochen ausgeliehen markiert Buch Beispiel: ausleihen(buch:buch):datum Datum der Rückgabefrist Throws: AusgeliehenException, falls Buch bereits ausgeliehen ist VorgemerktException, falls Buch bereits vorgemerkt wurde
Statische Konzepte: Klassendiagramm Eine Klassendiagramm beschreibt für eine Menge von Objekten anhand ihrer Klassen mögliche Beziehungen (Assoziationen und Vererbung) Objektdiagramm Kardinalität Klassendiagramm Leserichtung Assoziation
Statische Konzepte: Assoziationen Assoziationen modellieren Verbindungen zwischen Objekten einer oder mehrerer Klassen. 1 genau 1 Assoziationen haben 0..1 0 bis 1 stets eine Kardinalität * 0 bis viele 1..* 1 bis viele 2, 4, 6..* 2, 4, oder mehr als 5 Restriktionen können Assoziationen einschränken: Klassendiagramm mit Restriktion für Assoziationen Mögliches Objektdiagramm
Statische Konzepte: Aggregation und Komposition Aggregation und Komposition sind besondere Arten der Assoziation: Eine Aggregation liegt vor, wenn eine whole-part-beziehung besteht. Das Teilobjekt kann in mehreren Aggregat-Objekten enthalten sein. Eine Komposition ist die starke Form der Aggregation. Zusätzlich gilt: Jedes Teilobjekt kann nur zu einem Aggegatobjekt gehören und das Aggegatobjekt ist verantowtlich für seine Teilobjekte (z.b. Kopieren, Löschen des Aggegatobjekts).
Statische Konzepte: Vererbung Die Vererbung beschreibt eine Beziehung zwischen einer allgemeinen Klasse und einer spezialisierten Klasse. Klasse 4 ist eine abstrakte Klasse, von der weitere Klassen abgeleitet werden müssen Die Klassen 2 und 3 erben Attribute und Operationen der Klasse 1
Übung Erstellen Sie ein Klassendiagramm für das folgende Problem: Wir betrachten eine Bank und ihre Kunden. Eine Person wird Kunde, wenn sie ein Konto eröffnet. Ein Kunde kann beliebig viele weitere Konten eröffnen. Für jeden neuen Kunden werden dessen (nicht notwendigerweise eindeutiger) Name, Adresse und das Datum der ersten Kontoeröffnung erfasst. Bei der Kontoeröffnung muss der Kunde gleich eine erste Einzahlung vornehmen. Wir unterscheiden Girokonten und Sparkonten. Girokonten dürfen bis zu einem bestimmten Betrag überzogen werden. Für jedes Konto wird ein individueller Habenzins, für Girokonten auch ein individueller Sollzins festgelegt; außerdem besitzt jedes Konto auch eine eindeutige Kontonummer. Für jedes Sparkonto wird die Art des Sparens, z.b. Festgeld, gespeichert. Ein Kunde kann Beträge einzahlen und abheben. Desweiteren werden Zinsen gutgeschrieben und bei Girokonten Überziehungszinsen abgebucht. Um die Zinsen zu berechnen, muss für jede Kontobewegung das Datum und der Betrag notiert werden. Die Gutschrift/Abbuchung der Zinsen erfolgt bei den Sparkonten jährlich und bei den Girokonten quartalsweise. Ein Kunde kann jedes seiner Konten wieder auflösen. Bei der Auflösung des letzten Kontos hört er auf, Kunde zu sein.
Dynamische Konzepte: Sequenzdiagramm Abläufe der fachlichen Lösung verdeutlichen die Zusammenarbeit der Klassen des statischen Modells vor dem Hintergrund eines Geschäftsprozesses. Sequenzdiagramme zeigen den zeitlichen Aspekt des dynamischen Verhaltens. Botschaft stellt den Aufruf einer Operation dar :Mitarbeiter :Auftrag anmelden() auslesen() prüfen() laden()* Objektlinie repräsentiert die Existenz eines Objekts :Aufgabe Objekt wird durch Aufruf erschaffen Operationslinie repräsentiert die Ausführung einer Operation Mehrfaches Ausführen durch das Symbol * Operationsaufrufe können unter Bedingungen geschehen: [Bedingung] operation() Die Operation wird nur ausgeführt, falls die Bedingung gilt. Gleiches ist auch für Iterationen möglich: *[Bedingung] operation()
Dynamische Konzepte: Kollaborationsdiagramme Ebenso wie Sequenzdiagramme beschreiben Kollaborationsdiagramme die Zusammenarbeit der Klassen. Sie betonen jedoch die Verbindung zwischen den Objekten. anmelden() :Mitarbeiter auslesen() :Aufgabe 1.1: laden()* :Auftrag Operationsreihenfolge wird durch Nummerierung ausgedrückt Unteraufrufe werden durch eine geschachtelte Nummerierung ausgedrückt 1: prüfen() Die aufgeführten Objekte sind Platzhalter für beliebige Objekte der Klasse! Dagegen werden im Objektdiagramm konkrete Instanzen einer Klasse zu einem bestimmten Zeitpunkt des Systems betrachtet.
Validierung der Sichten Die Überprüfung der erstellten Diagramme erfolgt aus zwei Perspektiven : 1. Diagrammübergreifende Konsistenz (Prüfung durch CASE-Werkzeuge) Beispiele: A B Prüfung der Objektdiagramme, ob alle Klassen und Assoziationen durch die modellierten Geschäftsprozesse abgedeckt werden. In Interaktionsdiagrammen dürfen nur Klassen, Objekte und Operationen aus dem Klassendiagramm verwendet werden. 2. Semantische Korrektheit der Diagramme (Prüfung durch formale Inspektion) Beispiele: C D E komplette Spezifikation des Standardfalls eines Geschäftsprozesses geeignetes Abstraktionsniveau für Klassen keine Beschreibung von Operationen der Benutzungsoberfläche Aktivitätsdiagramm Klassendiagramm :Mitarbeiter :Auftrag :Aufgabe Authentifikation [Fehlschlag] Aufgaben ausführen «Enumeration» StatusT Aufgabe 1 1..* Auftrag 1 1 0..1 Bearbeiter * 1 Mitarbeiter * 1 Auftraggeber B anmelden() auslesen() prüfen() C Aufgaben ermitteln [überfällig] Mitarbeiter Aufgaben delegieren Mitarbeiter anlegen «extend» Aufgaben erteilen D 1..0 DauerT Betrag: Integer Einheit: ZeiteinheitT Unterauftrag a1:aufgabe status = beendet a2:aufgabe :Auftrag Bearbeiter m1:mitarbeiter Personal-Nr. = 234567 Name = Müller, Elke m2:mitarbeiter laden()* E Warnung anzeigen Aufgaben anzeigen Anmelden Administrator status = zugewiesen Auftraggeber Personal-Nr. = 123456 Name = Meier, Michael d1:dauert d2:dauert Use Case-Diagramm A Betrag: 3 Betrag: 2 Einheit: Stunde(n) Einheit: Tag(e) Objektdiagramm Sequenzdiagramm D
Übung Erstellen Sie ein Sequenz- und Kollaborationsdiagramm für den folgenden Ablauf: Ein neuer Kunde eröffnet bei einer Bank ein Sparkonto. Zuerst werden die Daten dieses Kunden erfasst. Bei der Kontoeröffnung muss der Kunde gleich eine Einzahlung vornehmen, d.h. es findet die erste Kontobewegung für dieses Konto statt.