2 Basisonzepte und Notationen der - ias.uni

Werbung
Grundlagen der Softwaretechnik
Info 2 - GdS
§ 2 Basiskonzepte und Notationen der objektorientierten Analyse
Lernziele
– Erklären können, was ein Objekt ist
– Erklären können, was eine Klasse ist
– Den Unterschied zwischen Objekt und Klasse verstehen
– Das Geheimnisprinzip verstehen
– Erklären können, was ein Attribut ist
– Klassenattribut und Objektattribut unterscheiden können
– Erklären können, was eine Operation ist
– Verstehen, was eine Botschaft ist
– Objektoperation, Konstruktoroperation und Klassenoperation
unterscheiden können
– UML-Notation für Objekt, Klasse, Attribut und Operation anwenden können
© 2015 IAS, Universität Stuttgart
80
2.1 Grundbegriffe
§2
Info 2 - GdS
Basiskonzepte und Notationen der
objektorientierten Analyse
2.1
Grundbegriffe
2.2
Objekt
2.3
Klasse
2.4
Attribut
2.5
Operation
2.6
Erweiterungsmechanismen der UML (zum Selbststudium)
2.7
Zusammenfassung
© 2015 IAS, Universität Stuttgart
81
2.1 Grundbegriffe
Info 2 - GdS
Der Begriff des Objekts
Definition
Ein Objekt ist allgemein ein Gegenstand des Interesses bei Beobachtungen,
Untersuchungen oder Messungen
– Ein Objekt (object) ...
Attribute
besitzt einen bestimmten Zustand
reagiert mit definiertem Verhalten auf seine Umgebung Operationen
besitzt eine Identität, die es von allen anderen Objekten unterscheidet
kann Beziehungen zu anderen Objekten haben
Beispiel:
Der Student Paul wurde am
17.11.1986 geboren und
finanziert sein Studium über
ein Stipendium. Als besondere
Fähigkeit fällt auf, dass er
lernen und feiern kann.
© 2015 IAS, Universität Stuttgart
Paul
Abbildung
Geburtsdatum: 17.11.86
Einkommen: Stipendium
lernen()
feiern()
Attribute
Operationen
82
2.1 Grundbegriffe
Info 2 - GdS
Der Begriff der Klasse
Definition
Eine Klasse beschreibt die Struktur und das Verhalten gleichartiger Objekte.
 Abstraktion (Verallgemeinerung)
– Eine Klasse ...
definiert für eine Menge von Objekten deren
 Attribute,
 Operationen und
 Beziehungen (relationships).
besitzt einen Mechanismus, um neue Objekte zu erzeugen
– Jedes erzeugte Objekt gehört zu genau einer Klasse.
– Beziehungen = Assoziationen und Vererbungsstrukturen
© 2015 IAS, Universität Stuttgart
83
2.1 Grundbegriffe
Info 2 - GdS
Beispiele für eine Klasse
Modellierung eines Objekts
Tank1
Paul
Abbildung
Geburtsdatum: 17.11.86
Einkommen: Stipendium
lernen()
feiern()
Abbildung
Füllstand: 62 cm
Soll-Niveau: 75 cm
füllen()
leeren()
Modellierung einer Klasse
Tank
Student
Abstraktion
Geburtsdatum
Einkommen
lernen()
feiern()
© 2015 IAS, Universität Stuttgart
Abstraktion
Füllstand
Soll-Niveau
füllen()
leeren()
84
2.1 Grundbegriffe
Info 2 - GdS
Der Begriff Attribut
Definition
Attribute beschreiben die Daten, die von den Objekten einer Klasse
angenommen werden können.
– Jedes Attribut ist von einem bestimmten Typ.
– Die Klasse legt fest, welche Attribute ihre Objekte besitzen
– Die Objekte enthalten die Attributwerte
– Alle Objekte einer Klasse besitzen dieselben Attribute, jedoch
unterschiedliche Attributwerte.
© 2015 IAS, Universität Stuttgart
85
2.1 Grundbegriffe
Info 2 - GdS
Der Begriff Operation
Definition
Eine Operation ist eine Tätigkeit, die einem Objekt zugeordnet ist und von
diesem abgearbeitet werden kann.
– Die Klasse legt Operationen für ihre Objekte fest
Alle Objekte einer Klasse verwenden dieselben Operationen
– Menge aller Operationen einer Klasse
Verhalten der Klasse
Schnittstelle der Klasse
– Operationen = Methoden
nicht „Prozeduren“ oder „Funktionen“!
– Der Aufruf einer Operation X bei einem Objekt wird auch als Senden einer
Botschaft X an das Objekt bezeichnet
 Senden der Botschaft X  Aufruf der Operation X
© 2015 IAS, Universität Stuttgart
86
2.1 Grundbegriffe
Info 2 - GdS
Beispiel für Operation
– Professor schickt Botschaft „lernen“
– Student aktiviert Methode „lernen“
lernen
Peter:Professor
Paul:Student
Geburtsdatum: 01.04.50
Einkommen: Gehalt
Geburtsdatum: 17.11.86
Einkommen: Stipendium
lehren()
forschen()
© 2015 IAS, Universität Stuttgart
lernen
lernen()
feiern()
87
2.1 Grundbegriffe
Info 2 - GdS
Objekt vs. Klasse
– Objekt = eindeutige, konkrete Einheit, die in Zeit und Raum existiert
– Klasse = Abstraktion des Wesentlichen von Objekten an sich
– Die Klasse ist der >>Bauplan<< für ihre Objekte
– Ein Objekt ist ein Exemplar einer Klasse
– Alle Objekte einer Klasse verhalten sich konsistent
– Jedes Objekt >>weiß<<, zu welcher Klasse es gehört
Die Klasse selbst existiert im Allgemeinen nicht als eigenständiges Objekt
Praxistipp
Die Begriffe instance, class instance und Exemplar sind Synonyme für den
Begriff Objekt.
© 2015 IAS, Universität Stuttgart
88
2.1 Grundbegriffe
Info 2 - GdS
Objekt vs. Klasse: Hühnerfarm
Klasse
Huhn
Name :
Größe :
Farbe :
Eier legen()
gackern()
Berta
Kunigunde
Objekte
Elsa
Elfriede
 Berta, Elfriede, Kunigunde und Elsa wissen, dass sie Hühner sind
