24 Methoden und Verfahren der objektorientierten Analyse Realisierung
24. Methoden und Verfahren der objektorientierten Analyse Realisierung Artikelverwaltung Die folgenden Anforderungen beschreiben eine einfache Artikelverwaltung, die objektorientiert zu modellieren ist. G. Heyer 1 Digitale Informationsverarbeitung
10 Schritte bis zum OOA-Modell 1 Finden Sie Klassen ( Klassen) Für jede Klasse nur soviele Attribute und Operationen identifizieren, wie für das Problemverständnis und das einwandfreie Identifizieren der Klasse notwendig sind. 2 Finden Sie Assoziationen und Aggregationen ( Assoziationen, Aggregationen, Kardinalitäten, Muster) Parallel zu 1 Assoziationen und / oder Aggregationen ermitteln, wobei die Unterscheidung zwischen beiden noch nicht relevant ist. Kardinalitäten können zunächst vernachlässigt werden. 3 a Finden Sie Attribute für jede Klasse ( Attribute) Weitere Attribute identifizieren und spezifizieren. G. Heyer 2 Digitale Informationsverarbeitung
3 b Finden Sie externe Operationen für jede Klasse ( Operationen) (Externe Operationen werden durch Botschaften, die von der Benutzungs. Oberfläche kommen, aktiviert). Alle Operationen, die an der Benutzungs-Oberfläche sichtbar sind, identifizieren. 3 a und 3 b können vertauscht oder parallel durchgeführt werden. 4 Erstellen Sie den Objekt-Lebenszyklus ( Objekt-Lebenszyklus) Jede Klasse daraufhin überprüfen, ob ein nicht-trivialer Objekt. Lebenszyklus erstellt werden kann. Daraus lassen sich oft weitere Operationen ableiten. 5 Finden Sie Vererbungsstrukturen ( Vererbung, Muster) Erste Strukturen aufgrund der eingetragenen Attribute und Operationen aufstellen. G. Heyer 3 Digitale Informationsverarbeitung
6 Finden Sie interne Operationen für jede Klasse ( Operationen, Botschaften, Objekt-Lebenszyklus) (Interne Operationen werden von Botschaften anderer Objekte aktiviert). Aus externen Operationen (Schritt 3 b) interne ableiten, einschließlich der Ein- / Ausgabeschnittstelle. Dazu Botschaftswege eintragen und / oder Interaktionsdiagramme erstellen. 7 Spezifizieren Sie Operationen ( Botschaften, Objekt-Lebenszyklus) Mischung aus freiem Text, Pseudo-Code-Konstruktionen und Standardbefehlen von impliziten Operationen verwenden. 8 Überprüfen Sie die Vererbungsstrukturen ( Vererbung, Muster) Aufgrund der eingetragenen internen Operationen nochmals die Vererbungsstruktur überprüfen und ggf. korrigieren. G. Heyer 4 Digitale Informationsverarbeitung
9 Überprüfen Sie Assoziationen und Aggregationen ( Assoziationen, Aggregationen, Kardinalitäten, Muster) Aufgrund der Kommunikation zwischen den Objekten Assoziationen und Aggregationen überprüfen und ggf. korrigieren. Endgültige Festlegung auf Assoziationen oder Aggregationen sowie Festlegung der Kardinalitäten. 10 Finden Sie Subsysteme ( Subsysteme) Umfaßt das OOA-Modell mehr als eine DIN A 4 -Seite, dann bereits bei der Klassenidentifizierung grobe Subsystem-Bildung vornehmen, z. B. durch geeignete grafische Anordnung der Klassen. G. Heyer 5 Digitale Informationsverarbeitung
Lastenheft Artikelverwaltung /LF 10/ Die Firma will ihre Artikel und Bestellungen verwalten. /LF 20/ Für jeden Artikel werden die Artikelnummer, die Artikelbezeichnung und der Verkaufspreis festgehalten. Jeder Artikel gehört zu einer oder mehreren Artikelgruppen. /LF 30/ Jeder Artikel kann an mehreren Orten gelagert werden. Beispielsweise lagert die Firma Artikel in ihren Filialen in Essen und Düsseldorf. Pro Lagerort werden für jeden Artikel dessen Maximalbestand, Mindestbestand, aktueller Bestand und Name des Lagers gespeichert. Eine Lagerliste soll Auskunft über die Bestände geben. /LF 40/ Jeder Artikel kann von verschiedenen Lieferanten bezogen werden. Dabei gibt es je nach Lieferant unterschiedliche Einkaufspreise und Verpackungseinheiten. Bei jedem Lieferanten besitzt der Artikel eine eigene Bestellnummer. G. Heyer 6 Digitale Informationsverarbeitung
/LF 50/ Für jeden Lieferanten müssen dessen Name, Adresse, Telefonnummer und der Ansprechpartner gespeichert werden. Jeder Lieferant kann mehrere Artikel liefern. /LF 60/ Jeden Tag werden die Lagerbestände kontrolliert. Wird der Mindestbestand unterschritten, so wird ein Bestellvorschlag erstellt. Er enthält außer den Daten eines Artikels auch die verschiedenen Lieferanten mit ihren Lieferkonditionen. Für jedes Lager wird errechnet, wie viele Artikel nachbestellt werden müssen. Die vorgeschlagene Anzahl errechnet sich aus dem Maximalbestand und dem aktuellen Bestand. Diese Anzahl ist auf ein n-faches der Verpackungseinheit eines jeden Lieferanten abzurunden. /LF 70/ Jeder Artikel kann in beliebiger Anzahl bestellt werden. Dabei wird vom System automatisch der günstigste Lieferant ausgewählt. /LF 80/ Jeder Artikel wird einzeln bei einem Lieferanten bestellt. Für jede Lieferantenbestellung werden das Bestelldatum und das Lieferdatum festgehalten. Der Einfachheit halber schließen wir Teillieferungen aus. G. Heyer 7 Digitale Informationsverarbeitung
/LF 90/ Ein Kunde kann eine oder mehrere Bestellungen erteilen, die erfaßt werden müssen. Jede Bestellung erhält eine eindeutige Bestellnummer. Außerdem werden das Bestelldatum, das Lieferdatum und die Portokosten festgehalten. /LF 100/ Jede Kundenbestellung kann sich auf mehrere Artikel beziehen. Für jeden bestellten Artikel ist die gewünschte Anzahl festzuhalten. Außerdem kann der Gesamtpreis für mehrere Artikel ungleich Anzahl*Verkaufspreis sein. /LF 110/ Jede Kundenbestellung wird von einem Sachbearbeiter bearbeitet. Für jeden Sachbearbeiter sollen dessen Personalnummer, ein Kürzel, der Name und die Telefonnummer gespeichert werden. /LF 120/ Außerdem sollen folgende Statistiken erstellt werden: Welchen Umsatz hat ein Kunde X im aktuellen Jahr erzielt? Welchen Umsatz hat ein Sachbearbeiter X mit seinen verschiedenen Kunden erzielt? G. Heyer 8 Digitale Informationsverarbeitung
Klassendiagramm der Artikelverwaltung Person Lieferkondition Artikel 0, m Nummer 0, m 1 Bezeichnung Verkaufspreis Artikelgruppen Bestellvorschlag erst. (K) Günstigste Lieferkondition 0, m 1 Artikelbestand Lierferanten-Bestell. Kundenbestellung Maximalbestand Mindestbestand Aktueller Bestand Lagername Lagerliste drucken(K) Nachbestellung ermitteln Bestellnr Bestelldatum Lieferdatum Portokosten/Rechn. betrag Erfassen 1, m Bestellposten 1 Anzahl Artikel Gesamtpreis 1 9 Name Telefon 1 Bestelldatum 1 Lieferdatum Anzahl Bestellung durchführen 0, m G. Heyer Einkaufspreis Verpackungseinheit Bestellnr Lieferant Adresse 0, m Ansprechpartner 1 0, m 1 Kunde Nummer 1, m Adresse Umsatz im Jahr 1 0, m Sachbearbeiter Personalnr Kürzel Umsatz pro Kunde Digitale Informationsverarbeitung
Artikelverwaltung Artikel Nummer Bezeichnung Verkaufspreis Artikelgruppen Für alle Objekte der Klasse: Nachbestellung ermitteln (Anzahl, Lagername) (Artikelbestand) 100 65 50 Essen G. Heyer (Lieferant) Müller Textil&Co. . . (Lieferkondition) 10, 00 50 7125 (Artikel) 1234 T-Shirt 20, 00 Freizeit, Sport (Lieferkondition) 12, 00 20 8957 (Artikelbestand) 70 35 40 Düsseldorf (Lieferant) Blues Jeans-Laden Assoziation bzw. Aggregation Objektverwaltung 10 Digitale Informationsverarbeitung
Spezifikation der externen Operation Bestellvorgang_erstellen() Klasse Artikel // Für alle Artikel ist für jedes Lager und als Gesamtsumme zu // ermitteln, welche Anzahl bis zum Maximalbestand fehlt, wobei die // Verpackungseinheiten zu berücksichtigen sind; alle Lieferanten mit // ihren Lieferkonditionen sind anzugeben Für alle Objekte der Klasse: Für jeden Artikelbestand: Artikelbestand. Nachbestellung_ermitteln (out Anzahl, Lagername) Summe = Anzahl von allen Lagerorten Für jede Lieferkondition: Lieferkondition. Get. Verpackungseinheit(); Get. Lieferant() Summe auf n-faches von Verpackungseinheit abrunden G. Heyer 11 Digitale Informationsverarbeitung
Operation Bestellung_durchführen() Klasse Lieferantenbestellung // Bestellung eines gewählten Artikels in der gewünschten Anzahl, wobei // das System den günstigsten Lieferanten wählt Artikel auswählen Eingabe der Anzahl zu bestellender Artikel. Günstige_Lieferkondition_ermitteln(Lieferkondition) Lieferkondition. Get. Verpackungseinheit() Anzahl auf Verpackungseinheiten abrunden Lieferkondition. Get. Lieferant() Lieferanten_Bestellung. Create(Bestelldatum, Anzahl) Von der Klasse Lieferanten-Bestellung existiert ein temporärer Botschaftsweg zur Klasse Lieferkondition. Die Empfängerobjekte der Klasse Lieferkondition werden durch die Operation „Artikel. Günstige_Lieferkondition? “ festgestellt. G. Heyer 12 Digitale Informationsverarbeitung
Operation Erfassen() Klasse // Bestellung eines Kunden erfassen, wobei für jeden // bestellten Artikel ein Bestellposten anzulegen ist. Kundenbestellung Kunden-Bestellung. Create(Bestell-Nr, Bestelldatum) Für jeden Bestellposten: Eingabe von Artikelnummer und Anzahl Bestellposten. Create(Anzahl. Artikel) Bestellposten. Set. Gesamtpreis() = Anzahl. Artikel * Artikel. Get. Verkaufspreis() oder Sonderpreis Rechnungspreis = Summe aller Gesamtpreise + Portokosten Set. Lieferdatum(), Set. Portokosten() Von der Klasse Kunden-Bestellung existiert ein temporärer Botschaftsweg zur Klasse Artikel. In der Bestellung sind die gewünschten Artikel eindeutig identifiziert. Wir können daher direkt auf die Daten der jeweiligen A. zugreifen. G. Heyer 13 Digitale Informationsverarbeitung
Operation Umsatz im Jahr (in Jahr, out Umsatz) //Für einen Kunden ist der Gesamtumsatz des // Jahres zu ermitteln Klasse Kunde Für jede Kundenbestellung Kunden-Bestellung. Get(Rechnungsbetrag(); Get. Bestelldatum() Umsatz = Summe aller Rechnungsbeträge des angegebenen Jahres Operation Umsatz pro Kunde (out Umsatz) Klasse //Für jeden Sachbearbeiter ist die Höhe des Umsatzes // für jeden Kunden zu ermitteln Sachbearbeiter Für jede Kunden-Bestellung. Get. Rechnungsbetrag(); Get. Kunde() addiere alle Rechnungsbeträge pro Kunde separat auf G. Heyer 14 Digitale Informationsverarbeitung
Operation Günstigste_Lieferkondition ermitteln (out Lieferkondition) Für jede Lieferkondition: Lieferkondition. Get. Einkaufspreis() Lieferkondition mit dem niedrigsten Einkaufspreis herausfinden Klasse Operation Lagerliste drucken() // Falls der Mindestbestand eines Artikels in diesem Lager // unterschritten ist, soll auf den Maximalbestand aufgefüllt werden Artikelbestand Rest = Aktueller Bestand - Mindestbestand Wenn kein Rest vorhanden ist dann Anzahl = Maximalbestand - Aktueller Bestand G. Heyer 15 Digitale Informationsverarbeitung
Checkliste „So finden Sie Klassen“ 1 Lassen sich konkrete Objekte identifizieren? Bei technischen Systemen bieten sich die realen Objekte als Ausgangsbasis an. Bei kommerziellen Systemen finden sich Objekte oft in Formularen. 2 top-down und /oder bottom-up-Vorgehensweise? G. Heyer 16 Digitale Informationsverarbeitung
top-down ãLiegen verbale Anforderungen vor, dann Text durchgehen und nach Klassen durchsuchen. ãHandelt es sich um eine potentielle Klasse? ãBesitzt die Klasse Attribute und Operationen oder nur Operationen? bottom-up ãAttribute (Daten) und Operationen(Funktionen) sammeln. ãAttribute und Operationen zu Klassen zusammenfassen. Der Klassenname muß der Gesamtheit der Attribute entsprechen, im Zweifelsfall mehrere Klassen. Im 1. Schritt Attribute und Operationen nur soweit ausfüllen, um Klassen eindeutig zu identifizieren. G. Heyer 17 Digitale Informationsverarbeitung
Checkliste: „So finden Sie Assoziationen“ 1 Liegen zwischen Objekten permanente Beziehungen vor? ãWelche Beziehungen existieren? ãExistieren sie für einen längeren Zeitraum? ãSind die Assoziationen problemrelevant? ãExistiert eine Beziehung unabhängig von allen nicht beteiligten Klassen? In der Problembeschreibung nach Verben suchen, insbesondere: a) räumliche Nähe (in der Nähe von) d) Besitz (hat) b) Aktionen (fährt) e) allgemeine Beziehungen c) Kommunikation (redet mit) G. Heyer (verheiratet mit) 18 Digitale Informationsverarbeitung
Checkliste: „So finden Sie Aggregationen“ 1 Existieren eine Rangordnung und ein enger semantischer Zusammenhang? ãLäßt sich die Beziehung durch „besteht aus“ oder „ist Teil von“ beschreiben? ãKann problemlos angegeben werden, ob eine Klasse Aggregat oder Teil in der Beziehung ist? ãBesteht ein enger semantischer Zusammenhang? ãGehören die beteiligten Klassen in ein Subsystem? ãWenn der Zugriff auf die Teilobjekte ausschließlich über das Aggregat. Objekt erfolgt, dann liegt eindeutig eine Aggregation vor. G. Heyer 19 Digitale Informationsverarbeitung
Checkliste: „So ermitteln Sie die richtigen Kardinalitäten“ Die Kardinalitäten gelten ausschließlich für binäre Assoziationen und Aggregationen. Für jede Seite einer Assoziation / Aggregation ist folgendes zu überlegen: 1 Liegt eine Muß-Beziehung vor? Sobald das Objekt erzeugt ist , muß auch die Beziehung zu dem anderen Objekt aufgebaut werden. 2 Liegt eine Kann-Beziehung vor? Die Beziehung kann zu einem beliebigen Zeitpunkt nach dem Erzeugen des Objekts aufgebaut werden. 3 Ist die Obergrenze fest oder variabel? Ist eine Obergrenze vom Problem her zwingend vorgesehen? Im Zweifelsfall mit variablen Obergrenzen arbeiten. 4 Gelten besondere Bedingungen? Beispiele: Gerade Anzahl, mindestens 2, maximal 6. G. Heyer 20 Digitale Informationsverarbeitung
Checkliste: „So finden Sie Attribute“ 1 Ist ein Attribut problemrelevant im Sinne der Systemanalyse? ãIst jedes Attribut Gegenstand der Systemanalyse? ãKann jedes Attribut „im Laufe seines Lebens“ einen Wert annehmen? ãIst jedes Attribut relevant für die zu modellierende Anwendung? 2 Welcher Blickwinkes und welches Abstraktionsniveau ist relevant? ãIst jedes Attribut unter dem jeweiligen Blickwinkel von Bedeutung? ãWürden für jedes Attribut geeignete Datenstrukturen gebildet? 3 Ist ein Schnappschuß oder die Historie zu modellieren? ãSoll ein Objekt die Attributwerte zu einem bestimmten Zeitpunkt enthalten? ãSoll ein Objekt die Attributwerte über einem gewissen Zeitraum enthalten? Anfragen dazu an das System formulieren. G. Heyer 21 Digitale Informationsverarbeitung
Checkliste: “So finden Sie Operationen“ 1 Welche Aufgaben müssen realisiert werden? Fragen Sie: „Welche Aufgaben hat das System zu erfüllen? “ Fragen Sie nicht: „Welche Operationen enthält jede Klasse? “ 2 Auf welche Ereignisse muß das System reagieren? Überlegen Sie, welche Ereignissen in der Umgebung für das System relevant sind. Für jedes Ereignis muß eine (externe) Operation existieren, die darauf reagiert bzw. entdeckt, daß ein entsprechendes Ereignis vorliegt. Unterscheiden Sie externe Ereignisse und zeitliche Ereignisse. G. Heyer 22 Digitale Informationsverarbeitung
Checkliste: „So erstellen Sie einen Objekt-Lebenszyklus“ 1 Besitzt das Objekt einen nicht-trivialen Lebenszyklus? Ein Objekt-Lebenszyklus sollte spezifiziert werden, wenn gilt: a) Das gleiche Ereignis kann - in Abhängigkeit von dem Zustand, in dem sich das Objekt befindet - unterschiedliche Aktionen auslösen. b) Die Operationen können nur in bestimmten Situationen auf ein Objekt angewendet werden. Tritt in einem anderen Zustand eine entsprechende Botschaft bzw. ein Ereignis auf, so wird sie bzw. es ignoriert. Ein trivialer Objekt-Lebenszyklus liegt vor, wenn er nicht zum besseren Verständnis der Problematik beiträgt. G. Heyer 23 Digitale Informationsverarbeitung
Checkliste: „So erstellen Sie Vererbungsstrukturen“ 1 Liegt eine Struktur der Einfachvererbung vor? Entweder bottom-up (Generalisieren), top-down (Spezialisieren) oder kombiniert. bottom-up: Von den spezialisierten zu den allgemeineren Klassen. a) Bilden einer neuen Oberklasse aus Klassen, die gemeinsame Attribute/ Operationen besitzen. - Ist die Generalisierung / Spezialisierung erfüllt? - Ist die neue Klasse eine abstrakte Klasse? - Liegt die neue Klasse innerhalb des Problembereichs? b) Auswählen einer existierenden Oberklasse? - Ist ein Teil der Attribute / Operationen einer Klasse bereits in einer anderen Klasse definiert? - Gilt die Generalisierung / Spezialisierung? G. Heyer 24 Digitale Informationsverarbeitung
top-down: Von den allgemeineren Klasse ausgehend spezialisierte suchen. a) Kann ein Objekt für jedes seiner Attribute immer einen Wert besitzen? Kann jede Operation angewendet werden? b) Können aus Klassen, die sehr viele Attribute / Operationen besitzen spezialisierte Klassen gebildet werden? 2 Liegt eine Struktur der Mehrfachvererbung vor? Prüfen, ob eine gegebene Klasse eine Unterklasse von zwei oder mehr Klassen sein kann. Lösung von Namenskonflikten. a) Bei Namenskonflikten müssen die Attribute / Operationen der Oberklassen umbenannt werden, oder es muß auf die Mehrfachvererbung verzichtet werden. b) Attribute, die in den Oberklassen namentlich identisch sind, müssen auch vom selben Typ sein. c) Bei der Unterklasse wird durch Angabe der jeweiligen Oberklasse festgelegt, welches Attribut bzw. Operation geerbt werden soll. G. Heyer 25 Digitale Informationsverarbeitung
- Slides: 25