35
1 Module, Klassen, Verträge Abstraktion und Spezifikation Kunden-Lieferanten-Modell Module und Schnittstellen Spezifikation durch Vertrag Klassen und Objekte Generalisierung und Spezialisierung Kapselung

1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Embed Size (px)

Citation preview

Page 1: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

1

Module, Klassen, Verträge

Abstraktion und SpezifikationKunden-Lieferanten-ModellModule und SchnittstellenSpezifikation durch VertragKlassen und ObjekteGeneralisierung und SpezialisierungKapselung

Page 2: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 2

Abstraktion und Spezifikation

Ein Kaffeeautomat

Kaffeeautomat

0,30

Kaffee ausgebenPreis EUR

eingenommener

gesammelter

außer

initialisieren

Geld einnehmen

Geld zurückgeben

0,60

31,20

Betrag EUR

Betrieb

Betrag EUR

Geld-schlitz

Page 3: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 3

Abstraktion und Spezifikation

Formales Zustands-Verhaltens-Modell

Aktionen: e Geld_einnehmenr Geld_zurückgebena Kaffee_ausgeben

Zustände: n neutralg geladen mit Geld

Reaktionen: G GeldrückgabeK Kaffeeausgabe0 keine Reaktion

(e, 0)

(r, G)

(e, G)

(a, 0)

(r, 0)

(a, K)gg nn

Page 4: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 4

Abstraktion und Spezifikation

Textuelles Softwaremodell: Schnittstellenspezifikation

MODULE Kaffeeautomat

QUERIES

außer_Betrieb : BOOLEAN

eingenommener_Betrag : INTEGER

Preis : INTEGER

QUERIES FOR Betriebspersonal

gesammelter_Betrag : INTEGER

ACTIONS

Geld_einnehmen (IN Betrag : INTEGER)

Kaffee_ausgeben

Geld_zurückgeben

ACTIONS FOR Betriebspersonal

initialisieren (IN neuer_Preis : INTEGER)

END Kaffeeautomat

Page 5: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 5

Kunden-Lieferanten-Modell

Kunde (Client)

Schnittstelle = Dienste

Lieferant (Supplier)

benutzt bietet

Page 6: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 6

Kunden-Lieferanten-Modell

Aufrufender

Dienste sind- Abfragen - Aktionen

Aufgerufener

Aufruf Antwort

Page 7: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 7

Module und Schnittstellen

Module

• Eine Schnittstelle legt fest, was + ein Lieferant bereitstellt und+ ein Kunde erhalten kann.

• Dienste haben einen Namen und ggf. Parameter.• Parameter müssen vom Kunden versorgt werden.

• Abfragen (QUERIES) geben Auskunft über den Zustand eines Moduls, verändern ihn aber nicht.Sie liefern als Ergebnis einen Wert.

• Aktionen (ACTIONS) verändern den Zustand eines Moduls, liefern aber kein Ergebnis.

• Rechte regeln, welche Kunden welche Dienste nutzen dürfen (FOR-Klausel).

Page 8: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 8

Module und Schnittstellen

Nutzung von Diensten durch Kunden

• Qualifizierung von NamenModulname.Dienstname (aktuelle Parameter)

• Beispiele zur Nutzung:

Kaffeeautomat.Preis Kaffeeautomat.Kaffee_ausgebenKaffeeautomat.Geld_einnehmen (120) Kaffeeautomat.Kaffee_ausgeben (5 Tassen)

IF Kaffeeautomat.außer_Betrieb THEN anderen Automaten suchen END

Kaffeepreis := Kaffeeautomat.Preis

Page 9: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 9

Module und Schnittstellen

Signatur eines Dienstes

• Name des Dienstes• Anzahl, Namen und Typen der Parameter; ggf. Ergebnistyp

MODULE Kaffeeautomat

QUERIES

außer_Betrieb : BOOLEAN

eingenommener_Betrag : INTEGER

Preis : INTEGER

QUERIES FOR Betriebspersonal

gesammelter_Betrag : INTEGER

ACTIONS

Geld_einnehmen (IN Betrag : INTEGER)