© 2015 IAS, Universität Stuttgart
89
2.1 Grundbegriffe
Info 2 - GdS
Objekt vs. Klasse: Hausbau
A
7
8
5
3
B
6
1
4
C
2
Video: Objektorientierte Sichtweise und Modellierung
© 2015 IAS, Universität Stuttgart
90
§ 2 Basiskonzepte und Notationen der objektorientierten Analyse
Info 2 - GdS
Frage zu 2.1
Welche Aussagen über Klassen und Objekte sind richtig?
f  Eine Klasse ist ein einzelnes Exemplar einer Menge von Objekten.




f


Eine Klasse ist eine Abstraktion, die Gemeinsamkeiten von Objekten und
Regeln zu ihrer Erzeugung beschreibt.
Eine Klasse definiert gleichartige Objekte.
Alle Objekte einer Klasse haben die gleichen Attributwerte.
Alle von einer Klasse erzeugten Objekte bilden die Menge aller Objekte
dieser Klasse.

 Botschaften bewirken den Aufruf von Operationen
© 2015 IAS, Universität Stuttgart
91
2.2 Objekt
§2
Info 2 - GdS
Basiskonzepte und Notationen der
objektorientierten Analyse
2.1
Grundbegriffe
2.2
Objekt
2.3
Klasse
2.4
Attribut
2.5
Operation
2.6
Erweiterungsmechanismen der UML (zum Selbststudium)
2.7
Zusammenfassung
© 2015 IAS, Universität Stuttgart
92
2.2 Objekt
Info 2 - GdS
Objekt-Eigenschaften
– Der Zustand (state) eines Objektes:
Attribute bzw. deren aktuelle Werte
 Attribute sind unveränderliche Merkmale des Objekts
 Attributwerte
können Änderungen unterliegen
jeweilige Verbindungen zu anderen Objekten
 alle Daten, die ein Objekt beinhaltet
– Das Verhalten (behavior) eines Objekts:
Menge der Operationen (Methoden)
Änderung oder Abfrage des Zustandes nur mittels Operationen
möglich (Geheimnisprinzip)
© 2015 IAS, Universität Stuttgart
93
2.2 Objekt
Info 2 - GdS
Geheimnisprinzip
– Objektzustand (Daten) und -verhalten (Operationen) bilden eine Einheit
 Kapselung
– Daten dürfen nur mittels der Operation gelesen und geändert werden.
 Daten werden vor der Außenwelt verborgen
– Beispiel: Ein Sensor besitzt eine Nummer, einen Schwellwert und einen
Ist-Wert. Der Sensor kann kalibriert werden, der Ist-Wert abgefragt werden
und der Schwellwert des Sensors gesetzt werden.
Nr.: 002
Schwellwert.: 20
Ist-Wert: 18
gib Ist-Wert ()
© 2015 IAS, Universität Stuttgart
n
()
hw setz
ell e
we
rt
ka
lib
r ie
re
()
Sensorobjekt (nachher):
Sc
Sc
hw setz
ell e
we
rt
()
Sensorobjekt:
ka
lib
rie
re
Nr.: 002
Schwellwert.: 22
Ist-Wert: 18
n
()
gib Ist-Wert ()
94
2.2 Objekt
Info 2 - GdS
Identität und Gleichheit von Objekten (1)
Objektidentitäts-Prinzip
Jedes Objekt ist per Definition unabhängig von seinen konkreten
Attributwerten von allen anderen Objekten eindeutig zu unterscheiden
– Objektidentität (identity)
Unterscheidet ein Objekt von allen anderen Objekten
Kann sich nicht ändern
Keine zwei Objekte besitzen dieselbe Identität (auch wenn sie zufällig
die gleichen Attributwerte haben)
 Objektidentität hat keinen inhaltlichen Bezug zu den anderen
Eigenschaften des Objekts
–
Gleichheit: Verschiedene Objekte besitzen gleiche Attributwerte
–
Objektorientierte Programmiersprachen beinhalten eigene Mechanismen
zur Sicherstellung der Identität der Objekte (meist über Speicheradresse)
© 2015 IAS, Universität Stuttgart
95
2.2 Objekt
Info 2 - GdS
Identität und Gleichheit von Objekten (2)
Beispiel
– Michael und Susi haben jeweils ein Kind mit dem Namen Daniel (Gleichheit)
– Michael und Janine sind Eltern desselben Kindes (Identität)
Es handelt sich um dasselbe Objekt
Person 1
Person 2
Person 5
Person 6
Name = Michael
Name = Susi
Name = Michael
Name = Janine
Person 3
Person 4
Person 7
Name = Daniel
Name = Daniel
Name = Daniel
Gleichheit
© 2015 IAS, Universität Stuttgart
Identität
96
2.2 Objekt
Info 2 - GdS
UML-Notation eines Objekts
– Darstellung eines Objekts als Rechteck mit 2 Feldern
Bezeichnung
– Name des Objekts wird immer unterstrichen
– Operationen, werden in der UML nicht angegeben
Attribute
– Aufbau von Objektbezeichung und Attributangaben (optional)
Irgendein Objekt
der Klasse
Objekt soll über Namen
angesprochen werden
:Klasse
Objekt:Klasse
Nur möglich, wenn
Klasse eindeutig aus
dem Kontext ersichtlich
Objekt
Attribut1 = Wert1
 sinnvoll, da Typ bereits bei Klasse definiert
Attribut2
 nur sinnvoll, wenn Attributwert uninteressant
