24. Methoden und Verfahren der objektorientierten Analyse Realisierung

Slides:



Advertisements
Ähnliche Präsentationen
g²HANDEL Auftragsverwaltung für Handelsvertretungen
Advertisements

Blue J.
ER-Modell: Objekte und Klassen
Prüfung objektorientierter Programme -1
Zur Rolle der Sprache bei der Modellierung von Datenbanken
Kardinalität von binären Beziehungen (1)
spezielle Nutzersichten formale Ebene (deskriptive Regeln)
Datenmodellierung Externe Phase Informationsstruktur
Die Definitionsphase -Objektorientierte Analyse - Das statische Modell
23. Grundlagen der objektorientierten Analyse
Kapitel 4 Datenstrukturen
OO Analyse Analyseprozess Erstellen eines Modells
Assoziationen Verbindungen zwischen Objekten einer Klasse
Das Entity-Relationship-Modell
Methodik: Objektorientierte Analyse
Objektorientierter Entwurf
Checklisten dynamisches Modell
Franziska Schmidt Sarah Ahlheit
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Objektorientierter Entwurf (OOD) Übersicht
Konzeption und Realisierung eines Software Configuration Management Systems Autor: Alex Rempel Referent: Prof. Dr. Elke Hergenröther Korreferent: Prof.
Java: Objektorientierte Programmierung
Java: Grundlagen der Objektorientierung
Polymorphie (Vielgestaltigkeit)
Lösungen
Methodik: Objektorientierte Analyse
Objektorientierte Konzepte und Notation in UML
CIDOC-CRM Universität zu Köln Historisch-kulturwissenschaftliche Informationsverarbeitung AM 2 Dozent: Prof. Dr. Manfred Thaller Referent: Nelson Marambio.
Datenbankentwurf mit Hilfe des ER-Modells entwickeln
Fakten, Regeln und Anfragen
Vererbung Spezialisierung von Klassen in JAVA möglich durch
Datenmodellierung - Aufbau einer Datenbank -
DVG Klassen und Objekte
Buch S70ff (Informatik I, Oldenbourg-Verlag)
RelationentheorieObjektorientierte Datenbanken AIFB SS Die Objekt-Definitionssprache ODL (1/24) Alle Elemente des Objektmodells können beschrieben.
Vorüberlegung Frühere Forderung: Möglichst alle im konzeptuellen Schema ausdrückbaren Sachverhalte sollen sich im logischen Schema wiederfinden. Forderung.
7.3 Hinweise für den Aufbau von ER-Schemata (1|7)
1 Teil 4 Übung: Uhr. 2 Zielsetzung Ziel ist es, mit Hilfe objektorientierter Modellierung ein System zu entwickeln, mit dem eine einfache Uhr simuliert.
Softwareprojekt Shopverwaltung
Kontrollfragen zu Kapitel 1
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Spezifikation von Anforderungen
11. Vorlesung: Dynamische Konzepte am Fallbeispiel
6. Vorlesung: Statische Konzepte
12. Vorlesung: Aktivitätsdiagramme
10. Vorlesung: Dynamische Konzepte
Entwurfs- und Implementationsdiagramme
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Objektorientierte Konzepte/UML Geoinformation I Vorlesung 2 WS 2000/2001.
UML WS 09/10: Datenbanken vs MarkUp Dozent: Prof. Dr. Manfred Thaller
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Objektorientierte Analyse
Rationelle Vorgehensweise bei der Fiona-Antragstellung
verstehen planen bearbeiten
Zustandsübergangsdiagramme (1)
Relationale Datenbanken
Objektorientierte Modellierung mit UML
Klassen und Klassenstruktur
„Erstellen“ anklicken. Für Geräte mit gelben Aufkleber auf „Reparatur eines Gerätes mit Ident-Nummer“ anklicken. Erfahrene Ticket-Ersteller können „Direkterstellung“
Baustellenlogistik Die nachfolgende Präsentation beschreibt den Prozess, mit dem die Verfügbarkeit aller Artikel sicher zu stellen ist, die für die Durchführung.
Unified Modeling Language UML
Einführung in die Programmierung mit Java
Sichtbarkeit einschränken
Was ist eine Datenbank „MS Access“
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
1 1.Man beginne mit „leicht erkennbaren natürlichen Objekten“ (Personen und konkreten Gegenständen) und fasse diese zu Objekttypen zusammen. (etwa Substantive.
Tutorium Software-Engineering SS14 Florian Manghofer.
 Gegenstandsbereich der Testtheorie: Analyse der Charakteristika von Tests:  Güte von Tests.  Struktur von Tests.  Schwierigkeit von Tests.  Gruppenunterschiede.
Tutorium Software-Engineering SS14 Florian Manghofer.
 Präsentation transkript:

24. Methoden und Verfahren der objektorientierten Analyse Realisierung Artikelverwaltung Die folgenden Anforderungen beschreiben eine einfache Artikel-verwaltung, die objektorientiert zu modellieren ist.

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. 3a Finden Sie Attribute für jede Klasse ( Attribute) Weitere Attribute identifizieren und spezifizieren.

3b 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. 3a und 3b 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.

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 3b) 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.

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 A4-Seite, dann bereits bei der Klassenidentifizierung grobe Subsystem-Bildung vornehmen, z.B. durch geeignete grafische Anordnung der Klassen.

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.

