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