Beispiel
Das Objekt mit dem Namen einKreis
ist ein Exemplar der Klasse Kreis.
© 2015 IAS, Universität Stuttgart
einKreis:Kreis
radius = 25
mittelpunkt = (10,10)
97
2.2 Objekt
Info 2 - GdS
UML-Notation eines Objektdiagramms
– Ein Objektdiagramm beschreibt Objekte, Attributwerte und Verbindungen
zwischen Objekten zu einem bestimmten Zeitpunkt (Momentaufnahme
bzw. Schnappschuss des Systems).
:Pumpe
Tank1:Tank
Füllstand = Wert1
Soll-Niveau =Wert2
Tank2:Tank
–
Objektname
Muss nur innerhalb eines Diagramms eindeutig sein
In verschiedenen Diagrammen unterschiedliche Objekte mit gleichem
Namen möglich
© 2015 IAS, Universität Stuttgart
98
§ 2 Basiskonzepte und Notationen der objektorientierten Analyse
Info 2 - GdS
Frage zu 2.2
Was ist der Unterschied zwischen einer Objektidentität und einem
Objektnamen?
Antwort
Objektname
Unterscheidet ein Objekt von allen anderen
Objekten

Identifiziert ein Objekt innerhalb eines
Diagramms

Kann in anderen Diagrammen bei anderen
Objekten gleich sein


Identifiziert das Objekt systemweit
Kann sich ändern
© 2015 IAS, Universität Stuttgart
Objektidentität

99
§ 2 Basiskonzepte und Notationen der objektorientierten Analyse
Info 2 - GdS
Frage zu 2.2
Sind die beiden Objekte „Kanne 1“ und „Kanne 2“ gleich oder identisch?
Kanne 1
Kanne 2
Kanne 3
Inhalt = Kaffee
Inhalt = Kaffee
Inhalt = Tee
Antwort
 Die beiden Objekte sind gleich, weil ihr Attribut („Inhalt“) den gleichen Wert

hat („Kaffee“).
f  Die beiden Objekte sind identisch

 Es handelt sich um zwei einzelne Objekte, Objektidentität ist deshalb gar
nicht möglich
© 2015 IAS, Universität Stuttgart
100
2.3 Klasse
§2
Info 2 - GdS
Basiskonzepte und Notationen der
objektorientierten Analyse
2.1
Grundbegriffe
2.2
Objekt
2.3
Klasse
2.4
Attribut
2.5
Operation
2.6
Erweiterungsmechanismen der UML (zum Selbststudium)
2.7
Zusammenfassung
© 2015 IAS, Universität Stuttgart
101
2.3 Klasse
Info 2 - GdS
UML- Notation einer Klasse
Klasse
Vergleich zu Vorlesung Info I
Namensfeld
Klasse
Attribut
...
Attributliste
Attribut
Operation()
...
Operationsliste
Operation()
Klasse
– Anmerkung: Zur besseren Unterscheidung von Klassen und Objekten ist
das obere Feld bei Objekten in der Vorlesung immer blau hinterlegt.
© 2015 IAS, Universität Stuttgart
102
2.3 Klasse
Info 2 - GdS
Beispiel
Programmcode in Java (vereinfacht):
Klasse
Tank
Typ: String
Füllstand: float
Soll-Niveau: float
füllen()
leeren()
Soll vorgeben(Soll: int)
Tank1:Tank
Objekt
Typ = Wasser
Füllstand = 3.2
Soll-Niveau = 20.0
© 2015 IAS, Universität Stuttgart
class Tank
{
private String
Typ;
private float Fuellstand;
private float Soll-Niveau;
public void fuellen()
{
...
}
...
}
Tank2:Tank
Typ = Bier
Füllstand = 16.0
Soll-Niveau = 16.0
...
Tank Tank1 = new Tank();
Tank Tank2 = new Tank();
...
103
2.3 Klasse
Info 2 - GdS
UML-Notation der Beziehung zwischen Klasse und Objekt
(Live-Mitschrieb)
– Beziehung zwischen Klasse und Objekt = Exemplarbeziehung:
© 2015 IAS, Universität Stuttgart
104
2.3 Klasse
Info 2 - GdS
Klassendiagramme und UML-Notation
– beinhaltet Klassen und weitere Symbole (z.B. Assoziationen, Vererbung)
Statisches Modell des Systems
Bei großen Systemen mehrere Klassendiagramme
– Klassenname
Beispiele: Konto, externer Mitarbeiter
Substantiv im Singular, ggf. durch Adjektiv ergänzt
Eindeutigkeit des Klassennamens
Erweiterungen der Klassennotation in der UML
Siehe Kap 2.6 (Selbststudium)
– Stereotyp (stereotype)
Übergreifender Bezeichner, klassifiziert Elemente des Modells
Beispiel: <<interface>> <<GUI>>
– Merkmal (property)
Beschreibt Eigenschaften (z.B. Einschränkungen) für Modellelement
Beispiel: Füllstand {0 <= Füllstand <= Max-Niveau}
 Zusätzliche Informationen über Klassen, Attribute, usw. im UML-Modell
