Objektorientierte Analyse
(Basis)Konzepte und Notationen Teil 1:
Objekt, Klasse, Attribut, Operation
Beispiel für das Objekt „Rind“
kaufen()
schlachten()
verkaufen() Ohrmarke:
Rasse:
Standort:
4711 FV 007
Notation:
Objekt: Klasse
Objekt :Klasse Attribut1 = Wert1 Attribut2 = Wert2
Oder:
Objektdiagramm
• Beschreibt Objekte, Attributwerte, Verbindungen
• Sind Momentaufnahmen des Systems
• Meist werden anonyme Objekte verwendet
Datenkapselung und Geheimnisprinzip
• Zustand (=Daten) und Verhalten
(=Operationen) eines Objektes bilden eine Einheit
• Daten eines Objektes können nur mittels der Operationen gelesen und geändert werden.
• Repräsentation dieser Daten nach außen
bleibt verborgen (=Geheimnisprinzip)
Objektidentität
• Diejenige Eigenschaft, die ein Objekt von anderen Objekten unterscheidet (auch
wenn sie identische Attributwerte besitzen)
Klasse
• Definiert für eine Kollektion von Objekten deren Struktur (Attribute), Verhalten (Operationen,
behavior) und Beziehungen (relationships)
• Besitzt einen Mechanismus, neue Objekte zu erzeuten (object factory)
• Jedes erzeugte Objekt gehört zu genau einer Klasse
• Klassendiagramm: Beschreibt das statische
Modell des Systems
Notation von Klassen
:Klasse Attribut
...
Operation() ...
Namensfeld
Attributliste
Operationsliste
:Milchkuh Ohrmarke
Geburtsdatum Energiebedarf kaufen()
verkaufen() behandeln() melken() schlachten() Zu jeder Klasse wird eine Kurzbeschreibung
erfasst. Beispiel:
Klasse Milchkuh
Tier, das in einem Tierbestand zum Zwecke der Milcherzeugung gehalten wird.
Attribut
• Beschreibt die Daten, die von den Objekten einer Klasse angenommen werden können.
• Werden durch Namen und Typ beschrieben.
• Optional: Anfangswert und Liste von Merkmalen
• Geheimnisprinzip: Attributwerte dürfen nur über die Operationen der zugehörigen Klasse gelesen und geändert werden
• Klassenattribut: Wenn nur ein Attributwert für alle Objekte einer Klasse existiert
• Restriktionen (=constraints) = Beziehungen zwischen
Attributwerten eines Objektes, die unverändert erhalten
bleiben müssen.
Unterschied Klassendiagramm - ER-Modell
• Künstliche Schlüsselattribute sind im Klassendiagramm nicht notwendig.
• Normalisierung der Attribute ist nicht
notwendig.
Abgeleitete Attribute (=derived attribute)
• Wird mit Präfix „/“ gekennzeichnet.
• Darf nicht geändert werden.
• Typen:
– Standardtypen (String, Int, UInt, Float, Double, Fixed, Boolean, Date, Time)
– Aufzählungstypen {values: 1,0; 1,3; 1,7, ..., noAdd}
– Elementare Klassen (support classes)
– „list of“-Typ (Beispiel: Noten: list of NoteT)
Person Geburtsdatum /Alter
NoteT Fach:String
Wert: NotenwertT
Attributspezifikation
• Name
• Typ
• Anfangswert
• Muß-Attribut (mandatory)
• Schlüssel (key)
• Attributwerte nicht änderbar (frozen)
• Einheit
• Beschreibung
• Ohrmarkennr: String(7) {mandatory, key, frozen)
• Geburtsdatum: Date {mandatory}
• Schlachtdatum: Date
• Verendet: Date
{Beschreibung: Datum, an dem das Tier verendet ist}
• Restriktionen:
{Geburtsdatum <
Schlachtdatum und Geburtsdatum <
Verendet}
Operationen
• Alle Objekte einer Klasse verwenden dieselben Operationen
• Jede Operation kann auf alle Attribute
eines Objekts einer Klasse direkt zugreifen
• Die Menge aller Operationen = Verhalten
der Klasse = Schnittstelle der Klasse
Notation für Operationen
• Operationen =
Objektoperationen [z.B.
Schlachten()] werden auf ein einzelnes Objekt angewendet
• Kontruktoroperation: Erzeugt ein neues Objekt und führt Initialisierungen/Datener- fassung durch
• Klassenoperation: Nicht für einzelnen Objekt anwendbar;
z.B.: Drucke Bestandsbuch()
Klasse Operation()
Klassenoperation()
Operationsarten
• Lesender Zugriff (accessor operation) [z.B.:
drucke_TAEAnwendungsbeleg()]
• Schreibender Zugriff (update operation) [z.B.: erfasse_Medikation()]
• Berechnungsoperation [z.B.:
ermittle_Datum_Ende_der_Wartezeit()
• Erzeugen (contructor operation) bzw. Löschen (destructor operation) [z.B.:
kaufen()]
• Selektion (query operation) [z.B.:
drucke_Bestandsbuch()]
• Verbindungsherstellung (connect operation) [z.B.:
melde_Ohrmarke_an()]
• Aktivierung von Operationen anderer Klassen [z.B.:
drucke_Arzneimittelstammdaten()]