Client-Server Beziehungen



Ähnliche Dokumente
Ersetzbarkeit, Client-Server Beziehungen

Client-Server-Beziehungen

Das Ersetzbarkeitsprinzip

Tagesprogramm

Das Ersetzbarkeitsprinzip

Klassenbeziehungen & Vererbung

Client-Server-Beziehungen

Ersetzbarkeit und Verhalten

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung

OOP. Tagesprogramm. Zusicherungen Zusicherungen und Ersetzbarkeit

BEISPIELKLAUSUR Softwareentwicklung:

SEP 114. Design by Contract

Vererbung & Schnittstellen in C#

Ersetzbarkeit und Verhalten

Java Kurs für Anfänger Einheit 5 Methoden

Zusicherungen A01 OOP. Zusicherungen

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

OO Softwareentwicklung

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Objektorientierte Programmierung OOP

Prinzipien Objektorientierter Programmierung

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Gebundene Typparameter

Statuten in leichter Sprache

Grundlagen von Python

Einführung in die Programmierung

Computeranwendung und Programmierung (CuP)

Lizenzierung von SharePoint Server 2013

Einführung in die Programmierung

Lizenzierung von SharePoint Server 2013

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Design by Contract with JML

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten

Vorkurs C++ Programmierung

Programmieren in Java

Professionelle Seminare im Bereich MS-Office

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

Java: Vererbung. Teil 3: super()

Abschnitt 9: Schnittstellen: Interfaces

Objektorientierte Programmierung

Factory Method (Virtual Constructor)

Typumwandlungen bei Referenztypen

3 Objektorientierte Konzepte in Java

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

Testen mit JUnit. Motivation

Evident VDDS-Anbindung von MIZ

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Whitepaper. Produkt: combit Relationship Manager 7. combit Relationship Manager -rückläufer Script. combit GmbH Untere Laube Konstanz

MdtTax Programm. Programm Dokumentation. Datenbank Schnittstelle. Das Hauptmenü. Die Bedienung des Programms geht über das Hauptmenü.

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

Einführung in die Programmierung für NF

Binärbäume als weiteres Beispiel für abstrakte Datentypen in PVS mit in Knoten gespeicherten Werten vom Typ T:

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Sichere Anleitung Zertifikate / Schlüssel für Kunden der Sparkasse Germersheim-Kandel. Sichere . der

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Kapitel 6. Vererbung

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Modellierung und Programmierung 1

Use Cases. Use Cases

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Das Liskovsche Substitutionsprinzip

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Nutzung von GiS BasePac 8 im Netzwerk

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

GEZIELT MEHR SICHERHEIT MIT 4I ACCESS SERVER & 4I CONNECT CLIENT

Grundlagen der Programmierung (Vorlesung 14)

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Mathematischer Vorbereitungskurs für Ökonomen

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Software Engineering Klassendiagramme Assoziationen

Quickreferenz V1.1. Frank Naumann

Dokumentation zur Versendung der Statistik Daten

Unified Modeling Language (UML)

2. Psychologische Fragen. Nicht genannt.

Einstellen der Makrosicherheit in Microsoft Word

5. Abstrakte Klassen

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Lehrer: Einschreibemethoden

4. AuD Tafelübung T-C3

Kapitel 6. Vererbung

Zugriff auf die Modul-EEPROMs

Datentypen: Enum, Array, Struct, Union

Wärmebildkamera. Arbeitszeit: 15 Minuten

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

Wie Sie mit Mastern arbeiten

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Innere Klassen in Java

1 Mathematische Grundlagen

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

1 Vom Problem zum Programm

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

ecaros2 - Accountmanager

Objektorientiertes JavaScript

Transkript:

Ersetzbarkeit, Client-Server Beziehungen 182.132 VL Objektorientierte Programmierung Peter Puschner nach Folien von Franz Puntigam, TU Wien Überblick Ersetzbarkeit Kovarianz, Kontravarianz, Invarianz Client-Server Beziehungen Person Univ.Lehrer Student Verw.pers. ADT + Vererbung + Dynamisches Binden 2 1

