Module, Klassen, Verträge

Slides:



Advertisements
Ähnliche Präsentationen
Datenintegrität Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen Formulierung von Integritätsbedingungen.
Advertisements

Datenintegrität Integitätsbedingungen Schlüssel
Einführung in die Informatik: Programmierung und Software-Entwicklung
PL/SQL - Kurze Einführung -.
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Design by Contract with JML - Teil 2
Der Einstieg in das Programmieren
Klicke Dich mit der linken Maustaste durch das Übungsprogramm! Vereinfachung von Termen Ein Übungsprogramm der IGS - Hamm/Sieg © IGS-Hamm/Sieg 2006 Dietmar.
Java: Objektorientierte Programmierung
Grundkurs Theoretische Informatik, Folie 2.1 © 2006 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 2 Gottfried Vossen Kurt-Ulrich Witt.
Grundkurs Theoretische Informatik, Folie 3.1 © 2004 G. Vossen,K.-U. Witt Grundkurs Theoretische Informatik Kapitel 3 Gottfried Vossen Kurt-Ulrich Witt.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 3 Claudio Moraga, Gisbert Dittrich FBI Unido
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Differentieller Stromverstärker
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 6. Story Driven Modeling Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik SS2010 © 2010 Albert Zündorf, University of Kassel 1 Gesamtvorgehen 1. Textuelle Szenarios 2. Objektdiagramme 3. Klassendiagramm 4.
Inhalte und Maßnahmen eingegeben haben,
Ralf KüstersDagstuhl 2008/11/30 2 Ralf KüstersDagstuhl 2008/11/30 3.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Bild 1.1 Copyright © Alfred Mertins | Signaltheorie, 2. Auflage Vieweg+Teubner PLUS Zusatzmaterialien Vieweg+Teubner Verlag | Wiesbaden.
20:00.
Kollektionen in Java Aufzählungstypen, Generische Typen
1 Fachtagung am Seniorenorientiertes Design und Marketing ThyssenKrupp Immobilien Design for all - Anpassungen im Wohnungsbestand 1.Demographie.
ExpertAdmin ® ist eine eingetragene Marke der Inforis AG, Zürich. Das ExpertAdmin Bewertungssystem und die ExpertAdmin Software sind urheberrechtlich geschützt.
OOD – Object Oriented Design II
Bank Runs, Deposit Insurance, and Liquidity
Server.
Betriebliche Aufgaben effizient erfüllen
Eine Einführung in die CD-ROM
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
Freundschaft für mich und dich. Freundschaft für mich und dich.
Performer PRIMUS ® und PRIMUS 50plus ® Generationen -Versorgung.
WWW Konferenz 2008 Feedback der 17. WWW-Konferenz Beijing, April 2008.
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lektion 14: Mehrfachvererbung.
...ich seh´es kommen !.
Datenintegrität Integitätsbedingungen Schlüssel
1. Verhalten der Objekte: Operationen Werden in den Klassen definiert Werden (i.d.R.) auf einem Objekt aufgerufen Wird das Empfängerobjekt genannt Weitere.
Generalisierung/Spezialisierung Subtypisierung/Vererbung
Advanced Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Präsentation läuft auch vollautomatisch ab … wie du möchtest
Auslegung eines Vorschubantriebes
NEU! 1 2. Wo kommt diese Art von Rezeptor im Körper vor?
Algorithmen und Datenstrukturen Übungsmodul 6
© Bibliothek und Archiv der Österreichischen Akademie der Wissenschaften Katalogisierung in RAK / MAB2 Beispiele 1. Teil Lösungen Verbund für Bildung und.
Equals, Hashcode und CompareTo Micha Kessler
Analyse von Ablaufdiagrammen
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
PROCAM Score Alter (Jahre)
Managemententscheidungsunterstützungssysteme (Ausgewählte Methoden und Fallstudien) ( Die Thesen zur Vorlesung 3) Thema der Vorlesung Lösung der linearen.
PARTENARIAT ÉDUCATIF GRUNDTVIG PARTENARIAT ÉDUCATIF GRUNDTVIG REPERES KULTURELLER ZUSAMMENHALT UND AUSDEHNUNG DER IDEEN AUF EUROPÄISCHEM.
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Analyseprodukte numerischer Modelle
Neuerungen in Java 5/6/7. Stefan Bühler für InfoPoint Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen.
2014 Januar 2014 So Mo Di Mi Do Fr Sa So
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Vortrag von Rechtsanwältin Verena Nedden, Fachanwältin für Steuerrecht zur Veranstaltung Wege zum bedingungslosen Grundeinkommen der Piratenpartei Rhein-Hessen.
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Der Erotik Kalender 2005.
Familie Beutner, Konrad-Voelckerstrasse, Edenkoben/Pfalz, Tel:
Fragebogen Studierende
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Monatsbericht Ausgleichsenergiemarkt Gas – Oktober
 Präsentation transkript:

Module, Klassen, Verträge Vorlesung Informatik I WS 98/99 Module, Klassen, Verträge Abstraktion und Spezifikation Kunden-Lieferanten-Modell Module und Schnittstellen Spezifikation durch Vertrag Klassen und Objekte Generalisierung und Spezialisierung Kapselung Copyright: Prof. H. Ketz, FH Reutlingen

Abstraktion und Spezifikation Vorlesung Informatik I WS 98/99 Abstraktion und Spezifikation Ein Kaffeeautomat Kaffeeautomat eingenommener Geld- 0,30 Geld einnehmen Betrag EUR schlitz Preis EUR 0,60 Kaffee ausgeben außer Geld zurückgeben Betrieb gesammelter 31,20 initialisieren Betrag EUR Module, Klassen, Verträge Copyright: Prof. H. Ketz, FH Reutlingen

Abstraktion und Spezifikation Formales Zustands-Verhaltens-Modell Aktionen: e Geld_einnehmen r Geld_zurückgeben a Kaffee_ausgeben Zustände: n neutral g geladen mit Geld Reaktionen: G Geldrückgabe K Kaffeeausgabe 0 keine Reaktion (e, 0) (a, 0) g n (e, G) (a, K) (r, 0) (r, G) Module, Klassen, Verträge

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 Module, Klassen, Verträge

Kunden-Lieferanten-Modell Kunde (Client) benutzt bietet Schnittstelle = Dienste Lieferant (Supplier) Module, Klassen, Verträge

Kunden-Lieferanten-Modell Vorlesung Informatik I WS 98/99 Kunden-Lieferanten-Modell Aufrufender Aufruf Antwort Dienste sind - Abfragen - Aktionen Aufgerufener Module, Klassen, Verträge Copyright: Prof. H. Ketz, FH Reutlingen

Module und Schnittstellen 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). Module, Klassen, Verträge

Module und Schnittstellen Nutzung von Diensten durch Kunden Qualifizierung von Namen Modulname.Dienstname (aktuelle Parameter) Beispiele zur Nutzung: Kaffeeautomat.Preis Kaffeeautomat.Kaffee_ausgeben Kaffeeautomat.Geld_einnehmen (120) Kaffeeautomat.Kaffee_ausgeben (5 Tassen) IF Kaffeeautomat.außer_Betrieb THEN anderen Automaten suchen END Kaffeepreis := Kaffeeautomat.Preis Module, Klassen, Verträge

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 Module, Klassen, Verträge

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. Module, Klassen, Verträge

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 Module, Klassen, Verträge

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 Module, Klassen, Verträge

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 Module, Klassen, Verträge

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. Module, Klassen, Verträge

Spezifikation durch Vertrag Kunden-Lieferanten-Modell mit Bedingungen Kunde Auftrag Rückmeldung Prüfung bzgl. angeforderten Dienst Invarianten, Vorbedingungen ggf. Ausführung Invarianten, Nachbedingungen Lieferant Module, Klassen, Verträge