© 2015 IAS, Universität Stuttgart
105
2.3 Klasse
Info 2 - GdS
Kurzbeschreibung der Klasse
– Beschreibung des Zwecks einer Klasse innerhalb des Softwaresystems
durch natürlich sprachliche Kurzbeschreibung möglich.
– Beschreibt den Zweck der Klasse mit 25 Wörtern oder weniger.
– Beispiel:
Klasse Student
Studierender, der an einer Hochschule immatrikuliert ist
Festlegung der Verantwortlichkeiten von Klassen
–
Jede Klasse soll für genau einen Aspekt des Gesamtsystems
verantwortlich sein.
–
Die in diesem Verantwortlichkeitsbereich liegenden Eigenschaften sollen
in einer einzelnen Klasse zusammengefasst sein und nicht auf
verschiedene Klassen aufgeteilt werden
–
Eine Klasse soll keine Eigenschaften enthalten, die nicht zu diesem
Verantwortlichkeitsbereich gehören
Verantwortlichkeiten frühzeitig festlegen
© 2015 IAS, Universität Stuttgart
106
2.3 Klasse
Info 2 - GdS
Beispiel: Festlegung der Verantwortlichkeiten
Kunde
Anschrift
Verwaltet alle
personenbezogenen
Daten eines Kunden
Verwaltet Anschrift
Telekommunikationsverbindungen und
Bankverbindungen
Verwaltet und
repräsentiert eine
postalische Anschrift
Prüft soweit möglich
und sinnvoll die
Anschrift gegen
vorhandene PLZ- und
Straßenverzeichnisse
Bankverbindung
Verwaltet und
repräsentiert ein Konto
bei einem Geldinstitut
Prüft IBAN auf
Korrektheit durch
integrierte
Checksumme
– Vorgehen zur Ermittlung von Verantwortlichkeiten einer Klasse
siehe Kapitel 5 „CRC-Karten“
Video: Anwendungsbeispiel Sortierband
© 2015 IAS, Universität Stuttgart
107
§ 2 Basiskonzepte und Notationen der objektorientierten Analyse
Info 2 - GdS
Frage zu 2.3
Kann das Verhalten eines einzelnen Objektes einer Klasse geändert werden?
Antwort
– Verhalten kann nicht exklusiv geändert werden
– Ändern der Methoden einer Klasse ändert das Verhalten aller Objekte einer
Klasse
© 2015 IAS, Universität Stuttgart
108
2.4 Attribut
§2
Info 2 - GdS
Basiskonzepte und Notationen der
objektorientierten Analyse
2.1
Grundbegriffe
2.2
Objekt
2.3
Klasse
2.4
Attribut
2.5
Operation
2.6
Erweiterungsmechanismen der UML (zum Selbststudium)
2.7
Zusammenfassung
© 2015 IAS, Universität Stuttgart
109
2.4 Attribut
Info 2 - GdS
Bezug zu Klassen und Objekten
–
In der Klasse werden die Attribute definiert
–
In den Objekten werden die Attribute mit Werten versehen
Beispiel für Attribute in UML-Notation
StudentIn
Matrikelnr
Name
Geburtsdatum
Immatrikulation
Bachelor
Noten
:StudentIn
Matrikelnr = 7002345
Name = (Hans, Meyer)
Geburtsdatum = 4.7.1986
Immatrikulation = 1.9.2006
Noten = ((2.3, Analysis),
(1.3, Informatik))
Das Attribut Bachelor besitzt
-noch- keinen Wert
© 2015 IAS, Universität Stuttgart
110
2.4 Attribut
Info 2 - GdS
Definition von Attributen mit der UML
Attribut: Typ = Anfangswert {Restriktion, Eigenschaftswert, ...}
Füllstand: int = 0 {0 <= Füllstand <= Max-Niveau}
Attributname
Typ
Anfangswert
(optional)
Liste von Merkmalen (optional):
• Restriktionen (Beschränkungen)
• Zusätzliche Eigenschaftswerte
– Beispiele für Attributnotationen
name : String = 'Unbekannt'
gebDatum : Date
radius : Integer = 25 {readonly}
– Attributname
Muss im Kontext der Klasse eindeutig sein
Beschreibt die gespeicherten Daten
Im Allgemeinen ein Substantiv
Außerhalb des Klassenkontextes kann der Attributname nicht immer
eindeutig sein
Beschreibung mit Klasse.Attribut
© 2015 IAS, Universität Stuttgart
111
2.4 Attribut
Info 2 - GdS
Attributtyp
– Jedes Attribut wird durch einen Typ beschrieben.
– Verwendung folgender Typen zur Erstellung des OOA-Modells
Standardtypen, z.B. String, Int
Aufzählungstypen
Listen; list of Typ, wobei Typ ein beliebiger Standardtyp sein kann
(z.B. Arrays, Vektoren)
(elementare) Klassen
Typ = [Standardtyp | Aufzählungstyp | list of Typ | Klasse]
Wie genau soll der Attributtyp festgelegt werden?
– Analyse
Möglichst präzise Beschreibung des Attributs aus fachlicher Sicht
– Entwurf und Implementierung
Ggf. Neudefinition des Typs in Abhängigkeit von der gewählten
Programmiersprache
© 2015 IAS, Universität Stuttgart
112
2.4 Attribut
Info 2 - GdS
Standardtypen in UML
– String  Zeichenkette (Länge)
– Int  ganze Zahl
– UInt  positive ganze Zahl
– Float  Gleitkommanzahl 32 Bit
– Double  Gleitkommazahl 64 Bit
– Fixed (Vorkommastellen, Nachkommastellen)  Festkommazahl
– Boolean
– Date
– Time
© 2015 IAS, Universität Stuttgart
113
2.4 Attribut
Info 2 - GdS
Aufzählungstyp
Für einen Aufzählungstyp sind anzugeben:
– Bereich
Alle Werte, die das Attribut annehmen kann
– Selektionsart
Anzahl der selektierbaren Elemente
– Erweiterbarkeit
Der Benutzer kann neue Werte eingeben
Fehlt eine Angabe, gelten die Voreinstellungen
Notation
{ values: W1, W2,…,
select: min..max,
noAdd }
Beispiel
Notenwert {values:
© 2015 IAS, Universität Stuttgart
Wertebereich
Selektionsart mit min. und max. Anzahl
Wertebereich nicht erweiterbar
1.0, 1.3, 1.7, 2.0, 2.3, 2.7,
3.0, 3.3, 3.7, 4.0, 5.0,noAdd}
114
2.4 Attribut
Info 2 - GdS
Elementare Klasse (support class)
– Typ eines Attributs kann selbst wieder durch eine Klasse beschrieben
werden
Verwendung einer Klasse als komplexer Datentyp
– In der Regel: Einmalige Definition und Wiederverwendung bei jedem
Projekt
– Zur Verdeutlichung kann der Name einer elementaren Klasse mit dem
Postfix "T" versehen werden
NameT
Vorname: String
Nachname: String
© 2015 IAS, Universität Stuttgart
115
2.4 Attribut
Info 2 - GdS
Beispiel: Verwendung von elementaren Klassen
StudentIn
Matrikelnr: String(7)
Name: NameT
Geburtsdatum: Date
Immatrikulation: Date
Abschluss: Date
Noten: list of NoteT
Klasse
NameT
Vorname: String
Nachname: String
NoteT
Fach: String
Wert: Notenwert
elementare Klasse
Notenwert {values:
1.0, 1.3, 1.7, 2.0, 2.3, 2.7,
3.0, 3.3, 3.7, 4.0, 5.0,noAdd}
Aufzählungstyp
© 2015 IAS, Universität Stuttgart
116
2.4 Attribut
Info 2 - GdS
Verwendung von Merkmalen bei Attributen
– Restriktion (constraint)
Restriktion = Invariante = Zusicherung, die immer wahr sein muss
– Zusätzliche Eigenschaftswerte (tagged values)
Zusätzliche modellrelevante Informationen über das Attribut
– Beispiel
StudentIn
Matrikelnr: String(7)
{Schlüsselattribut}
Name: NameT
Geburtsdatum: Date
Immatrikulation: Date
Abschluss: Date
{Abschluss >
Immatrikulation
> Geburtsdatum}
© 2015 IAS, Universität Stuttgart
Eigenschaftswert
Restriktion
Siehe Kap 2.6 (Selbststudium)
117
2.4 Attribut
Info 2 - GdS
Klassenattribut
– Gehört nicht zu einem einzelnen Objekt, sondern ist Attribut einer Klasse
– Es existiert nur ein Attributwert für alle Objekte einer Klasse
– Änderung des Attributwertes gilt für alle Objekte dieser Klasse
– Klassenattribute existieren auch, wenn es zu einer Klasse (noch) keine
Objekte gibt
– Verwendung: z.B. Zähler für Objektverwaltung
– Kennzeichnung durch Unterstreichen
– Java-Code:
Beispiel: Klassenattribut
static private double Mehrwertsteuersatz = 0,19;
Abgeleitetes Attribut
– Wert wird automatisch aus anderen Attributwerten berechnet
– Darf nicht direkt geändert werden.
– Kennzeichnung mit dem Präfix “/”.
– Angabe eines Anfangswertes entfällt
– Berechnungsvorschrift kann in Form einer Restriktion angegeben werden
© 2015 IAS, Universität Stuttgart
118
2.4 Attribut
Info 2 - GdS
Beispiel: Klassenattribut und abgeleitetes Attribut (LiveMitschrieb)
StudentIn
Tank
Matrikelnr: String
Geburtsdatum : Date
AnzahlStudentInnen: Int
/Alter: Integer
{Alter = today Geburtsdatum}
Füllstand: Integer
Max-Niveau: Integer
/Restkapazität: Integer
{Restkapazität =
Max-Niveau - Füllstand}
Klassenattribut
Abgeleitetes
Attribut
Berechnungsvorschrift als
Restriktion
© 2015 IAS, Universität Stuttgart
119
§ 2 Basiskonzepte und Notationen der objektorientierten Analyse
Info 2 - GdS
Frage zu 2.4
Sie sollen eine Software zur grafischen Entwicklung von Schaltplänen
erstellen.
Modellieren Sie die Klasse Widerstand mit möglichen Attributen.
Was ist ein Klassenattribut?
Antwort
Widerstand
ID-Nummer: int
Widerstandswert: float
Klassenattribut = nur ein
Attributwert für alle
Objekte der Klasse.
Leistung: float
Toleranz: float
Symbol: Bild
Anzahl: int
© 2015 IAS, Universität Stuttgart
120
2.5 Operation
§2
Info 2 - GdS
Basiskonzepte und Notationen der
objektorientierten Analyse
2.1
Grundbegriffe
2.2
Objekt
2.3
Klasse
2.4
Attribut
2.5
Operation
2.6
Erweiterungsmechanismen der UML (zum Selbststudium)
2.7
Zusammenfassung
© 2015 IAS, Universität Stuttgart
121
2.5 Operation
Info 2 - GdS
Übersicht
– Alle Objekte einer Klasse verwenden dieselben Operationen
– Menge aller Operationen = Verhalten bzw. Schnittstelle der Klasse
– Jede Operation kann auf alle Attribute eines Objekts direkt zugreifen
Beispiele
StudentIn
Tank
Typ
Füllstand
Soll-Niveau
Max-Niveau
füllen()
leeren()
Soll vorgeben(Soll-Füllstand: int)
setze Max-Niveau(Max-Füllstand: int)
Für jedes Objekt dieser Klassen
existieren die angegebenen Operationen
© 2015 IAS, Universität Stuttgart
Matrikelnr
Name
Geburtsdatum
Immatrikulation
Noten
Anzahl
immatrikulieren()
exmatrikulieren()
drucke Bescheinigung()
notiere Noten()
berechne Durchschnitt()
drucke Studentenliste()
melde Praktikum an()
122
2.5 Operation
Info 2 - GdS
Definition von Operationen mit der UML
Operation (Parameter1: Parametertyp, ...): Rückgabetyp {Merkmal1, ... }
Soll vorgeben(Soll-Füllstand: int): void {Soll-Füllstand < Max-Niveau}
Operationsname
Runde
Klammern
Parameter
Parametertyp
Rückgabetyp
 Unterschied