/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. /LF80/ 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.

/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?

Klassendiagramm der Artikelverwaltung Lieferkondition Einkaufspreis Verpackungseinheit Bestellnr Lieferant Person Name Telefon Artikel Nummer Bezeichnung Verkaufspreis Artikelgruppen Bestellvorschlag erst.(K) Günstigste Lieferkondition 1 0, m 0, m 1 Lieferant Adresse Ansprechpartner 0, m Lierferanten-Bestell. Bestelldatum Lieferdatum Anzahl Bestellung durchführen 1 0, m 0, m 1 0, m 1 Artikelbestand Maximalbestand Mindestbestand Aktueller Bestand Lagername Lagerliste drucken(K) Nachbestellung ermitteln Kunde Nummer Adresse Umsatz im Jahr Kundenbestellung Bestellnr Bestelldatum Lieferdatum Portokosten/Rechn.betrag Erfassen 1 1, m 1 Sachbearbeiter Personalnr Kürzel Umsatz pro Kunde 1, m 0, m Bestellposten Anzahl Artikel Gesamtpreis 1 1

Artikelverwaltung Artikel Nummer Bezeichnung Verkaufspreis Artikelgruppen Für alle Objekte der Klasse: (Lieferant) Müller Textil&Co ... (Lieferkondition) 10,00 50 7125 (Artikel) 1234 T-Shirt 20,00 Freizeit, Sport Nachbestellung ermitteln (Anzahl, Lagername) (Lieferant) Blues Jeans-Laden (Lieferkondition) 12,00 20 8957 (Artikelbestand) 70 35 40 Düsseldorf (Artikelbestand) 100 65 50 Essen Assoziation bzw. Aggregation Objektverwaltung

Spezifikation der externen Operationen Klasse Artikel Operation Bestellvorgang_erstellen() // 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.GetVerpackungseinheit(); GetLieferant() Summe auf n-faches von Verpackungseinheit abrunden

Operation Bestellung_durchführen() Klasse Lieferantenbestellung Operation Bestellung_durchführen() // 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 Artikel.Günstige_Lieferkondition_ermitteln(Lieferkondition) Lieferkondition.GetVerpackungseinheit() Anzahl auf Verpackungseinheiten abrunden Lieferkondition.GetLieferant() 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.

Operation Erfassen() Klasse Kundenbestellung // Bestellung eines Kunden erfassen, wobei für jeden // bestellten Artikel ein Bestellposten anzulegen ist. Kunden-Bestellung.Create(Bestell-Nr, Bestelldatum) Für jeden Bestellposten: Eingabe von Artikelnummer und Anzahl Bestellposten.Create(AnzahlArtikel) Bestellposten.SetGesamtpreis() = AnzahlArtikel * Artikel.GetVerkaufspreis() oder Sonderpreis Rechnungspreis = Summe aller Gesamtpreise + Portokosten SetLieferdatum(), SetPortokosten() 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.

Operation Umsatz im Jahr (in Jahr, out Umsatz) Klasse Kunde //Für einen Kunden ist der Gesamtumsatz des // Jahres zu ermitteln Für jede Kundenbestellung Kunden-Bestellung.Get(Rechnungsbetrag(); GetBestelldatum() Umsatz = Summe aller Rechnungsbeträge des angegebenen Jahres Operation Umsatz pro Kunde (out Umsatz) Klasse Sachbearbeiter //Für jeden Sachbearbeiter ist die Höhe des Umsatzes // für jeden Kunden zu ermitteln Für jede Kunden-Bestellung Kunden-Bestellung.GetRechnungsbetrag(); GetKunde() addiere alle Rechnungsbeträge pro Kunde separat auf

Operation Günstigste_Lieferkondition ermitteln (out Lieferkondition) Für jede Lieferkondition: Lieferkondition.GetEinkaufspreis() Lieferkondition mit dem niedrigsten Einkaufspreis herausfinden Klasse Artikelbestand Operation Lagerliste drucken() // Falls der Mindestbestand eines Artikels in diesem Lager // unterschritten ist, soll auf den Maximalbestand aufgefüllt werden Rest = Aktueller Bestand - Mindestbestand Wenn kein Rest vorhanden ist dann Anzahl = Maximalbestand - Aktueller Bestand

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?

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.

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) (verheiratet mit)

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.

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.

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.

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.

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.

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?

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.