Kaffee_ausgeben

Geld_zurückgeben

ACTIONS FOR Betriebspersonal

initialisieren (IN neuer_Preis : INTEGER)

END Kaffeeautomat

Page 10: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 10

Module und Schnittstellen

Statische Semantik

• Festlegung der Zugriffskontrolle

mein_Geldbeutel := Kaffeeautomat.gesammelter_Betrag

Kaffeeautomat.eingenommener_Betrag := 240

• Typbindung: Abfragen, Parameter, Variablen sind an Typen gebunden.

durstig : BOOLEAN

...

durstig := Kaffeeautomat.Preis

• Prüfung der statischen Semantik ist ohne Ausführung möglich.

Page 11: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 11

Module und Schnittstellen

Dynamische Semantik

• Die bisherige Schnittstellenspezifikation

+ erlaubt logisch falsche Parameter,

+ sagt nichts über die Reihenfolge der Aufrufe.

• Prüfung der dynamischen Semantik ist erst während der Ausführung möglich.

• Mittel zur Spezifikation der dynamischen Semantik: Verträge aus

+ Vor- und Nachbedingungen

+ Invarianten

Page 12: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 12

Spezifikation durch Vertrag

Vor- und Nachbedingungen

• Vorbedingungen des Auftragnehmers in Hinblick auf die Vertragsannahme

• Der Kunde ist verantwortlich für die Einhaltung der Vorbedingungen.

• Der Auftragnehmer kann Aufträge, die die Vorbedingungen verletzen, zurückweisen.

• Beispiel:

Kunde: Kaffeeautomat.Geld_einnehmen (-1000)

Vorbedingung: Betrag >= 0

Page 13: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 13

Spezifikation durch Vertrag

Vor- und Nachbedingungen

• Nachbedingungen, die der Lieferant dem Kunden garantiert

• Der Lieferant ist verantwortlich für die Erfüllung der Nachbedingungen.

• Der Kunde verlässt sich darauf, dass der Lieferant die Nachbedingungen erfüllt.

• Beispiel:

Nachbedingung für Geld_einnehmen:

eingenommener_Betrag = OLD (eingenommener_Betrag) + Betrag

Page 14: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 14

Spezifikation durch Vertrag

Invarianten

• Nicht alle Zustände eines Moduls, die syntaktisch erlaubt sind, sind semantisch sinnvoll.

• Beispiel:

Kaffeeautomat.Preis = -100

Invariante: Preis >= 0

• Invarianten können während der Ausführung eines Dienstes kurzzeitig verletzt werden.

• Invarianten gelten vor und nach jedem Aufruf des Moduls.

Page 15: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 15

Spezifikation durch Vertrag

Kunden-Lieferanten-Modell mit Bedingungen

Kunde

Prüfung bzgl. angeforderten Dienst

Invarianten, Vorbedingungenggf. Ausführung

Invarianten, Nachbedingungen

Lieferant

Auftrag Rückmeldung

Page 16: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 16

Spezifikation durch Vertrag

Schnittstellenspezifikation mit Bedingungen

MODULE Kaffeeautomat

QUERIES

außer_Betrieb : BOOLEAN

eingenommener_Betrag : INTEGER

Preis : INTEGER

QUERIES FOR Betriebspersonal

gesammelter_Betrag : INTEGER

. . .

Page 17: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 17

Spezifikation durch Vertrag

Schnittstellenspezifikation mit Bedingungen

ACTIONS

Geld_einnehmen (IN Betrag : INTEGER)

PRE

NOT außer_Betrieb

Betrag >= 0

POST

eingenommener_Betrag = OLD (eingenommener_Betrag) + Betrag

. . .

Page 18: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 18

Spezifikation durch Vertrag

Schnittstellenspezifikation mit Bedingungen

Kaffee_ausgeben

PRE

NOT außer_Betrieb

eingenommener_Betrag >= Preis

POST

eingenommener_Betrag = OLD (eingenommener_Betrag) - Preis

gesammelter_Betrag = OLD (gesammelter_Betrag) + Preis