zu Attributen
Pflichtangaben
Liste von Merkmalen:
• Restriktionen
• Eigenschaftswerte
z.B. Bedingung für Aufruf,
Werte von Argumenten
Optionale Angaben
– Signatur einer Operation = Name + Parameter + Rückgabewert
Ausreichend für Aufruf der Operation
© 2015 IAS, Universität Stuttgart
123
2.5 Operation
Info 2 - GdS
UML-Notation für Operationen
Klasse
operation()
klassenoperation()
Beispiele
getPosition(x, y)
getPosition(x : Integer, y : Integer)
vergroessern(umFaktor: Real): GeomFigur
addRufnummer(Rufnummer: String, Art: Rufart= Fax)
<<constructor>> create()
© 2015 IAS, Universität Stuttgart
124
2.5 Operation
Info 2 - GdS
Operationsname
– soll ausdrücken, was die Operation leistet
– sollte daher ein Verb enthalten
Beispiel: verschiebe(), erhöhe Gehalt()
– muss im Kontext der Klasse eindeutig sein
Bezeichnung außerhalb der Klasse: Klasse.Operation()
– UML erlaubt Leerzeichen in Operationsnamen
erhöht die Lesbarkeit
in Programmiersprachen nicht möglich
Alternativen
– Unterstrich
erhoehe_Gehalt()
– Groß-/Kleinschreibung
erhoeheGehalt()
© 2015 IAS, Universität Stuttgart
125
2.5 Operation
Info 2 - GdS
Beschreibung von Operationen
– Jede Operation kann aus Benutzersicht beschrieben werden:
in der Regel durch umgangssprachliche Formulierung oder
komplexere Operationen durch Diagramme des dynamischen Modells
– Beispiel:
Operation: machEtwas()
Eingabe: Eingabedaten
Ausgabe: Ausgabedaten
Wirkung: Beschreibung der Wirkung aus Benutzersicht,
wobei der Fokus auf dem Normalverhalten liegt.
Sonderfälle werden separat beschrieben
© 2015 IAS, Universität Stuttgart
126
2.5 Operation
Info 2 - GdS
Klassenoperation
– ist Klasse zugeordnet und nicht nur einzelnem Objekt
– drucke Studentenliste() Alle Objekte der Klasse (Objektverwaltung)
– erhöhe Stundenlohn()  Zugriff auf Klassenattribute
StudentIn
immatrikulieren()
exmatrikulieren()
drucke Studienbescheinigung()
notiere Noten()
berechne Durchschnitt()
drucke Studentenliste()
melde Praktikum an()
Programmcode in Java (vereinfacht):
class StudentIn
{
void notiereNoten()
{ ... }
float berechneDurchschnitt()
{ ... }
static void druckeStudentenliste()
{ ... }
}
Verwendung von Klassenoperationen in der Systemanalyse
– für Aufgaben, die unabhängig von einem ausgewählten Objekt sind
– für Operationen, die sich auf alle oder mehrere Objekte der Klasse beziehen
© 2015 IAS, Universität Stuttgart
127
2.5 Operation
Info 2 - GdS
Verwaltungsoperationen
... sind grundlegende Operationen, die fast jede Klasse benötigt.
Aus Gründen der Lesbarkeit werden sie nicht in das Klassendiagramm
eingetragen.
– Interne Verwaltungsoperationen
new(), delete()
Erzeugen / Löschen von Objekten
setAttribute(), getAttribute()
Schreiben / Lesen von Attributwerten
link(), unlink(), getlink()
Verbindungen zwischen Objekten
– Externe Verwaltungsoperationen
erfassen()
ändern()
löschen()
erstelleListe()
© 2015 IAS, Universität Stuttgart
128
§ 2 Basiskonzepte und Notationen der objektorientierten Analyse
Info 2 - GdS
Frage zu 2.5
Welche Aussagen zu Botschaften und Operationen sind richtig?
Antwort