Spezifikation durch Vertrag Vorlesung Informatik I WS 98/99 Spezifikation durch Vertrag Schnittstellenspezifikation mit Bedingungen MODULE Kaffeeautomat QUERIES außer_Betrieb : BOOLEAN eingenommener_Betrag : INTEGER Preis : INTEGER QUERIES FOR Betriebspersonal gesammelter_Betrag : INTEGER . . . Module, Klassen, Verträge Copyright: Prof. H. Ketz, FH Reutlingen

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 . . . Module, Klassen, Verträge

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 eingenommener_Betrag = 0 . . . Module, Klassen, Verträge

Spezifikation durch Vertrag Schnittstellenspezifikation mit Bedingungen ACTIONS FOR Betriebspersonal initialisieren (IN neuer_Preis : INTEGER) PRE neuer_Preis >= 0 POST NOT außer_Betrieb eingenommener_Betrag = 0 Preis = neuer_Preis gesammelter_Betrag = 0 INVARIANTS eingenommener_Betrag >= 0 Preis >= 0 gesammelter_Betrag >= 0 END Kaffeeautomat Module, Klassen, Verträge

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? Module, Klassen, Verträge

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 . . . Module, Klassen, Verträge

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 . . . Module, Klassen, Verträge

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 Kaffee_ausgeben eingenommener_Betrag >= Preis eingenommener_Betrag = OLD (eingenommener_Betrag) - Preis gesammelter_Betrag = OLD (gesammelter_Betrag) + Preis Geld_zurückgeben eingenommener_Betrag = 0 . . . Module, Klassen, Verträge

Spezifikation durch Vertrag Auswirkungen des Typs NATURAL ACTIONS FOR Betriebspersonal initialisieren (IN neuer_Preis: NATURAL) PRE neuer_Preis > 0 POST NOT außer_Betrieb eingenommener_Betrag = 0 Preis = neuer_Preis gesammelter_Betrag = 0 INVARIANTS Preis > 0 gesammelter_Betrag MOD Preis = 0 END Kaffeeautomat Neue, nichttriviale Invariante Module, Klassen, Verträge

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 Module, Klassen, Verträge

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 Module, Klassen, Verträge

Klassen und Exemplare Objekte und Module Klasse Objekt 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 ist Exemplar von ist Typ von Objekt Module, Klassen, Verträge

Klassen und Exemplare Eine weitere Klasse CLASS Tasse QUERIES leer : BOOLEAN voll : BOOLEAN ACTIONS leeren PRE NOT leer POST NOT voll füllen leer voll INVARIANTS NOT (leer AND voll) END Tasse Module, Klassen, Verträge

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? Module, Klassen, Verträge

Klassen und Exemplare Ergänzung der Aktion Kaffee_ausgeben Kaffee_ausgeben (INOUT Pott: Tasse) PRE NOT außer_Betrieb eingenommener_Betrag >= Preis Pott.leer POST eingenommener_Betrag = OLD (eingenommener_Betrag) - Preis gesammelter_Betrag = OLD (gesammelter_Betrag) + Preis Pott.voll Module, Klassen, Verträge

Klassen und Exemplare Kaffeeautomaten und Tassen - als Klassen Kunde 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 benutzt benutzt Kaffeeautomat Tasse benutzt Module, Klassen, Verträge

Abstraktion und Spezifikation Ein Warenautomat Warenautomat eingenommener Geld- ... Geld einnehmen Betrag EUR schlitz Preis EUR ... Ware ausgeben außer Geld zurückgeben Betrieb gesammelter ... initialisieren Betrag EUR Module, Klassen, Verträge

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 abstrakt Generalisieren Spezialisieren Unterbegriff konkret Module, Klassen, Verträge

Kapselung Trennung von Schnittstelle und Implementation Schnittstelle 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. Schnittstelle Implementation Module, Klassen, Verträge

Kapselung Schnittstelle und Implementation Module, Klassen, Verträge