Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

Größe: px
Ab Seite anzeigen:

Download "Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny"

Transkript

1 Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

2 3. UML Klassendiagramm

3 Nachtrag

4 3.1 Einführung UML UML ist eine standardisierte Sprache zur Modellierung von Systemen. In UML werden graphische Diagramme vorgeschlagen Beispiele folgen...

5 UML Anwendungsfalldiagramm engl.: Use-Case Diagram

6 Anwendungsfalldiagramm

7 Analysemodelldiagramm Beispiel: Lift-Steuerung Keine einzelnen Objekte, sondern Klassen!

8 Beispiel: Analyseprototyp

9 Sequenzdiagramm

10 Zustandsdiagramm Zustandsübergänge Pfeile mit offenen Spitzen Beschriftung mit Ereignis, das zu dem Übergang führt Anfangs- und Endzustand

11 3.2 UML Klassendiagramm 1. Aus Sicht des Analytikers: Einfachster Fall: Nur Klassenname Aufführungssaal

12 UML Klassendiagramm Attribute: Gedächtnis eines Objektes Eigenschaften Alle Attribute-Werte zusammen: Zustand Attribute, die z.b. in einer Datenbank gespeichert werden, um das Objekt später zu rekonstruieren, heißen persistent.

13 UML Klassendiagramm Attribute: Gedächtnis eines Objektes Eigenschaften Alle Attribute-Werte zusammen: Zustand Person Name Geschlecht Haarfarbe Augenfarbe Alter Aufführungssaal Ort Bezeichnung Art Anzahl_Plätze Kosten_pro_Tag Attribute, die z.b. in einer Datenbank gespeichert werden, um das Objekt später zu rekonstruieren, heißen persistent.

14 UML Klassendiagramm Methoden: Fähigkeiten einer Klasse Unterscheidungsmöglichkeit: Konstruktoren und Destruktoren Speichern und Laden von Objektzuständen Attribute oder Gesamtzustand ändern Attribute oder Gesamtzustand auslesen Berechnung ausführen, basierend auf aktuellem Zustand

15 UML Klassendiagramm Methoden Person Name Geschlecht Haarfarbe Augenfarbe Alter definieren suchen Alter_festlegen Haarfarbe_ändern löschen laden speichern Aufführungssaal Ort Bezeichnung Art Anzahl_Plätze Kosten_pro_Tag definieren suchen

16 UML Klassendiagramm Zusammenfassung: Detailgrade Nur Klassenname Klassenname und Attribute Klassenname, Attribute und Methoden Aufführungssaal Aufführungssaal Ort Bezeichnung Art Anzahl_Plätze Kosten_pro_Tag Aufführungssaal Ort Bezeichnung Art Anzahl_Plätze Kosten_pro_Tag definieren suchen

17 Erweiterungen 2. Aus Sicht des Designers: Sichtbarkeit der Attribute: Angaben durch Zeichen vor dem Attributnamen: + = public: Systemweiter Zugriff - = protected: Zugriff nur durch Instanzen der Klasse # = protected: Instanzen der Klasse und Unterklassen unterstrichen = class-scope (static): Systemweiter Zugriff ohne Instanz (Eigenschaft der Klasse) Fenster Standardgröße +aktuellegröße -tags #owner

18 Erweiterungen Typen der Attribute: Angabe des Typs nach : hinter dem Attributnamen: Fenster Standardgröße: Rechteck +aktuellegröße: Rechteck -tags: byte #owner: Fenster*

19 Erweiterungen Initialisierung der Attribute: Initialisierungswerte werden nach = hinter dem Typ angegeben: Fenster Standardgröße: Rechteck = (200,100) +aktuellegröße: Rechteck -tags: byte = 128 #owner: Fenster* = NULL

20 Erweiterungen Sichtbarkeit der Methoden: Angabe von +, -, #, _ wir bei Attributen: Fenster Standardgröße: Rechteck = (200,100) +aktuellegröße: Rechteck -tags: byte = 128 #owner: Fenster* = NULL -zeigefenster +öffnen +anzkinder #minimiereallekinder

21 Erweiterungen Typen der Parameter und Rückgabewerte von Methoden: Wie bei Attributen: Name : Typ: Fenster Standardgröße: Rechteck = (200,100) +aktuellegröße: Rechteck -tags: byte = 128 #owner: Fenster* = NULL -zeigefenster() +öffnen(owner:fenster*):boolean +anzkinder():int #minimiereallekinder()

22 Klassendiagramm C++ Person -Name: string -Alter: int +definieren(name:string, alter:int) +laden() +speichern() class Person { private: string name; int alter; public: Person(); void definieren(string n, int a); void laden(); void speichern(); };

23 Klassendiagramm C++ Vererbungsbeziehung: Wenn es auf Attribute und Methoden nicht ankommt: Ticket {abstract} Platz-Ticket Zähl-Ticket

24 Vererbung Vererbung: In Klassen kann es inhaltliche Übereinstimmung geben: Attribute können gleich sein (Typ und Wert) Methoden können gleich sein (Parameter, Rückgabewert, Code) Wenn es genügend Übereinstimmungen gibt, dann können diese über die Vererbungsbeziehung verbunden werden: Generalisierung / Spezialisierung (GenSpec)

25 Vererbung Generalisierung / Spezialisierung (GenSpec): Platz-Ticket Veranstaltung Aufführungssaal Datum Platz Zähl-Ticket Veranstaltung Aufführungssaal Datum Anzahl_Plätze verkaufen Platz_zuweisen Platz_ändern stornieren suchen verkaufen Anzahl_zuweisen Anzahl_ändern stornieren suchen

26 Vererbung Generalisierung / Spezialisierung (GenSpec): Ticket Veranstaltung Aufführungssaal Datum Platz-Ticket Platz Platz_zuweisen Platz_ändern Bem: Pfeile leer! verkaufen stornieren suchen Zähl-Ticket Anzahl_Plätze Anzahl_zuweisen Anzahl_ändern

27 Vererbung Abstrakte Oberklasse: Von der Oberklasse Ticket kann kein Objekt erzeugt werden { abstract } Ticket {abstract} Veranstaltung Aufführungssaal Datum Platz-Ticket Platz Platz_zuweisen Platz_ändern verkaufen stornieren suchen Zähl-Ticket Anzahl_Plätze Anzahl_zuweisen Anzahl_ändern

28 Vererbung Vererbungsbeziehung: Wenn es auf Attribute und Methoden nicht ankommt: Ticket {abstract} Platz-Ticket Zähl-Ticket

29 Vererbung C++ Person class Person { }; Angestellter -Bereich: string -Leitung: bool versetzen(bereich:string) istleiter():bool class Angestellter : public Person { private: string bereich; bool leitung; public: Angestellter(); void versetzen(string b); bool istleiter(); };