Eine Botschaft ist eine Nachricht, die eine Operation (Methode) gleichen
Namens aufruft.
f  Objekte kommunizieren mit ihrer Klasse über Botschaften.
f  Für den Aufruf einer Operation ist der Name ausreichend




Eine Operation heißt Klassenoperation, wenn Klassenattribute ohne
Beteiligung eines einzigen Objekts manipuliert werden
Eine Konstruktoroperation ist eine Klassenoperation.
© 2015 IAS, Universität Stuttgart
129
2.6 Erweiterungsmechanismen der UML (zum Selbststudium)
§2
Info 2 - GdS
Basiskonzepte und Notationen der
objektorientierten Analyse
2.1
Grundbegriffe
2.2
Objekt
2.3
Klasse
2.4
Attribut
2.5
Operation
2.6
Erweiterungsmechanismen der UML (zum Selbststudium)
2.7
Zusammenfassung
© 2015 IAS, Universität Stuttgart
130
2.6 Erweiterungsmechanismen der UML (zum Selbststudium)
Info 2 - GdS
Erweiterungen von Modellelementen in der UML
– Stereotyp (stereotype)
– Merkmal (property)
Stereotypen und Merkmale werden verwendet, um zusätzliche Informationen
über eine Klasse, Attribut oder Operation im UML-Modell darzustellen
Stereotyp (stereotype)
– Klassifiziert Elemente (z.B. Klassen, Operationen) des Modells mit Namen
– Projekt-, unternehmens- oder methodenspezifische Erweiterung
– Verwendung z.B. zur Angabe möglicher Verwendungszwecke einer Klasse
– UML enthält vordefinierte Stereotypen
– Es können weitere Stereotypen definiert werden.
– Angabe in französischen Anführungszeichen mit Spitzen nach außen « ».
– Ein Stereotyp kann sowohl die gesamte Klasse als auch Gruppen von
Attributen und Methoden beschreiben
© 2015 IAS, Universität Stuttgart
131
2.6 Erweiterungsmechanismen der UML (zum Selbststudium)
Info 2 - GdS
Erweiterungen von Modellelementen in der UML
Merkmal (property)
– Beschreibt Eigenschaften eines bestimmten Elements des Modells.
– Mehrere Merkmale können zu einer Liste zusammengefasst werden:
{Schlüsselwort = Wert, ...}
Beispiel:
<<Stammdaten>>
 Stereotyp
Mitarbeiter
{Autor=Maier
Version=1.0}
 Merkmal