Geld_zurückgeben

PRE

NOT außer_Betrieb

POST

eingenommener_Betrag = 0

. . .

Page 19: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 19

Spezifikation durch Vertrag

Schnittstellenspezifikation mit Bedingungen

ACTIONS FOR Betriebspersonalinitialisieren (IN neuer_Preis : INTEGER)PREneuer_Preis >= 0POSTNOT außer_Betriebeingenommener_Betrag = 0Preis = neuer_Preisgesammelter_Betrag = 0

INVARIANTSeingenommener_Betrag >= 0Preis >= 0gesammelter_Betrag >= 0

END Kaffeeautomat

Page 20: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 20

Spezifikation durch Vertrag

Verhältnis statische und dynamische Semantik

• Typ INTEGER umfasst Werte: . . ., -2, -1, 0, 1, 2, . . .

• Typ NATURAL umfasst Werte: 0, 1, 2, . . .

• Die Grenze zwischen statischer und dynamischer Semantik ist unscharf.

Transformationen von Semantiken sind u.U. möglich.

• Welche Auswirkung hat die Einführung des Typs NATURAL auf die Schnittstellenspezifikation?

• Was bedeutet die Verwendung des Typs NATURAL für die dynamische Semantik?

Page 21: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 21

Spezifikation durch Vertrag

Auswirkungen des Typs NATURAL

MODULE Kaffeeautomat

QUERIES

außer_Betrieb : BOOLEAN

eingenommener_Betrag : NATURAL

Preis : NATURAL

QUERIES FOR Betriebspersonal

gesammelter_Betrag : NATURAL

. . .

Page 22: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 22

Spezifikation durch Vertrag

Auswirkungen des Typs NATURAL

ACTIONS

Geld_einnehmen (IN Betrag : NATURAL)

PRE

NOT außer_Betrieb

POST

eingenommener_Betrag = OLD (eingenommener_Betrag) + Betrag

. . .

Page 23: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 23

Spezifikation durch Vertrag

Auswirkungen des Typs NATURAL

ACTIONS Geld_einnehmen (IN Betrag : NATURAL)PRENOT außer_BetriebPOSTeingenommener_Betrag = OLD (eingenommener_Betrag) + Betrag

Kaffee_ausgebenPRENOT außer_Betriebeingenommener_Betrag >= PreisPOSTeingenommener_Betrag = OLD (eingenommener_Betrag) - Preisgesammelter_Betrag = OLD (gesammelter_Betrag) + Preis

Geld_zurückgebenPOST eingenommener_Betrag = 0

. . .

Page 24: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 24

Spezifikation durch Vertrag

Auswirkungen des Typs NATURAL

ACTIONS FOR Betriebspersonalinitialisieren (IN neuer_Preis: NATURAL)

PREneuer_Preis > 0

POSTNOT außer_Betriebeingenommener_Betrag = 0Preis = neuer_Preisgesammelter_Betrag = 0

INVARIANTSPreis > 0gesammelter_Betrag MOD Preis = 0

END Kaffeeautomat

Neue, nichttriviale Invariante

Page 25: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 25

Klassen und Exemplare

Kaffeeautomaten gleicher Bauart

• Unterscheidung: Beschreibung des Baumusters gegenüber der Beschreibung eines Exemplars

• Automaten gleicher Bauart gehören zu einer Klasse, der ein Baumuster (Blaupause, Schablone,... ) zugrunde liegt.

• Ein konkreter Automat ist ein Objekt einer Klasse baugleicher Automaten.

• Ersetzen des Schlüsselworts MODULE durch CLASS

Page 26: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 26

Klassen und Exemplare

Spezifikation einer Klasse

CLASS Kaffeeautomat

QUERIES

außer_Betrieb : BOOLEAN

eingenommener_Betrag : NATURAL

Preis : NATURAL

QUERIES FOR Betriebspersonal

gesammelter_Betrag : NATURAL

. . .

. . .

END Kaffeeautomat

Page 27: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 27

Klassen und Exemplare

Objekte und Module

• Erzeugen von Objekten durch Deklaration:

KA1, KA2 : Kaffeeautomat

• Aufruf von Objekten als Lieferanten:

KA1.Geld_einnehmen (120)

KA2.Kaffee_ausgeben

• Die Klasse legt alle möglichen Zustände und das Verhalten für jedes Objekt fest.

• Jedes Objekt nimmt zu einem Zeitpunkt einen eigenen Zustand ein.

• Ein Modul ist ein einzelnes Objekt, der keine Klasse zugrundeliegt.

Klasse

Objekt

istTypvon

istExemplar

von

Page 28: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 28

Klassen und Exemplare

Eine weitere Klasse

CLASS TasseQUERIES

leer : BOOLEANvoll : BOOLEAN

ACTIONS leeren

PRENOT leer

POSTNOT voll

füllenPRE

leerPOST

vollINVARIANTS

NOT (leer AND voll)END Tasse

Page 29: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 29

Klassen und Exemplare

Tassen

• Tasse kann teilweise gefüllt sein:teilvoll = (NOT leer AND NOT voll)

• Wie sieht auf Basis der Klassenspezifikation ein Zustandsdiagramm aus?

+ Zustände: leer, voll, teilvoll

+ In welchem Verhältnis stehen Vorzustände der Übergänge zu Vorbedingungen und Nachzustände zu Nachbedingungen?

+ Lässt sich Ihre Tasse “ex” leeren?

Page 30: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 30

Klassen und Exemplare

Ergänzung der Aktion Kaffee_ausgeben

Kaffee_ausgeben (INOUT Pott: Tasse)

PRENOT außer_Betriebeingenommener_Betrag >= PreisPott.leer

POSTeingenommener_Betrag = OLD (eingenommener_Betrag) -

Preisgesammelter_Betrag = OLD (gesammelter_Betrag) + PreisPott.voll

Page 31: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 31

Klassen und Exemplare

Kaffeeautomaten und Tassen - als Klassen

• Erzeugen einer Tasse als Objekt:mein_Kump : Tasse

• Tasse am Automat KA1 füllen:KA1.Kaffee_ausgeben (mein_Kump)

• Trinken:mein_Kump.leeren

• Benutztstruktur der Klassen: Kunde

Kaffeeautomat

benutztbenutzt

Tassebenutzt

Page 32: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 32

Abstraktion und Spezifikation

Ein Warenautomat

Warenautomat

...

Ware ausgebenPreis EUR

eingenommener

gesammelter

außer

initialisieren

Geld einnehmen

Geld zurückgeben

...

...

Betrag EUR

Betrieb

Betrag EUR

Geld-schlitz

Page 33: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 33

Generalisierung und Spezialisierung

Automaten

• Kaffeeautomaten, Fahrkartenautomaten sind spezielle Ausprägungen von Warenautomaten.

• Der Oberbegriff ist allgemeiner, abstrakter als seine Unterbegriffe.

• Ein Unterbegriff ist spezieller, konkreter als seine Oberbegriffe.

Oberbegriff

Unterbegriff

SpezialisierenGeneralisieren

abstrakt

konkret

Page 34: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 34

Kapselung

Trennung von Schnittstelle und Implementation

• Schnittstelle umfasst alle Informationen, die+ ein Kunde zur Auftragsvergabe an den Lieferanten wissen muss,+ der Lieferant für die Implementation benötigt.

• Der Kunde kann die Schnittstelle benutzen, ohne die dahinter verborgene Implementation zu kennen (information hiding).

• Die Implementation kann ohne Auswirkung auf den Kunden geändert werden.

Implementation

Schnittstelle

Page 35: 1 Module, Klassen, Verträge l Abstraktion und Spezifikation l Kunden-Lieferanten-Modell l Module und Schnittstellen l Spezifikation durch Vertrag l Klassen

Module, Klassen, Verträge 35

Kapselung

Schnittstelle und Implementation

Schnittstelle Implementation

Verhalten Struktur

WAS wird gemacht? WIE wird es gemacht?

Spezifikation Realisation

öffentlich privat

extern intern

zugreifbar verborgen