Das Ersetzbarkeitsprinzip U ist Untertyp von T, wenn eine Instanz von U überall verwendbar ist, wo eine Instanz von T erwartet wird Dieses Ersetzbarkeitsprinzip benötigt man für den Aufruf einer Routine mit einem Argument, dessen Typ Untertyp typ des formalen Parametertyps a typs ist; die Zuweisung eines Objekts an eine Variable, wobei der Objekttyp Untertyp des deklarierten Variablentyps ist. 3 Untertypen und Schnittstellen Objekttyp U ist Untertyp von Objekttyp T wenn gilt für jede Konstante in T (vom Typ A) existiert eine Konstante in U (vom Typ B), wobei B Untertyp von A für jede Variable in T existiert eine Var. in U vom selben Typ für jede Methode in T existiert eine Methode in U, wobei Parameteranzahlen und Parameterarten (Eing./Ausg./Durchg.) g g gleich Eingangsparametertypen in T Untertypen der in U entsprechende Durchgangsparametertypen gleich Ausgangsparametertypen in U Untertypen der in T Ergebnistyp in U Untertyp von Ergebnistyp in T 4 2

Ergebnis- und Ausgangspar.-Typen In T: In U: TRet1 einemethode(tout1 par){...} TRet2 einemethode(tout2 par){...} T U Jeder in U nach außen gelieferte Typ (TRet1, TOut1) soll vom entsprechenden Typ in T (TRet2, TOut2) sein. Typen von Ergebnissen und Ausgangsparametern im Untertyp U müssen Untertypen der entsprechenden Typen in T sein (Kovarianz) 5 Eingangsparameter-Typen In T: In U: TRet1 einemethode(tin1 par){...} TRet2 einemethode(tin2 par){...} T U Jeder in T gelesene Wert vom Typ (TIn1) soll vom entsprechenden Typ in U (TIn2) sein. Typen von Eingangsparametern im Untertyp U müssen Obertypen der entsprechenden Typen in T sein (Kontravarianz) 6 3

Variablen und Durchgangspar.-Typen In T: In U: TRet1 einemethode(tinout1 par){...} TRet2 einemethode(tinout2 par){...} T U Ersetzbarkeit bei lesendem und schreibendem Zugriff benötigt. Typen von Variablen und Durchgangsparametern müssen in U und T gleich sein (Invarianz) 7 Ko-, Kontra- und Invarianz Kovarianz: Typ eines Elements im Untertyp ist Untertyp des Elementtyps im Obertyp Konstantentypen, Ergebnistypen, Ausgangsparametertypen Kontravarianz: Typ eines Elements im Untertyp ist Obertyp des Elementtyps im Obertyp Eingangsparametertypen Invarianz: Typ eines Elements im Untertyp ist gleich dem Elementtyp im Obertyp Variablentypen, Durchgangsparametertypen 8 4

Einschränkungen in der Praxis Theorie: vollständig und widerspruchsfrei, keine expliziten Untertypdeklarationen nötig Einschränkung in vielen praktisch verwendeten Sprachen: explizite Vererbungsbeziehung vorausgesetzt Vererbung entsprechend eingeschränkt Grund: einfach, keine zufälligen Untertypbeziehungen weitere Einschränkung in C++: Ergebnistypen kovariant, alle anderen Typen invariant 9 Untertypen Code-Wiederverwendung Software-Generationen und -Versionen Treiber1 Treiber2a Treiber2b Treiber2c Treiber3a Treiber3b Treiber3c Ersetzbarkeit Code-Wiederverwendung zw. Versionen Typen sollen unverändert bleiben, Erweiterungen möglich 10 5