– Merkmale sind keine Attribute!
Attribute beschreiben die Eigenschaften einer Klasse
Merkmale beschreiben die Eigenschaften eines beliebigen UML
Modellelements (z.B. Klasse oder auch Attribut)
© 2015 IAS, Universität Stuttgart
132
2.6 Erweiterungsmechanismen der UML (zum Selbststudium)
Info 2 - GdS
Beispiel: Verwendung von Stereotypen und Merkmalen
<<Konto>>
Bankkonto
{Verantwortlicher=Direktor,
Kontenart=Privatkunde,
Kondition=Vorzug}
Kontoinhaber : string
Kontostand : float
<<Nutzung>>
einzahlen(Betrag)
abheben(Betrag)
<<Verwaltung>>
Kontoinhaber setzen(Inhaber)
Kontoinhaber abfragen
<<Ausgabe>>
drucken
© 2015 IAS, Universität Stuttgart
133
2.6 Erweiterungsmechanismen der UML (zum Selbststudium)
Info 2 - GdS
Verwendung von Merkmalen bei Attributen
– Als Restriktion (constraint)
Beziehung zwischen Attributwerten eines Objekts, die während der
Ausführung des Systems unverändert erhalten bleiben muss.
Einschränkung des Wertebereichs bzw. der Wertemenge des Attributs
Restriktion = Invariante = Zusicherung, die immer wahr sein muss.
Notation wenn möglich direkt nach einem Attribut
– Notation in natürlicher Sprache oder in einer formalen Sprachen
Z.B. Object Constraint Language OCL
– Beispiele:
Klasse StudentIn
{Abschluss > Immatrikulation > Geburtsdatum}
Klasse Artikel
{Verkaufspreis >= 1.5 * Einkaufspreis}
© 2015 IAS, Universität Stuttgart
134
2.6 Erweiterungsmechanismen der UML (zum Selbststudium)
Info 2 - GdS
Verwendung von Merkmalen bei Attributen
– Als Eigenschaftswerte (tagged values)
– Für die genauere Spezifikation der Attribute kann eine Liste von
Merkmalen in der folgenden Form verwendet werden:
Name: Typ = Anfangswert
{ mandatory, key, frozen, Einheit: ...., Beschreibung: ... }
– Dabei bedeutet
mandatory: Muss-Attribut
key: Schlüssel
frozen: Attributwert nicht änderbar
–
Weitere Eigenschaftswerte definierbar
z.B. {readonly}
© 2015 IAS, Universität Stuttgart
135
2.6 Erweiterungsmechanismen der UML (zum Selbststudium)
Info 2 - GdS
Beispiel: Verwendung von Merkmalen (Restriktionen und
Eigenschaftswerten) bei Attributen
Student
Matrikelnr: String(7) {mandatory, key}
Name: NameT {mandatory}
Geburtsdatum: Date {mandatory}
Immatrikulation: Date
{mandatory, Beschreibung: Datum des Studienbeginns}
Abschluss: Date
{Beschreibung: Datum der abschließenden Prüfung}
Noten: list of NoteT
Restriktionen: {Geburtsdatum < Immatrikulation < Abschluss}
© 2015 IAS, Universität Stuttgart
136
2.6 Erweiterungsmechanismen der UML (zum Selbststudium)
Info 2 - GdS
Verwendung von Stereotypen zum Gruppieren von
Operationen
Besitzt eine Klasse viele Operationen, dann können sie mit Hilfe von
Stereotypen gruppiert werden
 Beschreibung des Verwendungszwecks
Beispiel
Aushilfe
<<constructor>>
einstellen()
<<update>>
ändere Stundenzahl()
erhöhe Stundenlohn()
<<query>>
drucke Adressliste()
drucke Stundenliste()
© 2015 IAS, Universität Stuttgart
Stereotyp <<query>> = keine
Seiteneffekte auf den Zustand des
Objekts oder anderer Objekte
137
2.6 Erweiterungsmechanismen der UML (zum Selbststudium)
Info 2 - GdS
Klassifikation von Operationen (1)
Operationen lassen sich nach ihren Aufgaben einteilen:
Operationen ...
– mit lesendem Zugriff auf Attribute (accessor operation)
Beispiel: drucke Studienbescheinigung ()
– schreibendem Zugriff auf Attribute (update operation)
Beispiel: notiere Note ()
– zur Durchführung von Berechnungen
Beispiel: berechne Durchschnitt ()
– zum Erzeugen (constructor operation) und Löschen (destructor operation)
von Objekten
Beispiel: immatrikulieren (), exmatrikulieren ()
© 2015 IAS, Universität Stuttgart
138
2.6 Erweiterungsmechanismen der UML (zum Selbststudium)
Info 2 - GdS
Klassifikation von Operationen (2)
Operationen ...
– zum Selektieren von Objekten nach bestimmten Kriterien (query operation
und select operation)
Beispiel: drucke Studentenliste ()
(Selektion der StudentInnen, die sich immatrikuliert haben)
– zum Herstellen von Verbindungen zwischen Objekten (connect operation)
Beispiel: anmelde Praktikum ()
(Verbindungsaufbau zwischen Objekten StudentIn s1 und Firma f1)
s1:Student
f1:Firma
– zum Aktivieren von Operationen anderer Klassen
Beispiel: drucke Praktikumsnachweis ()
(Operation in s1 verwendet Operation von f1)
© 2015 IAS, Universität Stuttgart
139
Info 2 - GdS
§2
Basiskonzepte und Notationen der
objektorientierten Analyse
2.1
Grundbegriffe
2.2
Objekt
2.3
Klasse
2.4
Attribut
2.5
Operation
2.6
Erweiterungsmechanismen der UML (zum Selbststudium)
2.7
Zusammenfassung
© 2015 IAS, Universität Stuttgart
140
§ 2 Basiskonzepte und Notationen der objektorientierten Analyse
Info 2 - GdS
Zusammenfassung § 2 (1)
Die objektorientierte Softwareentwicklung basiert auf folgenden Konzepten:
– Ein Objekt besitzt einen Zustand, reagiert mit einem definierten Verhalten
und hat eine Identität
– Objekte und Ihre Verbindungen werden im Objektdiagramm dargestellt
– Eine Klasse beschreibt eine Sammlung von Objekten mit gleicher Struktur,
gleichem Verhalten und gleichen Beziehungen
– Sie wird im Klassendiagramm dargestellt
– Jedes Attribut ist von einem bestimmten Typ
– Unterscheidung zwischen (Objekt-)Attributen und Klassenattributen
– Operationen beschreiben das Verhalten bzw. die Schnittstelle einer
Klasse
– Unterscheidung zwischen (Objekt-)Operationen und Klassenoperationen
© 2015 IAS, Universität Stuttgart
141
§ 2 Basiskonzepte und Notationen der objektorientierten Analyse
Info 2 - GdS
Zusammenfassung § 2 (2)
UML-Notation von Klasse, Objekt, Attribut und Operation
Klassenname
Kreis
Attributname
radius:int {radius>0}
mittelpunkt:Point = (10,10)
Attributtyp
Operationen
anzeigen()
setPosition(pos:Point)
setRadius(neuerRadius)
Objektname
einKreis:Kreis
Attributname
radius = 25
mittelpunkt = (10,10)
© 2015 IAS, Universität Stuttgart
Restriktion
Initialwert
Parameter
Klassenname
Attributwerte
142
§ 2 Basiskonzepte und Notationen der objektorientierten Analyse
Info 2 - GdS
Zusammenfassung § 2 (3)
Der entsprechende Programmcode in Java (vereinfacht):
class Kreis
{
private int radius;
private Point mittelpunkt;
public void setRadius(int neuerRadius)
{
if (neuerRadius > 0)
// Restriktion
{
radius = neuerRadius;
...
}
}
public void setPosition(Point pos)
{ ... }
public void anzeigen()
{ ... }
}
© 2015 IAS, Universität Stuttgart
143
§ 2 Basiskonzepte und Notationen der objektorientierten Analyse
Info 2 - GdS
Vorbereitungsfragen zu § 2
Frage 1: Warum muss ein Objekt wissen, zu welcher Klasse es gehört?
(WS 02/03)
Antwort

