Th. Letschert OOP 2 6. Klassenentwurf II

Größe: px
Ab Seite anzeigen:

Download "Th. Letschert OOP 2 6. Klassenentwurf II"

Transkript

1 Th. Letschert OOP 2 6. Klassenentwurf II Th Letschert FH Gießen-Friedberg

2 Th. Letschert OOP 2 Klassenentwurf II - Substitutionsprinzip Seite 2

3 Th. Letschert OOP 2 Liskovs Substitutionsprinzip A: syntaktische / statisch-semantische Substituierbarkeit Seite 3

4 Substitutionsprinzip Substitutionsprinzip (Liskov'sches Substitutionsprinzip) Werte des Subtyps dürfen überall dort verwendet werden, wo Werte des Typs erlaubt sind. Barbara Liskov T' < T => T'-Werte vertreten T-Werte Kompatiblität von Typ und Subtyp Zuweisung von Subtyp-Werten an Typ-Variablen Parameterübergabe von Subtyp-Argumenten an Typ-Parameter Ergebnisrückgabe von Subtyp-Werten aus Typ- Funktionen Subtyprelation in Java Widening bei Klassentypen: Subklasse ~> Klasse Widening bei primitiven Typen: primitiver Typ ~> weiterer primitiver Typ Seite 4

5 Subtypen / Wozu Subtypen machen Code flexibel Code der mit dem Basistyp arbeitet, kommt mit allen Subtypen klar, auch mit denen, die noch gar nicht existieren! Katze Stockente Tier for ( Tier t : tierstapel ) { t.streicheln(); fuettern(t); } Schleimiger Alien Sie landen erst auf der Erde. Unser Code wird auch sie bearbeiten! Seite 5

6 Subtypen und Vererbung Substitutionsprinzip und Vererbung Erweiterung einer Klasse zur Subklasse Die Fähigkeiten / Attribute entsprechend des Typs werden in den Subtyp übernommen Weitere Fähigkeiten / Attribute kommen hinzu Substitutionsprinzip ist erfüllt Polymorphe Redefinitionen in der Subklasse Fähigkeit des Typs wird im Subtyp modifiziert Regeln der Redefinition müssen die Gültigkeit des Substitutionsprinzip erzwingen Substitutionsprinzip: Subtyp-Werte dürfen immer Typ-Werte verteten. Ebenen der Gültigkeit des Substitutionsprinzips Syntaktisch / statisch semantisch: Keine Typfehler durch polymorphe Redefinition Semantisch Keine (inhaltlichen) Programmfehler durch Substitution Erweiterung: Substitutionsprinzip gilt trivialerweise Redefinition: Substitutionsprinzip gilt nicht automatisch Seite 6

7 Substitutionsprinzip und polymorphe Redefinition Unter welchen Bedingungen gilt das Substitutionsprinzip bei polymorphen Redefinitionen? Ist Java streng genug: Sind die Regeln von Java scharf genug, um seine Gültigkeit zu garantieren? Ist Java zu streng: Gibt es (im Prinzip) gültige Redefinitionen, die von Java ausgeschlossen werden? Seite 7

8 Substitutionsprinzip und polymorphe Redefinition Java Redefinitionsregel 1: Die Parameter der neuen Methode müssen in Typ und Zahl mit denen der ersetzten Methode übereinstimmen. Regel hinreichend? (oder nicht streng genug) Regel notwendig? (oder zu streng) Seite 8

9 Substitutionsprinzip und polymorphe Redefinition Java Redefinitionsregel 1: Die Parameter der neuen Methode müssen in Typ und Zahl mit denen der ersetzten Methode übereinstimmen. Regel hinreichend! aber zu streng: Redefinitionsregel 1: Kontravariante Modifikationen im Parametertyp sind kompatibel mit dem Substitutionsprinzip. Seite 9

10 Substitutionsprinzip und polymorphe Redefinition Redefinitionsregel 1 (Kontravarianz in den Parametern): Kontravariante Modifikationen im Parametertyp sind kompatibel mit dem Substitutionsprinzip. Fleisch Hund name: String frisst(chappi) Beim Fressen kann ein Wildhund einen Hund vertreten! Java: Entwurf OK, wird aber von Java so nicht umgesetzt. Chappi WildHund name: String frisst(fleisch) UML: UML ist nicht so exakt definiert, dass das Diagramm eindeutig interpretiert werden kann. (Nimm es als gemaltes Java!) Chappi Kontext bietet Chappi Hunde aller Art leben gut in diesem Kontext Seite 10 Substitutionsprinzip: Wildhund kommt mit Chappi als Parameter seiner frisst-methode klar

11 Substitutionsprinzip und polymorphe Redefinition Java Redefinitionsregel 2: Der Ergebnistyp der neuen Methode muss gleich dem Ergebnistyp der ersetzten Methode sein oder diesen kovariant verändern Regel hinreichend? (oder nicht streng genug) Regel notwendig? (oder zu streng) Seite 11

12 Substitutionsprinzip und polymorphe Redefinition Java Redefinitionsregel 2: Der Ergebnistyp der neuen Methode muss gleich dem Ergebnistyp der ersetzten Methode sein oder diesen kovariant verändern Regel notwendig und hinreichend Redefinitionsregel 2: Kovariante Modifikationen im Ergebnistyp sind kompatibel mit dem Substitutionsprinzip. Seite 12

13 Substitutionsprinzip und polymorphe Redefinition Redefinitionsregel 2 (Kovarianz im Ergebnis): Kontravariante Modifikationen im Parametertyp sind kompatibel mit dem Substitutionsprinzip. Bauer produziert(): Futter BergBauer Futter Gras Bei der Produktion kann ein Bergbauer einen Bauer vertreten! Java: Entwurf OK, und wird so umgesetzt. UML: OK produziert (): Gras Bauer Futter OK Gras OK Kontext erwartet Futter BergBauer Seite 13

14 Substitutionsprinzip / Syntaktisch Regel über die Signatur der substituierten (redefinierten) Methoden: 1. Kontravarianz in den Parametertypen 2. Kovarianz im Ergebnistyp Signatur einer Methode: Name + Zahl/Typen der Parameter + Typ des Ergebnisses Syntaktische / statisch-semantische Regel Seite 14

15 Substitutionsprinzip und polymorphe Redefinition Beispiel Katze frisst(maus) KleinTier WildKatze frisst(kleintier) Maus Genaue Bedeutung: was genau sagt das Diagramm aus Konzeptionell OK: handelt es sich um einen korrekten OO-Entwurf, wird also insbesondere das Substitutionsprinzip respektiert? In Java (Falls OK): Wie wird der Entwurf, falls OK, in Java umgesetzt, ist insbesondere eine direkte Umsetzung in das Java.Typsystem möglich, oder muss auf Laufzeit-Prüfungen ausgeichen werden? Seite 15

16 Substitutionsprinzip und polymorphe Redefinition Beispiel Katze fängt():maus KleinTier WildKatze fängt():kleintier Maus Genaue Bedeutung? Konzeptuell OK? In Java (Falls OK)? Seite 16

17 Substitutionsprinzip und polymorphe Redefinition Beispiel Arzt behandelt(patient) HNOArzt behandelt(halspatient) AugenArzt behandelt(augenpatient) Assoziationen? Genaue Bedeutung? Konzeptuell OK? In Java (Falls OK)? Patient HalsPatient AugenPatient Seite 17

18 Th. Letschert OOP 2 Liskovs Substitutionsprinzip B: Semantische Substituierbarkeit Seite 18

19 Substitutionsprinzip / Semantisch Regel über die Spezifikation der substituierten (redefinierten) Methoden: 1. Keine Verschärfung der Vorbedingung 2. Keine Abschwächung der Nachbedingung Semantische Regel Kovarianz und Kontravarianz auf semantischer Ebene Spezifikation einer Methode Vorbedingung Beschreibung der Voraussetzung der Methode: Bedingung unter denen eine Methode ihr korrektes Verhalten garantiert. Nachbedingung Beschreibung der Wirkung der Methode: Bedingung, die nach ihrer Ausführung gilt. Seite 19

20 Substitutionsprinzip / Semantisch: Beispiel Beispiel / Vorbedingung Ein Stack ist ein Speicher mit LIFO-Verhalten Stack Ein BoundedStack ist ein Stack mit begrenztem Fassungsvermögen push(int) pop():int BoundedStack push(int) pop():int Seite 20

21 Substitutionsprinzip / Semantisch: Beispiel Beispiel / Vorbedingung Ein Stack ist ein Speicher mit LIFO-Verhalten Stack push(int x) pop():int Ein BoundedStack ist ein Stack mit begrenztem Fassungsvermögen pre: - post: x liegt auf dem Stapel BoundedStack push(int x) pop():int pre: darf nicht voll sein post: x liegt auf dem Stapel Seite 21

22 Substitutionsprinzip / Semantisch: Beispiel Beispiel / Vorbedingung Ein Stack ist ein Speicher mit LIFO-Verhalten Stack Ein BoundedStack ist ein Stack mit begrenztem Fassungsvermögen push(int x) pop():int BoundedStack push(int x) pop():int pre: - post: x liegt auf dem Stapel pre: darf nicht voll sein post: x liegt auf dem Stapel Entwurfsfehler: Verstoß gegen das Substitutionsprinzip ein BoundedStack kann nicht als Vertreter eines Stacks agieren! Seite 22

23 Substitutionsprinzip / Semantisch: Beispiel Beispiel / Nachbedingung Sparvertrag auszahlen():geld pre: monatlich eingezahlt post: returns kontostand % Zinsen DagobertSparen auszahlen():geld pre: wöchentlich eingezahlt post: returns kontostand % Zinsen Ein Sparvertrag wird bei monaticher Einzahlung mit 2,5% ausgezahlt DagobertSparen, ein Sparvertrag bei der Dagobert-Bank, ist ein spezieller Sparvertrag, der nur 0,5% Zinsen bietet. Seite 23

24 Substitutionsprinzip / Semantisch: Beispiel Beispiel / Nachbedingung Sparvertrag auszahlen():geld DagobertSparen auszahlen():geld pre: monatlich eingezahlt post: returns kontostand % Zinsen pre: wöchentlich eingezahlt post: returns kontostand % Zinsen Entwurfsfehler: Verstoß gegen das Substitutionsprinzip Niemand wird ein DagobertSparen als Vertreter eines Sparvertrags akzeptieren! Ein Sparvertrag wird bei monaticher Einzahlung mit 2,5% ausgezahlt DagobertSparen, ein Sparvertrag bei der Dagobert-Bank, ist ein spezieller Sparvertrag, der nur 0,5% Zinsen bietet. Seite 24

25 Substitutionsprinzip / Semantisch: Beispiel Beispiel Sparvertrag auszahlen():geld pre: monatlich eingezahlt post: returns kontostand % Zinsen SparvertragS pre: jährlich eingezahlt post: returns kontostand + 5 % Zinsen auszahlen():geld OK? Seite 25

26 Substitutionsprinzip / Semantisch Übertragung des Substitutionsprinzips auf Spezifikationen Vorbedingung Die Vorbedingung einer redefinierten Methode muss gleich oder oder schwächer sein. Nachbedingung Die Nachbedingung einer redefinierten Methode muss gleich oder stärker sein. Semantische Regel Der Ersatz darf von seinem Verwender nicht mehr verlangen! Der Ersatz darf für seinen Verwender nicht weniger leisten! Sparvertrag auszahlen():geld SparvertragS pre: monatlich eingezahlt post: returns kontostand % Zinsen pre: jährlich eingezahlt post: returns kontostand + 5 % Zinsen Substitutionsprinzip: Subtypen haben schwächere Vorbedingungen und schärfere Nachbedingungen auszahlen():geld OK: Ableitung schwächt Forderung ab und erhöht Leistung. Seite 26

27 Substitutionsprinzip / Beispiel Beispiel Ein Rechteck hat eine Breite und eine Höhe, man kann es zeichnen, man kann Breite und Höhe ändern Ein Quadrat ist eine besondere Art von Rechteck: Breite und Höhe sind immer gleich Rechteck breite: int hoehe: int setbreite(int):void sethoehe(int):void zeichne():void inv: breite = hoehe Menge aller Quadrate Menge aller Rechtecke mengentheortische Sicht der Vererbung / Subtyp- Eigenschaft OK? Quadrat Invariante: Bedingung an den Zustand der Objekte der Klasse. Seite 27

28 Substitutionsprinzip / Beispiel Beispiel Ein Rechteck hat eine Breite und eine Höhe, man kann es zeichnen, man kann Breite und Höhe ändern Ein Quadrat ist eine besondere Art von Rechteck: Breite und Höhe sind immer gleich Menge aller Quadrate Menge aller Rechtecke stimmt nicht diese Quadrate sind keine Rechtecke Rechteck breite: int hoehe: int setbreite(int):void sethoehe(int):void zeichne():void Quadrat inv: breite = hoehe mengentheortische Sicht der Vererbung / Subtyp-Eigenschaft Verstoß gegen das Substitutuionsprinzip: Invariante kann verletzt werden. sethoehe / setbreite bei Quadrat? Die Quadrate können nicht überall an die Stelle von Rechtecken treten. Seite 28

29 Substitutionsprinzip / Beispiel Beispiel Ein Rechteck hat eine Breite und eine Höhe, man kann es zeichnen, Ein Quadrat ist eine besondere Art von Rechteck: Breite und Höhe sind immer gleich Rechteck breite: int hoehe: int zeichne():void Menge aller Quadrate Menge aller Rechtecke mengentheortische Sicht der Vererbung / Subtyp- Eigenschaft inv: breite = hoehe Quadrat OK? Seite 29

30 Substitutionsprinzip / Beispiel Beispiel Ein Rechteck hat eine Breite und eine Höhe, man kann es zeichnen, Ein Quadrat ist eine besondere Art von Rechteck: Breite und Höhe sind immer gleich OK: Objekte werden als Werte (unveränderlich) betrachtet ~ mathematische Sicht auf Quadrate und Rechtecke Menge aller Quadrate Menge aller Rechtecke Rechteck breite: int hoehe: int zeichne():void Quadrat inv: breite = hoehe OK! mengentheortische Sicht der Vererbung / Subtyp- Eigenschaft Substitutionsprinzip nicht verletzt: Invariante der Ableitung kann kann bei Gebrauch als Basis-Objekt nicht verletzt werden. Wertartige Objekte und Objekte mit Zustand sind im Entwurf zu unterscheiden! Seite 30

31 Substitutionsprinzip / Beispiel Beispiel Rechteck breite: int hoehe: int setsize(x:int,y: int):void zeichne():void pre: x>=0, y>=0 OK? Quadrat setsize(x:int,y: int):void pre: x>=0, y>=0, x=y Ein Quadrat ist eine Art von Rechteck: Eins bei dem man die Grösse in x- und in y- Richtung immer gleich setzt. Seite 31

32 Substitutionsprinzip / Beispiel Beispiel Verstoß gegen das Substitutionsprinzip: Verschärfung der Vorbedingung nicht erlaubt! Rechteck breite: int hoehe: int setsize(x:int,y: int):void zeichne():void pre: x>=0, y>=0 Quadrat setsize(x:int,y: int):void pre: x>=0, y>=0, x=y Ein Quadrat ist eine Art von Rechteck: Eins bei dem man die Grösse in x- und in y- Richtung immer gleich setzt. Seite 32

33 Substitutionsprinzip / Beispiel Beispiel Rechteck breite: int hoehe: int setsize(x:int,y: int):void zeichne():void pre: x>=0, y>=0 OK? Quadrat pre: x>=0, y>=0 throws BadSize if not x=y setsize(x:int,y: int):void Na gut, dann Exception statt Vorbedingung. Seite 33

34 Substitutionsprinzip / Beispiel Beispiel Rechteck breite: int hoehe: int setsize(x:int,y: int):void zeichne():void pre: x>=0, y>=0 Exceptions dürfen nicht hinzugefügt werden! Quadrat pre: x>=0, y>=0 throws BadSize if not x=y setsize(x:int,y: int):void Seite 34

35 Substitutionsprinzip / Beispiel Beispiel Rechteck breite: int hoehe: int setsize(x:int,y: int):void zeichne():void Rechteck breite: int hoehe: int setsize(x:int,y: int):void throw BadSize zeichne():void Quadrat setsize(x:int,y: int):void throw BadSize Quadrat setsize(x:int,y: int):void throw BadSize nicht OK OK Seite 35

36 Substitutionsprinzip / Semantisch Regel über die Spezifikation der substituierten (redefinierten) Methoden: 1. Keine Verschärfung der Vorbedingung 2. Keine Abschwächung der Nachbedingung 3. Keine Verletzung der Invariante 4. Keine zusätzlichen Exceptions Spezifikation einer Methode Vorbedingung Beschreibung der Voraussetzung der Methode: Bedingung unter denen eine Methode ihr korrektes Verhalten garantiert. Nachbedingung Beschreibung der Wirkung der Methode: Bedingung, die nach ihrer Ausführung gilt. Invariante Beschreibung der Bedingung die an den Zustand der Objekte gestellt wird: Bedingung, die nach vor/nach jeder Ausführung einer Methode gilt. Seite 36

37 Substitutionsprinzip und polymorphe Redefinition Beispiel Arzt fach: Fach behandelt(patient) pre:... post: Patient gesund HNOArzt behandelt(halspatient) AugenArzt behandelt(augenpatient) Vorbedingung? Invarianten? Klassen-Assoziationen Genaue Bedeutung? Konzeptuell OK? In Java (Falls OK)? Patient krankheit: Krankheit inv:... inv:... HalsPatient AugenPatient Seite 37

38 Substitutionsprinzip und polymorphe Redefinition Beispiel Arzt fach: Fach behandelt(patient) * Krankenhaus aufnehmen(patient) HNOArzt behandelt(halspatient) AugenArzt behandelt(augenpatient) Ein Krankenhaus nimmt einen Patienten auf und lässt ihn durch einen seiner Ärzte mit der richtigen Fachrichtung behandeln. In Java?! Patient krankheit: Krankheit HalsPatient AugenPatient Seite 38

39 Substitutionsprinzip und polymorphe Redefinition Beispiel Arzt behandelt(patient) * Krankenhaus aufnehmen(patient) HNOArzt behandelt(halspatient) AugenArzt behandelt(augenpatient) Patient heilen() Ein Krankenhaus nimmt einen Patienten auf und lässt ihn durch einen seiner Ärzte mit der richtigen Fachrichtung behandeln. Unterschied zum Beispiel vorher? Vorbedingungen / Invarianten? In Java?! HalsPatient heilen() AugenPatient heilen() Seite 39

40 Substitutionsprinzip und polymorphe Redefinition Beispiel Arzt behandelt(patient) throws InkompetentEx * Krankenhaus aufnehmen(patient) HNOArzt behandelt(halspatient) throws InkompetentEx Patient heilen() AugenArzt behandelt(augenpatient) throws InkompetentEx Ein Krankenhaus nimmt einen Patienten auf und lässt ihn durch einen seiner Ärzte mit der richtigen Fachrichtung behandeln. Unterschied zum Beispiel vorher? Vorbedingungen / Invarianten? In Java?! HalsPatient heilen() AugenPatient heilen() Seite 40

41 Substitutionsprinzip und polymorphe Redefinition Beispiel Arzt behandelt(patient) throws InkompetentEx * Krankenhaus aufnehmen(patient) HNOArzt behandelt(halspatient) throws InkompetentEx HalsPatient heilen() Patient heilen() AugenArzt behandelt(augenpatient) throws InkompetentEx AugenPatient heilen() Bitte erweitern um: Ein Krankenhaus nimmt Patienten auf - und lässt sie durch durch seinen Aufnahmearzt untersuchen, - der heilt sie selbst wenn es sich um SchnupfenPatient handelt, sonst verweist er sie an einen der Fachärzte, der dann die Behandlung übernimmt. - Der Aufnahmearzt ist ein Arzt der Fachrichtung AllgemeinMedizin. UML-Modell? Klassen / abstr. Klassen / Schnittstellen Assoziationen? Vor-/Nachbedingungen? Invarianten? In Java? Seite 41

42 Liskov'sches Substitutionsprinzip / Zusammenfassung Substitutionsprinzip: Syntaktisch / statisch semantisch 1. Kontravarianz in den Parametertypen 2. Kovarianz im Ergebnistyp Semantisch 1. Keine Verschärfung der Vorbedingung 2. Keine Abschwächung der Nachbedingung 3. Keine Verletzung der Invariante 4. Keine zusätzlichen Exceptions Einsatz: Richtlinie zum Klassenentwurf Seite 42

Sind Kühe Tiere? oder Was lehrt uns die Objektorientierung? Prof. Dr. Th. Letschert

Sind Kühe Tiere? oder Was lehrt uns die Objektorientierung? Prof. Dr. Th. Letschert oder Was lehrt uns die Objektorientierung? Prof. Dr. Th. Letschert Kühe Was sind Kühe? 2 Kühe Zwei Kühe 3 Kühe in der Informatik / UML Kuh Kuh Horn: hornlinks Horn: hornrechts Konzept, Typ, Klasse Beschreibt

Mehr

3. Vererbung II : Polymorphismus

3. Vererbung II : Polymorphismus Th. Letschert OOP 2 3. Vererbung II : Polymorphismus Th Letschert FH Gießen-Friedberg Th. Letschert OOP 2 Ableitung: Übernehmen Überdecken Überladen Redefinieren Seite 2 Th. Letschert OOP 2 Übernehmen,

Mehr

Das Liskovsche Substitutionsprinzip

Das Liskovsche Substitutionsprinzip Kapitel 7 Das Liskovsche Substitutionsprinzip Am Ende dieses Kapitels werden Sie in der Lage sein, die folgenden Aufgaben durchzuführen: Beschreiben der Bedeutung des Liskovschen Substitutionsprinzips

Mehr

A(T1) A(T2) A(T1) A(T2)

A(T1) A(T2) A(T1) A(T2) Kovarianz und Kontravarianz in Java Abstract In diesem Artikel werden die Java-Regeln für Kovarianz und Kontravarianz zusammengefasst. Hierzu wird Typkompatibilität definiert und die Fälle untersucht,

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen

Mehr

Invarianten und sichere Vererbung

Invarianten und sichere Vererbung Kapitel 7 Invarianten und sichere Vererbung Idee der Vererbung: class U extends O... bedeutet: Jedes U ist auch als O verwendbar, denn es hat mindestens dieselben Members im O-Subobjekt (Typkonformanz,

Mehr

Ersetzbarkeit und Verhalten

Ersetzbarkeit und Verhalten Ersetzbarkeit und Verhalten U ist Untertyp von T, wenn eine Instanz von U überall verwendbar ist, wo eine Instanz von T erwartet wird Struktur der Typen für Ersetzbarkeit nicht ausreichend Beispiel: void

Mehr

2.4.3 Polymorphie (Wiederholung von Alp2)

2.4.3 Polymorphie (Wiederholung von Alp2) 2.4.3 Polymorphie (Wiederholung von Alp2) Sparbuch einsparbuch = new Sparbuch(3.0); Konto einkonto; KontoDrucker = new KontoDrucker(); KontoDrucker.setzeKonto(einSparbuch); einkonto = einsparbuch; Wie

Mehr

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Th Letschert UML Seite 1 Th Letschert UML - Klassen- / Paket- / Sequenzdiagramm - UML / OCL in Spezifikation und Implementierung

Mehr

Algorithmen und Programmierung II

Algorithmen und Programmierung II Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung

Mehr

AuD-Tafelübung T-B5b

AuD-Tafelübung T-B5b 6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit

Mehr

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4

TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA GRUNDLAGEN DER PROGRAMMIERUNG... 4 Inhaltsverzeichnis TEIL I: OBJEKTORIENTIERUNG UND GRUNDKURS JAVA... 1 1 GRUNDLAGEN DER PROGRAMMIERUNG... 4 1.1 Das erste Java-Programm... 4 1.2 Programme und ihre Abläufe... 6 1.3 Entwurf mit Nassi-Shneiderman-Diagrammen...

Mehr

Vererbung. Martin Wirsing. Ziele. Vererbung

Vererbung. Martin Wirsing. Ziele. Vererbung 2 Ziele Martin Wirsing en Begriff der einfachen verstehen und Redefinition von Oberklassenmethoden verstehen spolymorphie verstehen ie Klasse Object kennenlernen in Zusammenarbeit mit Michael Barth, Philipp

Mehr

Software Engineering Klassendiagramme Einführung

Software Engineering Klassendiagramme Einführung Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen 1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen II.2.2 Methoden, Unterprogramme und Parameter - 1 - 2. Methoden

Mehr

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

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure 7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG

Mehr

Welche Informatik-Kenntnisse bringen Sie mit?

Welche Informatik-Kenntnisse bringen Sie mit? Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt

Mehr

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich

Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich WS 02/03 Warum muss ein Objekt wissen, zu welcher Klasse es gehört? Damit die Klassenzugehörigkeit

Mehr

Ersetzbarkeit, Client-Server Beziehungen

Ersetzbarkeit, Client-Server Beziehungen Ersetzbarkeit, Client-Server Beziehungen 182.132 VL Objektorientierte Programmierung Raimund Kirner Mitwirkung an Folienerstellung: Peter Puschner, basieren auf den Folien von Franz Puntigam, TU Wien Überblick

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

Java Vererbung. Inhalt

Java Vererbung. Inhalt Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter

Mehr

Beispiel für überladene Methode

Beispiel für überladene Methode Beispiel für überladene Methode class Gras extends Futter {... abstract class Tier { public abstract void friss (Futter x); class Rind extends Tier { public void friss (Gras x) {... public void friss (Futter

Mehr

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen 7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Client-Server Beziehungen

Client-Server Beziehungen 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

Mehr

Theorie zu Übung 8 Implementierung in Java

Theorie zu Übung 8 Implementierung in Java Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Theorie zu Übung 8 Implementierung in Java Klasse in Java Die Klasse wird durch das class-konzept

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

Werkzeuge zur Programmentwicklung

Werkzeuge zur Programmentwicklung Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul

Mehr

Informatik II Musterlösung

Informatik II Musterlösung Ludwig-Maximilians-Universität München SS 2006 Institut für Informatik Übungsblatt 4 Prof. Dr. M. Wirsing, M. Hammer, A. Rauschmayer Informatik II Musterlösung Zu jeder Aufgabe ist eine Datei abzugeben,

Mehr

Klassenbeziehungen & Vererbung

Klassenbeziehungen & Vererbung Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in

Mehr

Spezifikation und Test: Zusicherungen in Klassendiagrammen

Spezifikation und Test: Zusicherungen in Klassendiagrammen Spezifikation und Test: Zusicherungen in Klassendiagrammen Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 2 Ziele OCL, die Object Constraint Language, kennen lernen Lernen

Mehr

1 Organisatorisches. 2 Compilezeit- und Laufzeitfehler. 3 Exceptions. 4 Try-Catch-Finally

1 Organisatorisches. 2 Compilezeit- und Laufzeitfehler. 3 Exceptions. 4 Try-Catch-Finally Themen der Übung CoMa-Übung VI 1 Organisatorisches Compilezeit- und Laufzeitfehler 3 Try-Catch-Finally TU Berlin 8.11.01 Bewertung der OA 5 fehlerhaft, Madeleine arbeitet dran CoMa-Übung VI (TU Berlin)

Mehr

Klassen mit Instanzmethoden

Klassen mit Instanzmethoden Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 3.12.07 G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen 3.12.07

Mehr

Design by Contract with JML

Design by Contract with JML Thema: Design by Contract with JML Proseminar: Assertions Verfasser: Literatur: Betreuer: Natalya Moriz Gary T.Leavens and Yoonsik Cheon: Design by Contract with JML Prof. Dr. Heike Wehrheim 1 Inhalt DBC

Mehr

Beziehungen zwischen Objekten

Beziehungen zwischen Objekten 1/19 Beziehungen zwischen Objekten Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/19 Outline 1 Vererbung (Wiederholung)

Mehr

Überschreiben von Methoden

Überschreiben von Methoden Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra

Mehr

Der Operator this. Wir betrachten nochmals die Klassendefinition von Ballon.

Der Operator this. Wir betrachten nochmals die Klassendefinition von Ballon. Der Operator this Wir betrachten nochmals die Klassendefinition von Ballon. public class Ballon { private int durchmesser; private int x1, y1; private Color farbe =Color.black; // Konstruktor ohne Farbe

Mehr

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

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Java, OO und UML Fortsetzung

Java, OO und UML Fortsetzung Java, OO und UML Fortsetzung Das Objektorientierte Paradigma OO bildet keine geschlossene theoretisch abgegrenzte Basis (wie z.b. das Relationsmodell relationaler Datenbanken) OO ist eine Sammlung und

Mehr

Code-Erzeugung aus UML-Klassendiagrammen

Code-Erzeugung aus UML-Klassendiagrammen Dominik 09.03.2009 Universität Ulm Gessenharter Inst. f. Programmiermethodik und Compilerbau Code-Erzeugung aus UML-Klassendiagrammen Theorie und Praxis Seite 2 REConf 2009 München Dominik Gessenharter

Mehr

Nathan Burgener. Design by Contract. Modul SWE

Nathan Burgener. Design by Contract. Modul SWE NathanBurgener DesignbyContract ModulSWE NathanBurgener Inhaltsverzeichnis 1 WasistDesignbyContract...3 1.1 Überblick...3 1.2 DesignbyContractmitMethoden...4 1.3 DesignbyContractmitKlassen...5 1.4 Vererbung...6

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Übungen Softwaretechnik I

Übungen Softwaretechnik I Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich Übungen Softwaretechnik I Übung 5: Objektorientierte Analyse Einführung Objektorientierung in der

Mehr

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a); Letztes Mal static int ggt(int a, int b) { if (a == b) return a; else if (a > b) } return ggt(a-b,b); else if (a < b) return ggt(a,b-a); Darf hier nicht stehen! Compiler sagt: Missing return statement

Mehr

01. Grundprinzipien der Vererbung

01. Grundprinzipien der Vererbung 01. Grundprinzipien der Vererbung 1.1 Grundidee der Vererbung Bei der Analyse eines Problems (z.b. Baukasten) stellt man beispielsweise fest, dass 67 % an Daten/Funktionen immer vorkommen 25 % an Daten/Funktionen

Mehr

2. Methoden. n Generelles zum Aufruf von Methoden. n Parameterübergabemechanismen (call by value, call by reference)

2. Methoden. n Generelles zum Aufruf von Methoden. n Parameterübergabemechanismen (call by value, call by reference) 2. Methoden n Generelles zum Aufruf von Methoden n Parameterübergabemechanismen (call by value, call by reference) n Speicherorganisation bei Methodenaufruf und Parameterübergabe (Laufzeitkeller) n vararg

Mehr

8. Objektorientierte Programmierung. Informatik II für Verkehrsingenieure

8. Objektorientierte Programmierung. Informatik II für Verkehrsingenieure 8. Objektorientierte Programmierung Informatik II für Verkehrsingenieure Grundbegriffe ALAN KAY, ERFINDER DER SPRACHE SMALLTALK, HAT DIE GRUNDBEGRIFFE DER OBJEKTORIENTIERTEN PROGRAMMIERUNG WIE FOLGT ZUSAMMENGEFASST:

Mehr

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 12: Einführung in UML und Java API Dokumentation Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in UML Sequenzdiagramm Klassendiagramm

Mehr

Java Generics & Collections

Java Generics & Collections Java Praktikum Effizientes Programmieren (Sommersemester 2015) Dennis Reuling Agenda 1 2 3 1 / 30 Praktikum Effizientes Programmieren (Sommersemester 2015) Java Subtyping Teil 1 2 / 30 Praktikum Effizientes

Mehr

Programmieren I. Kapitel 8. Vererbung

Programmieren I. Kapitel 8. Vererbung Programmieren I Kapitel 8. Vererbung Kapitel 8: Vererbung Ziel: Wesentliches objektorientiertes Konzept kennenlernen Subtypen Idee Probleme und Varianten Vererbung in Java dynamische Bindung abstrakte

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Stefan Brass: OOP (Java), 15. Überladene Methoden 1/22 Objektorientierte Programmierung Kapitel 15: Überladene Methoden Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2013/14 http://www.informatik.uni-halle.de/

Mehr

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Übungsaufgaben UML Zertifizierung Fundamental-Level

Übungsaufgaben UML Zertifizierung Fundamental-Level Übungsaufgaben UML Zertifizierung Fundamental-Level Kapitel 15: Sequenzdiagramm Die folgenden Aufgaben behandeln die Inhalte aus Kapitel 15 von UML 2 glasklar (4. Auflage), die die OMG für die Zertifizierung

Mehr

Informatik I - Programmierung Globalübung Hoare-Kalkül. Thomas Weiler. Fachgruppe Informatik RWTH Aachen. T. Weiler, RWTH Aachen - 1 -

Informatik I - Programmierung Globalübung Hoare-Kalkül. Thomas Weiler. Fachgruppe Informatik RWTH Aachen. T. Weiler, RWTH Aachen - 1 - Informatik I - Programmierung Globalübung 11.11.2003 Hoare-Kalkül Thomas Weiler Fachgruppe Informatik RWTH Aachen T. Weiler, RWTH Aachen - 1 - Ariane 5 Die Ariane 5 ist das jüngste Modell der Trägerrakete

Mehr

Arrays Fortgeschrittene Verwendung

Arrays Fortgeschrittene Verwendung Arrays Fortgeschrittene Verwendung Gilbert Beyer und Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Arrays: Wiederholung

Mehr

Programmieren - Vererbung & Polymorphie

Programmieren - Vererbung & Polymorphie Programmieren - Vererbung & Polymorphie Reiner Nitsch r.nitsch@fbi.h-da.de Vererbung - Was ist das? Vererbung ist ein wichtiges Konzept zur Unterstützung der Wiederverwendbarkeit, wenn auch nicht das Wichtigste.

Mehr

Einführung in die Programmierung Blockkurs Java

Einführung in die Programmierung Blockkurs Java Michael Bader 8. 12. April 2002 Freitag Inhaltsübersicht Exceptions und Errors Ausnahmebehandlung: try/catch/finally Threads Zugriffskontrolle bei gemeinsamen Variablen: synchronized, wait(), notify()

Mehr

Die SOLID-Prinzipien Fünf Grundsätze für bessere Software

Die SOLID-Prinzipien Fünf Grundsätze für bessere Software ESE Kongress 2014 Vortragsskript: Die SOLID-Prinzipien Fünf Grundsätze für bessere Software Frank Listing, MicroConsult GmbH Die Qualität der Software ist nicht in allen Projekten ideal, und deshalb werden

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

Typumwandlungen bei Referenztypen

Typumwandlungen bei Referenztypen Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei

Mehr

Spec# Einführung. Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba

Spec# Einführung. Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba Spec# Einführung Formale Software-Entwicklung Seminar SS 07 Universität Karlsruhe Hilal Akbaba Inhalt Einführung in C# Das Spec# System Die Konstrukte Vererben der Verträge System Architektur Einführung

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

Informatik II - Tutorium

Informatik II - Tutorium Sommersemester 2008 http://info2tut.blogspot.com 29. April 2007 Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Quellennachweis & Dank an: Joachim Wilke, Susanne Dinkler, Bernhard Müller,

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen

Mehr

Programmieren I. Kapitel 5. Kontrollfluss

Programmieren I. Kapitel 5. Kontrollfluss Programmieren I Kapitel 5. Kontrollfluss Kapitel 5: Kontrollfluss Ziel: Komplexere Berechnungen im Methodenrumpf Ausdrücke und Anweisungen Fallunterscheidungen (if, switch) Wiederholte Ausführung (for,

Mehr

JAVA 5 Generics. Proseminar Programmiersprachen Thema Java 5 Generics 1

JAVA 5 Generics. Proseminar Programmiersprachen Thema Java 5 Generics 1 JAVA 5 Generics Thema Java 5 Generics 1 Inhalt 1. Die Programmiersprache Java 2. Simple Generics 3. Das Beispielprogramm 4. Tieferer Einstieg in Generics 5. Arrays 6. Kritische Betrachtung von Generics

Mehr

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests. Universität Osnabrück 1 Problemstellung 3 - Objektorientierte Programmierung in Java Vorlesung 24: Reflection 1 SS 2006 Prof. Dr. Frank M. Thiesing, FH Osnabrück Um ein Objekt anzulegen, eine seiner Methoden

Mehr

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

Mehr

6 Speicherorganisation

6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für

Mehr

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4. ! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete! 4. Ausnahmen (Exceptions) II.4.4 Exceptions - 1 - Ausnahmen (Exceptions( Exceptions) Treten auf, wenn zur

Mehr

Client-Server-Beziehungen

Client-Server-Beziehungen Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server

Mehr

5 Projekt Bankverwaltung

5 Projekt Bankverwaltung Kapitel 5 Bankverwaltung (Lösung) Seite 1/7 5 Projekt Bankverwaltung 5.1 Festlegen der Schnittstelle Bevor du mit der Programmierung beginnst, musst du dir einige Gedanken über die Schnittstelle zwischen

Mehr

Zur Beschreibung datenbasierter Parametrisierung von Softwarekomponenten

Zur Beschreibung datenbasierter Parametrisierung von Softwarekomponenten Zur Beschreibung datenbasierter Parametrisierung von Softwarekomponenten Jörg Ackermann Uni Augsburg Jörg Ackermann: Zur Beschreibung datenbasierter Parametrisierung von Softwarekomponenten. AKA 2004 /

Mehr

Formale Spezialisierungstechniken. am Beispiel des binären Baums. Hybride Programmiersprachen Daniel Krompass Berlin, 2009

Formale Spezialisierungstechniken. am Beispiel des binären Baums. Hybride Programmiersprachen Daniel Krompass Berlin, 2009 Formale Spezialisierungstechniken am Beispiel des binären Baums. Hybride Programmiersprachen Daniel Krompass Berlin, 2009 Spezialisierungsarten (Typbeziehungen erster Art) X stellt Methoden und Eigenschaften

Mehr

MOF Meta Object Facility. Veranstaltungsvortrag im Rahmen der Projektgruppe ComponentTools

MOF Meta Object Facility. Veranstaltungsvortrag im Rahmen der Projektgruppe ComponentTools MOF Meta Object Facility Veranstaltungsvortrag im Rahmen der Projektgruppe ComponentTools Überblick Object Management Group (OMG) Model Driven Architecture (MDA) Exkurs: Modelle, Metamodelle MOF Architektur

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Einführung in die objektorientierte Programmierung Teil 3 2 Übersicht der heutigen Inhalte Pakete Beispiel zur Verdeckung Polymorphie Modifikatoren bei Klassenelementen 3 Zusammenhang

Mehr

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff Java Reflection Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff Java Reflection Die Java Reflection API liefert per Introspection Informationen über Klassen => Meta-Daten.

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

Mehr

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode Methoden und Klassen Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode

Mehr

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung: Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang

Mehr

Variablen manipulieren per JDI

Variablen manipulieren per JDI Variablen manipulieren per JDI Zusammenfassung Jede moderne Java IDE verfügt über eine mächtige und dennoch meist einfach zu bedienende Benutzeroberfläche die das finden von Fehlern in lokalen oder entfernt

Mehr

Teil II. Objektorientierte Programmierung und objektorientierter Entwurf

Teil II. Objektorientierte Programmierung und objektorientierter Entwurf Teil II Objektorientierte Programmierung und objektorientierter Entwurf 39 Kapitel 8 Robuste Programme durch Ausnahmebehandlung Ziele: Lernen, robuste Programme zu schreiben Ausnahmen als Objekte verstehen

Mehr

Programmieren Tutorium

Programmieren Tutorium Programmieren Tutorium Tom Schildhauer Tutorium 12 Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by Tom Schildhauer,

Mehr

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Arrays: Wiederholung Ein Array ist ein Tupel von Elementen gleichen

Mehr

Programmierkurs. Manfred Jackel

Programmierkurs. Manfred Jackel Java für Anfänger Teil 7: Methoden Programmierkurs 06.-10.10.2008 Manfred Jackel 1 Methoden In der imperativen Programmierung sind Funktionen ein wichtiges Mittel zur Modularisierung. [Oft benötigter]

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Einführung in die objektorientierte Programmierung Teil 2 2 Übersicht der heutigen Inhalte Vererbung Abstrakte Klassen Erweitern von Klassen Überladen von Methoden Überschreiben von

Mehr

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

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 16. Ausnahmen (Exception Handling)

Grundlagen der Programmierung Prof. H. Mössenböck. 16. Ausnahmen (Exception Handling) Grundlagen der Programmierung Prof. H. Mössenböck 16. Ausnahmen (Exception Handling) Motivation Fehler können nicht immer dort behandelt werden, wo sie auftreten void p() { q(); Lösung void q() { r();

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

4. AuD Tafelübung T-C3

4. AuD Tafelübung T-C3 4. AuD Tafelübung T-C3 Simon Ruderich 17. November 2010 Arrays Unregelmäßige Arrays i n t [ ] [ ] x = new i n t [ 3 ] [ 4 ] ; x [ 2 ] = new i n t [ 2 ] ; for ( i n t i = 0; i < x. l e n g t h ; i ++) {

Mehr

Die Object Constraint Language

Die Object Constraint Language Die Object Constraint Language Eine Einführung im Rahmen des SoPras Frank Broemel 1 Gliederung 1. Einleitung 2. Ein Beispiel 3. Zusammenfassung der Erkenntnisse und Systematisierung 4. Literatur 5. Verwendung

Mehr

Kurzeinführung in UML

Kurzeinführung in UML Kurzeinführung in UML Die Unified Modeling Language (UML) ist eine Sprache zur Beschreibung von Softwaresystemen. Der Grundgedanke bei UML bestand darin, eine einheitliche Notation für viele Einsatzgebiete

Mehr