Untertypen Code-Wiederverwendung Wiederverwendung innerhalb eines Programms Person Univ.Lehrer Student Verw.pers. Stud.Ass. Werksstud. Ersetzbarkeit Code-Wiederverwendung im Programm Lokalhalten von Code-Änderungen Typen sollen stabil sein vor allem weiter oben 11 Dynamisches Binden class Person { virtual void print() { // print Person } }; class Student : public Person { void Student :: print () { // print Student details } }; class UnivLehrer : public Person { void UnivLehrer :: print () { // print UnivLehrer details } }; Person *x = new Student (); Person *y = new UnivLehrer (); x->print(); y->print(); 12 6

Dynamisches Binden (2) Achtung: Default-Bindung ist in C++ statisch Keyword virtual fuer dynamisches Binden Zur Implementierung von rein virtuellen (=abstrakten) Methoden, die in allen Subklassen definiert werden müssen: virtual void print() = 0; 13 Ersetzbarkeit und Objektverhalten bisher genannte Bedingungen von Typ- Untertypbeziehungen sind statisch können vom Compiler überprüft werden weitere Bedingungen für Ersetzbarkeit betreffen das Objektverhalten ist nicht vom Compiler überprüfbar 14 7

Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Dienst entspricht der Ausführung einer Methode Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server erfüllt Nachbedingungen eines Dienstes Server sichert Invarianten des Objekts zu Vor-, Nachbedingungen, Invarianten sind Zusicherungen 15 Vorbedingung (Precondition) Verantwortlich: Client Wann: vor Methodenaufruf Was: hauptsächlich Eigenschaften von Argumenten Beispiel: Argument ist Array aufsteigend sortierter Zahlen manchmal auch Bezug auf (sichtbaren) Zustand des Servers Beispiel: abheben nicht aufrufen, wenn Konto überzogen 16 8

Nachbedingung (Postcondition) Verantwortlich: Server Wann: vor Rückkehr aus Methodenaufruf Was: Eigenschaften von Methodenergebnissen sowie Änderungen und Eigenschaften des Objektzustands Beispiel: Methode fügt Element (falls noch nicht vorhanden) in Menge ein. Das Ergebnis ist true, falls das Element bereits vorher in Menge war. Nachbedingung klingt oft wie Methodenbeschreibung 17 Invariante Verantwortlich: tli Server Wann: vor und nach Ausführung von Methoden Was: unveränderliche Eigenschaften von Objekten Beispiel: Guthaben am Sparbuch ist immer positive Zahl Gültigkeit der Invariante kann von Bedingungen abhängen Beispiel: zuverlässig == false wenn Konto überzogen Invarianten implizieren Nachbedingungen Ausnahme: Schreiben externer Variablen 18 9

Typen und Zusicherungen Zusicherungen gehören zu Typen Objekttyp besteht aus Name von Klasse Schnittstelle (= Signatur) Zusicherungen auf Methoden Formulierung der Zusicherungen als Kommentare Überprüfung der Zusicherungen bei Verwendung v. Typen Änderungen von Zusicherungen, Typänderungen Auswirkungen auf andere Programmteile 19 Genauigkeit von Zusicherungen Clients dürfen sich nur auf das verlassen, was in Schnittstellen und Zusicherungen vom Server zugesagt wird. Server dürfen sich nur auf das verlassen, was in Schnittstellen und Zusicherungen vom Client zugesagt wird. Genauigkeit durch ProgrammiererInnen bestimmbar: genau große Abhängigkeit zw. Client und Server Zus. sind bei Codeänderung eher zu ändern 20 10

Genauigkeit von Zusicherungen Tipp: nur wirklich notwendige Zusicherungen beschreiben Tipp: keine versteckten Zusicherungen Tipp für den Einsatz von Zusicherungen: Klassenzusammenhalt maximieren + Objektkopplung minimieren Beispiel: Methode abheben von Konto Vorbedingung darf Konto nicht überziehen weglassen dafür: explizietes Überprüfen der Bedingung in der Methode abheben des Server-Objekts 21 Ersetzbarkeit und Verhalten U ist nur dann Untertyp von T wenn gilt: Vorbedingungen in T implizieren Vorbedingungen in U Vorbedingungen in Untertypen sind schwächer bei Vererbung: Verknüpfung mit ODER Nachbedingungen in U implizieren Nachbedingungen in T Nachbedingungen in Untertypen sind stärker bei Vererbung: Verknüpfung mit UND Invarianten in U implizieren Invarianten in T Invarianten in Untertypen sind stärker bei Vererbung: Verknüpfung mit UND gilt nicht für externes Schreiben von Variablen 22 11

Faustregeln zu Zusicherungen Zusicherungen sollen stabil sein (vor allem an Wurzel der Typhierarchie) keine unnötigen Details festlegen explizit im Programm stehen unmissverständlich formuliert sein während Programmentwicklung ständig überprüft werden ggf. zusätzlich Realisierung durch Macros 23 Abstrakte Klassen Dienen der Festlegung eines Typs Keine Instanzen der Klasse nur Instanzen in Unterklassen abstrakte Klassen generell eher stabil Verwendung als Parametertypen sollen stabil sein d.h., sie sollen nicht mehr ausdrücken, als nötig (keine unnötigen Abhängigkeiten) it abstrakte Klassen leicht hinzuzufügen (z.b. verwendbar als Parametertypen für jeden Bedarf) 24 12

Zusammenfassung Unterstützung von Polymorphimus und dynamischer Bindung Ersetzbarkeitsprinzip (Typ-/Subtypbeziehungen) Zusicherungen Zusicherungen und Ersetzbarkeit Ausblick: Klassenbeziehungen und Vererbung 25 13