Damit die Klassenzugehörigkeit während der Laufzeit eines Programms
herausgefunden werden kann.

Die Operationen sind nur bei der Klasse gespeichert. Um eine Botschaft
ausführen zu können, muss das Objekt auf die eigene Klasse und dort auf
die gewünschte Operation zugreifen können.


Damit auf Klassenattribute zugegriffen werden kann.

Keine der Antworten ist richtig.
Damit ein Objekt über seine Klasse während der Laufzeit auf ein anderes
Objekt zugreifen kann.
© 2015 IAS, Universität Stuttgart
144
§ 2 Basiskonzepte und Notationen der objektorientierten Analyse
Info 2 - GdS
Vorbereitungsfragen zu § 2
Frage 2: Das Geheimnisprinzip bedeutet: (WS 03/04)
Antwort


Objekte kennen Ihre Klassen nicht.


Eine Klasse hat nur Operationen, die auf ihre eigenen Attribute zugreifen.

Die Attributwerte werden verschlüsselt abgespeichert.
Direkter Zugriff auf die Attributwerte ist nicht möglich, außer innerhalb der
eigenen Klasse.
Auf die Attributwerte eines Objekts kann nur über Operationen zugegriffen
werden.
© 2015 IAS, Universität Stuttgart
145
§ 2 Basiskonzepte und Notationen der objektorientierten Analyse
Info 2 - GdS
Vorbereitungsfragen zu § 2
Frage 3: Für Objektdiagramme gilt: (WS 03/04)
Antwort
 Sie stellen die Erzeugung von Objekten dar.
 Sie können zu Kommunikationsdiagrammen erweitert werden.
 Sie stellen Verbindungen unter Objekten dar.
 Sie können zu Sequenzdiagrammen erweitert werden.
 Ein Objektdiagramm beschreibt immer nur eine Situation zu einem
bestimmten Zeitpunkt.
© 2015 IAS, Universität Stuttgart
146
§ 2 Basiskonzepte und Notationen der objektorientierten Analyse
Info 2 - GdS
Vorbereitungsfragen zu § 2
Frage 4: Welche Aussagen über Klassenoperationen sind richtig?
(WS 04/05)
Antwort

Klassenoperationen werden in UML-Notation durch ein $-Zeichen
gekennzeichnet.

Eine Operation heißt Klassenoperation, wenn Klassenattribute ohne
Beteiligung eines einzelnen Objekts manipuliert werden.

Wenn eine Operation auf alle Objekte einer Klasse wirkt, spricht man von
einer Klassenoperation.


Klassenattribute können nur über Klassenoperationen manipuliert werden.
Klassenoperationen können Objektattribute manipulieren.
© 2015 IAS, Universität Stuttgart
147
§ 2 Basiskonzepte und Notationen der objektorientierten Analyse
Info 2 - GdS
Vorbereitungsfragen zu § 2
Frage 5: Welche der folgenden Aussagen über Objekte sind richtig?
(WS 06/07)
Antwort


Alle Objekte einer Klasse besitzen dieselben Attribute und Attributwerte.



Alle Objekte einer Klasse verwenden dieselben Operationen.
Ein Objekt kann in der UML als Rechteck dargestellt werden mit
Objektnamen, Operationen, Attributen und Attributwerten.
Objekte werden durch Aufruf der Konstruktoroperation der Klasse erzeugt.
Eine Klasse kennt von Natur aus die von ihr erzeugten Objekte.
© 2015 IAS, Universität Stuttgart
148
§ 2 Basiskonzepte und Notationen der objektorientierten Analyse
Info 2 - GdS
Vorbereitungsfragen zu § 2
Frage 6: Welche der folgenden Aussagen über Klassenattribute sind
richtig? (WS 06/07)
Antwort

Ein Klassenattribut bewirkt, dass alle Objekte einer Klasse denselben
Attributwert bei diesem Klassenattribut haben.




Ein Klassenattribut wird mit dem Präfix „/“ gekennzeichnet.
Klassenattribute legen die Eigenschaft einzelner Objekte fest.
Der Wert eines Klassenattributs kann nachträglich nicht geändert werden.
Klassenattribute existieren auch, wenn es zu einer Klasse noch keine
Objekte gibt.
© 2015 IAS, Universität Stuttgart
149
Herunterladen