(Statische) Konzepte und Notation der objektorientierten Analyse
Lernziele
1.Erklären können, was eine Assoziation ist
2.Erklären können, was Aggregation und Komposition ist 3.Erklären können, was Vererbung und was ein Paket ist
4.Assoziation, Vererbung und Paket aus einem vorgegebenen Text
identifizieren und mit entsprechender UML-Notation anwenden können.
Assoziation
Modelliert Verbindungen (Beziehungen) zwischen Objekten einer oder mehrerer Klassen
Objektdiagramm
Klassendiagramm
:Kunde :Konto
KontoNr = 4711 Art = Geschäft
Eröffnung = 20.11.02
:Konto
KontoNr = 9999 Art = Privat
Eröffnung = 21.11.02 Name = Käsi
Käsärmchen
Kunde Konto
KontoNr Art
Eröffnung
Name 1 *
besitzt
Notation für Assoziationen
Modelliert Verbindungen (Beziehungen) zwischen Objekten einer oder mehrerer Klassen
Klasse1 Klasse2
Attribut
Attribut k1 k2
Rolle Operation() Operation()
Kardinalitäten:
1 genau 1 (=Muß-Assoziation)
* 0 bis viele (=Kann-Assoziation) 1..* 1 bis viele (Muß-Assoziation) 1..5,8 nicht 6, 7
Klasse1
Attribut Operation()
k1
k2
reflexive Assoziation
Beispiel 1
Klassendiagramm:
Objektdiagramm:
Kunde Konto
KontoNr Art
Eröffnung Name
1 1..*
Kontoinhaber
* 1..*
Kontoberechtigter
:Kunde
:Kunde
:Konto
Beispiel 2
Klassendiagramm
Objektdiagramm
Angestellter
Name Gehalt
Position 0..1
Chef
Mitar- * beiter
:Angestellter
:Angestellter :Angestellter
:Angestellter :Angestellter
Chef Mitarbeiter
Chef Mitarbeiter
Chef Mitarbeiter
Chef
Mitarbeiter
Restriktionen (Constraints)
Or-Restriktion
Subset-Restriktion
Kunde Konto
KontoNr Art
Eröffnung Name
1 1..*
Kontoinhaber
* 1..*
Kontoberechtigter
{Kunde.Kontoinhaber <> Kunde.Kontoberechtigter}
Palette1 Palette
Palette2 Hochregallager
Lagerraum
*
*
1
1 {or}
:Hochregallager
:Lagerraum
Sportler * * Wettbewerb
0..1 *
Teilnehmer
Sieger {subset}
S1:Sportler S2:Sportler S3:Sportler
W1:Wettbewerb W2:Wettbewerb
Qualifikationsangabe
Jeder Artikel ist ein keinem, einem oder mehreren Katalogen enthalten.
Ein Katalog enthält (normalerweise) viele Artikel.
Jeder Artikel ist ein keinem, einem oder mehreren Katalogen enthalten.
Zu jeder Bestellnummer in einem Katalog existiert genau 1 Artikel.
Wie wäre die Notation abzuändern, wenn es Bestellnummern in Katalogen gibt, zu denen es keine Artikel gibt?
Artikel
Bestellnummer
1
*
Katalog
Artikel
*
*
Katalog
Aggregation und Komposition
Verein
Name
Gründungsdatum
*
*
Unternehmen
Name
Rechtsform Gründung
* Komposition
1 Aggregation
Betriebe
Name Anschrift
Mitglieder
Name Art
Anschrift
Aggregatklasse =>
Höherwertige (n-näre) Assoziationen (Beispiel einer ternären Assoziation)
Jahr
Unternehmen Mitarbeiter
Ergebnis Gehalt
*
*
*
zusätzliche assoziative Klasse
CRC-Karte
(Class/Responsibility/Collaboration)
CRC-Karten werden auf einer höheren Abstraktionsebene modelliert als Klassendiagramme. Ein Vergleich:
Class Bestellung
Bestellung Nummer
Datum erfassen() drucken()
Bestellposition Artikelnummer Bezeichnung Anzahl
1 1..*
Responsibilities
verwaltet eine Bestellung
delegiert Aufgaben an Bestellpositionen
Collaborations
Bestellposition
Vererbung (= generalization)
Beschreibt eine Beziehung zwischen einer allg. Klasse (Basisklasse = Oberklasse =
super class) und einer spezialisierten Klasse (= Unterklasse, sub class). Die spez. Klasse ist vollständig konsistent mit der Basisklasse, enthält aber zusätzliche Informationen (Attribute, Operationen, Assoziationen).
Ist nicht nur gedacht, gemeinsame Eigenschaften und Verhaltensweise zusammenzufassen, sondern stellt immer auch eine Generalisierung bzw.
Spezialisierung dar.
Was wird vererbt ?
1. Besitzt die SuperClass ein Attribut A, dann besitzen es auch alle Objekte der SubClass (der Wert des Attributs wird jedoch nicht vererbt).
2. Alle Operationen, die auf Objekte der SuperClass anwendbar sind, sind auch auf Objekte der SubClass anwendbar (Gilt analog für Klassenoperationen).
3. Besitzt die SuperClass ein Klassenattribut mit dem Wert W, dann besitzt auch die SubClass dieses Klassenattribut mit dem Wert W.
4. Existiert eine Assoziation zwischen SuperClass und einer Klasse AnyClass, dann wird diese Assoziation an SubClass vererbt.
Unterklassen können das Verhalten ihrer Oberklassen verfeiner und redefinieren (= überschreiben)
Vererbung
Person
Name Adresse
Geburtsdatum drucke Adresse()
Angestellter
PersNr Gehalt
Bankverbindung überweise Gehalt()
Student
MatrikelNr
Immatrikulation drucke Ausweis()
HiWi
Beschäftigung drucke A’Zeugnis()
Mechanismus der Vererbung
SuperClass
AttributA
Klassenattribut = W OperationA()
SubClass
AttributB
Klassenattribut = W OperationB()
AnyClass
OtherClass 1
1
Objekt1 AttributA = Wert1
:AnyClass Objekt1 AttributA = Wert2 AttributB = Wert3
:AnyClass :OtherClass
Überschreiben einer Operation
Konto
Kontonummer Kontostand buchen()
Sparkonto
Zinssatz buchen()
Paket (package) [synonym: Subsystem, Subject, Category]
Fasst Modellelemente (z.B. Klassen) zusammen. Kann selbst wiederum Pakete enthalten. Beschreibt die Systemstruktur auf hoher Abstraktionsebene.
Warenwirtschaftssystem
Einkauf Verkauf
Produktion Materialwirtschaft
Notation in UML
-) Abhängigkeiten
-) Werden im Klassendiagramm eingetragen
-) Jede Klasse (jedes Modellelement) gehört zu höchstens einem Paket
-) Ein Paket def. einen Namensraum für alle in ihm enthaltenen Modellelemente
-) Wird eine Klasse eines bestimmten Paktes in einem anderen Paket verwendet, wird als Klassenname Paket::Klasse verwendet.
Beispiel: Paket1::Paket11::Paket111::Klasse
Paket1 Paket2
Paket3
Aufgabe 1
Identifizieren Sie anhand nachfolgender Beschreibung Klassen, Attribute, Operationen, Assoziationen und Vererbungsstrukturen und zeichnen Sie diese in ein Klassendiagramm ein. Erstellen Sie für Beispielsdaten zusätzlich ein Objektdiagramm.
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 Name, Adresse und Datum der ersten Kontoeröffnung erfaßt. Bei Kontoeröffnung muß 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 indiv. Habenzins, für Girokonten auch ein indiv. Sollzins festgelegt.
Jedes Konto besitzt eine eindeutige Kontonummer. Für jedes Konto wird die Art des Sparens - z.B. Festgeld - gespeichert. Ein Kunde kann Beträge einzahlen und abheben.
Habenzinsen werden gutgeschrieben, Überziehungszinsen vom Girokonto abgebucht.
Um Zinsen zu berechnen, muß 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.
Aufgabe 1: Beschreibung
Weil bei der Kontoeröfnung sofort eine Einzahlung vorzunehmen ist, wird bei der Klasse Konto die Kardinalität 1..* eingetragen.
Zwischen Kunde und Konto besteht eine einfache Assoziation, weil weder der Kunde Teil eines Kontos ist, noch umgekehrt. Zwischen Konto und Kontobewegung existiert eine Komposition, weil eine whole-part-Beziehung vorliegt (Jede Kontobewegung ist Teil genau eines Kontos und die
dynamische Semantik eines Kontos gilt stets für alle Kontobewegungen). Wenn beispielsweise das Konto bei einer anderen Filiale weitergeführt werden soll, dann werden auch alle Kontobewegungen der neuen Filiale zugeordnet. Die Kontobewegungen werdenf ür die Berechnung der Zinsen
benötigt. Die Operation einzahlen() ist für Giro- und Sparkonten gleich. Deshalb wird sie bei der Basisklasse eingetragen und vererbt. Beim Abheben verhalten sich Giro- und Sparkonto jedoch unterschiedlich. Sparkonto: Werden mehr als 1.000 Euro/Monat abgehoben, dann fallen Gebühren an. Der Kontostand kann nicht „negativ“ werden. Beim Girokonto steht der Dispo-Kredit zur
Vergüung.
Die Operation gutschreibenZinsen() ist jeweils unterschiedlich, da dies einmal quartalsweise und einmal jährlich erfolgt. Das Attribut Kontostand ist abgeleitet.
Die Komposition von Konto zu Kontobewegung wird an die beiden Unterklassen vererbt.
Konto ist eine abstrakte Klasse, weil es keine Konto-Objekte gibt, die nicht bereits den Klassen
Girokonto oder Sparkonto angehören. Analoges gilt für die Vererbung der Assoziation zu Kunde. Die Vererbung der Assoziation bedeutet, dass Verbindungen zwischen Kunde und Girokonto etc.
existieren. Anhand des Objektdiagramms wird deutlich, dass es keine Objekte der Klasse Konto gibt.
Aufgabe 1: Klassendiagramm
Konto
Kontonummer Habenzins /Kontostand eröffnen() einzahlen() auflösen()
Girokonto
Sollzins Dispo-Kredit abheben()
gutschreibenZinsen() abbuchenZinsen()
Sparkonto
Art
abheben()
gutschreibenZinsen()
Kontobewegung
Betrag Datum
Kunde
Name Adresse Kunde seit
1 1..* 1 1..*
Aufgabe 1: Objektdiagramm
:Kunde
:Girokonto
:Kontobewegung
:Kontobewegung
:Sparkonto :Kontobewegung
:Kunde :Girokonto :Kontobewegung
(Dynamische) Konzepte und Notation der objektorientierten Analyse
Lernziele
Erklären können, was
1.ein Geschäftsprozess ist 2.eine Botschaft ist
3.ein Szenario ist
4.ein Zustandsautomat ist 5.ein Aktivitätsdiagramm ist
Erklären können, wie das Klassendiagramm und Diagramme des dynamischen Modells zusammenwirken.
Geschäftsprozesse modellieren können
Sequenz- und Kollaborationsdiagramme erstellen können
Zustandsdiagramme erstellen können.
Geschäftsprozess (use case)
Besteht aus mehreren zusammenhängenden Aufgaben, die von einem Akteur durchgeführt werden, um ein gewünschtes Ergebnis zu erstellen.
Ein Akteur (häufig eine Person) ist eine Rolle, die ein Benutzer des Systems spielt.
Notation Geschäftsprozessschablone (use case template)
Geschäftsprozess: Name (was wird getan)
Ziel
Kategorie (primär, sekundär oder optional)
Vorbedingung
Nachbedingung Erfolgsfall Nachbedingung Fehlschlag Akteure
Auslösndes Ereignis Beschreibung
Geschäftsprozess: Auftrag aussführen Ziel: Ware an Kunden geliefert
Vorbedingung: -
Nachbedingung Erfolg: Ware ausgeliefert (auch Teillieferungen), Rechnungskopie bei Buchhaltung
Nachbedingung Fehlschlag: Mitteilung an Kunden, dass nichts lieferbar ist Akteure: Kundensachbearbeiter, Lagersachbearbeiter, buchhaltung
Auslösendes Ereignis: Bestellung des Kunden liegt vor Beschreibung:
1. Kundendaten abrufen 2. Lieferbarkeit prüfen 3. Rechnung erstellen
4. Auftrag vom Lager ausführen lassen 5. Rechnungskopie an Buchhaltung geben Erweiterung:
1a Kundendaten aktualisieren Alternativen:
1a Neukunden erfassen
3a Rechnung mit Nachnahme erstellen 3b Rechnung mit Bankeinzug erstellen
Beispiel für ein Geschäftsprozessdiagramm
Warenwirtschaftssystem
Kundensach- bearbeiter
Lieferanten- sachbearbeiter
Lagersach- bearbeiter Buchhaltung Auftrag
ausführen
Lager verwalten
Geschäftsprozessdiagramm mit „extends“- und „uses“- Beziehungen
Extends-Beziehung: Wenn Geschäftsprzess B ähnlich A ist, aber noch etwas darüber hinausreicht;
Notation: Vererbungspfeil + Stereotyp „extends“
Uses-Beziehung: Wenn zwei Geschäftsprzesse ein gemeinsames Verhalten besitzen (analog Unterprogramm)
Auftrag ausführen
Auftrag mit Nachlieferung
ausführen
«extends»
Auftrag ausführen
Auftrag mit Nachlieferung
ausführen
«uses»
Ware einlagern
«uses»