Typisierung. Prüfungen zur Übersetzungszeit Type Test und Type Cast Bedingte Zuweisung Nil Übergangsparameter Grade der Typisierung. 3.

Größe: px
Ab Seite anzeigen:

Download "Typisierung. Prüfungen zur Übersetzungszeit Type Test und Type Cast Bedingte Zuweisung Nil Übergangsparameter Grade der Typisierung. 3."

Transkript

1 Typisierung Prüfungen zur Übersetzungszeit Type Test und Type Cast Bedingte Zuweisung Nil Übergangsparameter Grade der Typisierung

2 2 Untypisierte Sprachen erfordern Methodensuche zur Laufzeit bei Misserfolg Abbruch message not understood keine statisch überprüfbaren Regeln

3 2 Untypisierte Sprachen erfordern Methodensuche zur Laufzeit bei Misserfolg Abbruch message not understood keine statisch überprüfbaren Regeln s s := "Hello". s := s+1.

4 2 Untypisierte Sprachen erfordern Methodensuche zur Laufzeit bei Misserfolg Abbruch message not understood keine statisch überprüfbaren Regeln s s := "Hello". s := s+1. String s

5 2 Untypisierte Sprachen erfordern Methodensuche zur Laufzeit bei Misserfolg Abbruch message not understood keine statisch überprüfbaren Regeln s s := "Hello". s := s+1. String s Integer s

6 2 Untypisierte Sprachen erfordern Methodensuche zur Laufzeit bei Misserfolg Abbruch message not understood keine statisch überprüfbaren Regeln s s := "Hello". s := s+1. String s Integer s mehr Sicherheit durch Beschränkung der Freiheit

7 3 Beschränkungen bei Typisierung A B C Zuweisungen nur entgegen der Vererbungshierarchie v := e ist nur erlaubt, wenn T(e) T(v) statische Regel soll garantieren, dass mit v nur jene Operationen möglich sind, die in e implementiert sind. D E

8 4 Subtyping und Subclassing Bei Subclassing gilt die Subtyp-Beziehung S T nur, wenn S von T abgeleitet ist. Die Kompatibilität könnte auch durch zufälliges Zusammenpassen der Signaturen gegeben sein: A {x,y} B C {x,y} D E {} {} B und C erweitern die Schnittstelle von A um die selben Methoden. D und E fügen nichts hinzu.

9 5 Kompatibilität bei Subclassing erlaubte Zuweisungen mit: B b; C c; E e; A {x,y} B C {x,y} D E {} {} b := e (wie bisher) e := b b := c c := b In typisierten Sprachen verboten, weil die Kompatibilität auf Subclassing (Ist-Beziehung) und nicht auf Subtyping (Signaturkompatibilität) beruht.

10 6 Kompatibilität bei Collections z.b. geordnete Zusammenfassungen wie Array, List, Queue, Heap, typische Schnittstelle: void add(elem: Object) Object first() a.add(r) r := a.first() obj := a.first() Object als Elementtyp soll allgemeine Verwendbarkeit gewährleisten. verboten OK, engt aber die Sicht ein

11 6 Kompatibilität bei Collections z.b. geordnete Zusammenfassungen wie Array, List, Queue, Heap, typische Schnittstelle: void add(elem: Object) Object first() Beispiel mit: Array a Rectangle r Object obj a.add(r) r := a.first() obj := a.first() Object als Elementtyp soll allgemeine Verwendbarkeit gewährleisten. verboten OK, engt aber die Sicht ein

12 7 Type Cast und Type Test (1) Oberon: IF obj IS Rectangle THEN r := obj(rectangle); r benutzen END; Type Test prüft, ob der Cast erlaubt ist. Type Cast überredet den Compiler.

13 7 Type Cast und Type Test (1) Oberon: IF obj IS Rectangle THEN r := obj(rectangle); r benutzen END; Java: if (obj instanceof Rectangle) { r = (Rectangle) obj; r benutzen } Type Test prüft, ob der Cast erlaubt ist. Type Cast überredet den Compiler.

14 7 Type Cast und Type Test (1) Oberon: IF obj IS Rectangle THEN r := obj(rectangle); r benutzen END; Java: if (obj instanceof Rectangle) { r = (Rectangle) obj; r benutzen } Type Test prüft, ob der Cast erlaubt ist. Type Cast überredet den Compiler. C#: is statt instanceof

15 8 Type Cast und Type Test (2) C++: if (r = dynamic_cast<rectangle*> (obj)) { r benutzen } Liefert Void (bzw. NULL), wenn obj nicht zu Rectangle (bzw. Typ von r) passt. Prüft, ob die Zuweisung geklappt hat.

16 8 Type Cast und Type Test (2) C++: if (r = dynamic_cast<rectangle*> (obj)) { r benutzen } Eiffel: r?= obj; if not r.void then r benutzen end; Liefert Void (bzw. NULL), wenn obj nicht zu Rectangle (bzw. Typ von r) passt. Prüft, ob die Zuweisung geklappt hat.

17 8 Type Cast und Type Test (2) C++: if (r = dynamic_cast<rectangle*> (obj)) { r benutzen } Eiffel: r?= obj; if not r.void then r benutzen end; Liefert Void (bzw. NULL), wenn obj nicht zu Rectangle (bzw. Typ von r) passt. Prüft, ob die Zuweisung geklappt hat. Void = Zustand einer Variablen ( undefiniert )

18 9 Bedingte Zuweisung Omega: (r :?= obj) iftrue:[ r benutzen ]

19 9 Bedingte Zuweisung Omega: (r :?= obj) iftrue:[ r benutzen ] 1. Prüfen, ob die Klasse von obj zum Typ von r passt.

20 9 Bedingte Zuweisung Omega: (r :?= obj) iftrue:[ r benutzen ] 1. Prüfen, ob die Klasse von obj zum Typ von r passt. 2. Zuweisung, wenn OK (sonst bleibt r unverändert)

21 9 Bedingte Zuweisung Omega: (r :?= obj) iftrue:[ r benutzen ] 1. Prüfen, ob die Klasse von obj zum Typ von r passt. 2. Zuweisung, wenn OK (sonst bleibt r unverändert) 3. Ergebnis des Ausdrucks: true, wenn OK

22 10 Nil-Problem Ziel der Typisierung: potenzielle Typfehler zur Übersetzungszeit erkennen. Wird durch Nil (NULL, Void, etc.) vereitelt. Nil kann jeder Objekt-Variablen zugewiesen werden. A B C D E

23 10 Nil-Problem Ziel der Typisierung: potenzielle Typfehler zur Übersetzungszeit erkennen. Wird durch Nil (NULL, Void, etc.) vereitelt. Nil kann jeder Objekt-Variablen zugewiesen werden. A B C D E Nil

24 10 Nil-Problem Ziel der Typisierung: potenzielle Typfehler zur Übersetzungszeit erkennen. Wird durch Nil (NULL, Void, etc.) vereitelt. Nil kann jeder Objekt-Variablen zugewiesen werden. A B C D Nil gilt als Subklasse aller Klassen. E Nil

25 10 Nil-Problem Ziel der Typisierung: potenzielle Typfehler zur Übersetzungszeit erkennen. Wird durch Nil (NULL, Void, etc.) vereitelt. Nil kann jeder Objekt-Variablen zugewiesen werden. A B C D E Nil Nil gilt als Subklasse aller Klassen. aber: Nil hat schmalere Schnittstelle (Subklasse, aber kein Subtyp!)

26 10 Nil-Problem Ziel der Typisierung: potenzielle Typfehler zur Übersetzungszeit erkennen. Wird durch Nil (NULL, Void, etc.) vereitelt. Nil kann jeder Objekt-Variablen zugewiesen werden. A B C D E Nil Eiffel: Konstante Void der Klasse NONE; erbt automatisch mehrfach von allen Klassen. Nil gilt als Subklasse aller Klassen. aber: Nil hat schmalere Schnittstelle (Subklasse, aber kein Subtyp!)

27 11 Sichere Implementierung von Nil x Variable Nil-Objekt Methodentabelle Nil.error löst Nil access exception aus. Nil-Methode

28 11 Sichere Implementierung von Nil Abfrage bei jedem Zugriff auf eine Objektreferenz (bei Repräsentation von null als 0): x.dosomething() wird übersetzt als: if (x==null) {exception} else {x.dosomething();} x Variable Nil-Objekt Methodentabelle Nil.error löst Nil access exception aus. Nil-Methode

29 11 Sichere Implementierung von Nil Abfrage bei jedem Zugriff auf eine Objektreferenz (bei Repräsentation von null als 0): x.dosomething() wird übersetzt als: if (x==null) {exception} else {x.dosomething();} Echtes Nil-Objekt mit Methodentabelle: x Variable Nil-Objekt Methodentabelle Nil.error löst Nil access exception aus. Nil-Methode

30 11 Sichere Implementierung von Nil Abfrage bei jedem Zugriff auf eine Objektreferenz (bei Repräsentation von null als 0): x.dosomething() wird übersetzt als: if (x==null) {exception} else {x.dosomething();} Echtes Nil-Objekt mit Methodentabelle: { x Nil.error löst Nil access exception aus. Anzahl der Einträge größte echte Methodentabelle Variable Nil-Objekt Methodentabelle Nil-Methode

31 12 Zuweisungskompatibilität bei Parametern (1) Eingangsparameter: void m(c x) obj.m(y); x:=y; m(); T(y) C T(y) C T(y) = C T(y) C

32 12 Zuweisungskompatibilität bei Parametern (1) Eingangsparameter: void m(c x) obj.m(y); x:=y; m(); T(y) C Übergangsparameter: void m(c x) obj.m(y); x:=y; m(); y:=x; T(y) C T(y) = C T(y) C

33 12 Zuweisungskompatibilität bei Parametern (1) Eingangsparameter: void m(c x) obj.m(y); x:=y; m(); T(y) C Übergangsparameter: void m(c x) obj.m(y); x:=y; m(); y:=x; T(y) C T(y) = C T(y) C m() ist nur noch für Aktualparameter eines Typs geeignet! nur Eingangsparameter in Smalltalk, Java,

34 13 Zuweisungskompatibilität bei Parametern (1) Tolerantere Definition in Oberon: Aktualparameter darf von einem Subtyp sein. PROCEDURE P(VAR x: C); VAR h: C; BEGIN NEW(h); x := h END P; VAR y: D; P(y); versteckte Typprüfung bei jeder Zuweisung an einen Übergangsparameter!

35 14 Regionale Typzusicherung (Spezialität von Oberon) TYPE T0 = RECORD x: INTEGER END; T1 = RECORD (T0) y: INTEGER END; P0 = POINTER TO T0; P1 = POINTER TO T1; VAR v0: P0; v1: P1;

36 14 Regionale Typzusicherung (Spezialität von Oberon) TYPE T0 = RECORD x: INTEGER END; T1 = RECORD (T0) y: INTEGER END; P0 = POINTER TO T0; P1 = POINTER TO T1; VAR v0: P0; v1: P1; NEW(v1); v0 := v1; WITH v0:t1 DO v0.x := 1; v0.y := 2; P; v0.y := 3 END;

37 14 Regionale Typzusicherung (Spezialität von Oberon) TYPE T0 = RECORD x: INTEGER END; T1 = RECORD (T0) y: INTEGER END; P0 = POINTER TO T0; P1 = POINTER TO T1; VAR v0: P0; v1: P1; NEW(v1); v0 := v1; WITH v0:t1 DO v0.x := 1; v0.y := 2; P; v0.y := 3 END; Innerhalb von WITH wird v0 angesehen, als ob es vom Typ T1 wäre.

38 14 Regionale Typzusicherung (Spezialität von Oberon) TYPE T0 = RECORD x: INTEGER END; T1 = RECORD (T0) y: INTEGER END; P0 = POINTER TO T0; P1 = POINTER TO T1; VAR v0: P0; v1: P1; NEW(v1); v0 := v1; WITH v0:t1 DO v0.x := 1; v0.y := 2; P; v0.y := 3 END; PROCEDURE P; BEGIN NEW(v0); v0.x := 42 END P; Innerhalb von WITH wird v0 angesehen, als ob es vom Typ T1 wäre.

39 14 Regionale Typzusicherung (Spezialität von Oberon) TYPE T0 = RECORD x: INTEGER END; T1 = RECORD (T0) y: INTEGER END; P0 = POINTER TO T0; P1 = POINTER TO T1; VAR v0: P0; v1: P1; NEW(v1); v0 := v1; WITH v0:t1 DO v0.x := 1; v0.y := 2; P; v0.y := 3 END; PROCEDURE P; BEGIN NEW(v0); v0.x := 42 END P; side effect: v0 verweist auf ein T0-Objekt. Innerhalb von WITH wird v0 angesehen, als ob es vom Typ T1 wäre.

40 14 Regionale Typzusicherung (Spezialität von Oberon) TYPE T0 = RECORD x: INTEGER END; T1 = RECORD (T0) y: INTEGER END; P0 = POINTER TO T0; P1 = POINTER TO T1; VAR v0: P0; v1: P1; Unzulässiger Zugriff auf das T1-Objekt! NEW(v1); v0 := v1; WITH v0:t1 DO v0.x := 1; v0.y := 2; P; v0.y := 3 END; PROCEDURE P; BEGIN NEW(v0); v0.x := 42 END P; side effect: v0 verweist auf ein T0-Objekt. Innerhalb von WITH wird v0 angesehen, als ob es vom Typ T1 wäre.

41 15 Grad der Typisierung Typisierungsgrad 0% 100% untypisiert dynamische Prüfung Smalltalk alle Prüfungen zur Laufzeit obj doit. "message not understood" Objective-C Typisierung optional id obj; [obj doit]; C++ unsicherer Cast ohne Prüfung x = (C)y; x >doit(); typisiert statische Prüfung Java typsicherer Cast mit Laufzeitprüfung x = (C)y; ClassCastException

42 15 Grad der Typisierung Typisierungsgrad 0% 100% untypisiert dynamische Prüfung Smalltalk alle Prüfungen zur Laufzeit obj doit. "message not understood" Objective-C Typisierung optional id obj; [obj doit]; C++ unsicherer Cast ohne Prüfung x = (C)y; x >doit(); typisiert statische Prüfung Java typsicherer Cast mit Laufzeitprüfung x = (C)y; ClassCastException

43 15 Grad der Typisierung Typisierungsgrad 0% 100% untypisiert dynamische Prüfung Smalltalk alle Prüfungen zur Laufzeit obj doit. "message not understood" Objective-C Typisierung optional id obj; [obj doit]; C *obj; [obj doit]; C++ unsicherer Cast ohne Prüfung x = (C)y; x >doit(); typisiert statische Prüfung Java typsicherer Cast mit Laufzeitprüfung x = (C)y; ClassCastException

44 15 Grad der Typisierung Typisierungsgrad 0% 100% untypisiert dynamische Prüfung Smalltalk alle Prüfungen zur Laufzeit obj doit. "message not understood" Objective-C Typisierung optional id obj; [obj doit]; C *obj; [obj doit]; C++ unsicherer Cast ohne Prüfung x = (C)y; x >doit(); typisiert statische Prüfung Java typsicherer Cast mit Laufzeitprüfung x = (C)y; ClassCastException

Java I Vorlesung 6 Referenz-Datentypen

Java I Vorlesung 6 Referenz-Datentypen Java I Vorlesung 6 Referenz-Datentypen 7.6.2004 Referenzen this, super und null Typkonvertierung von Referenztypen Finale Methoden und Klassen Datentypen in Java In Java gibt es zwei Arten von Datentypen:

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

8 Zugriffstypen ( Zeiger )

8 Zugriffstypen ( Zeiger ) 8 Zugriffstypen ( Zeiger ) 1. Zugriffstypen, die auf Daten in einem Storage Pool zeigen Heap. 2. Allgemeine Zugriffstypen, die auf (mehr oder weniger) beliebige Daten zeigen. 3. Zugriffsparameter für Unterprogramme

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

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

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der Vererbung Vererbung ist ein Konzept der objektorientierten Programmierung,, die es ermöglicht neue Klassen von bereits vorhandenen Klassen abzuleiten. In einer abgeleiteten Klasse (subclass) muss nur spezifiziert

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

Ü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

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

5.14 Generics. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

5.14 Generics. Xiaoyi Jiang Informatik I Grundlagen der Programmierung Motivation für Generics: Containertypen speichern eine Anzahl von Elementen anderer Typen Wie definiert man die Containerklasse ArrayList? In der Definition könnte man als Elementtyp Object angeben maximale

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

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0 Objects First With Java A Practical Introduction Using BlueJ Mehr über Vererbung Exploring polymorphism 1.0 Zentrale Konzepte dieses Kapitels Methoden-Polymorphie statischer und dynamischer Typ Überschreiben

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

Java Einführung Abstrakte Klassen und Interfaces

Java Einführung Abstrakte Klassen und Interfaces Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer

Mehr

Einführung in die STL

Einführung in die STL 1/29 in die STL Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/29 Outline 1 3/29 Inhaltsverzeichnis 1 4/29 Typisierung

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren

Mehr

Type Erasure in Java 5. Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe

Type Erasure in Java 5. Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe Type Erasure in Java 5 Helmi Jouini Institut für Theoretische Informatik Universität Karlsruhe Warum Generics? Containerklassen in Java 1.4 sind generisch nutzbar aber typunsicher. Public class LinkedList

Mehr

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

Mehr

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

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 Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

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

Objektorientierte Programmierung. Kapitel 20: Generische Programmierung

Objektorientierte Programmierung. Kapitel 20: Generische Programmierung Stefan Brass: OOP (Java), 20. Generische Programmierung 1/66 Objektorientierte Programmierung Kapitel 20: Generische Programmierung Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

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

8. Generics Grundlagen der Programmierung 1 (Java)

8. Generics Grundlagen der Programmierung 1 (Java) 8. Generics Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 6. Dezember 2005 Einordnung im Kontext der Vorlesung 1.

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

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie

Anwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,

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

Generische Typen in Java 1.5. Die Erweiterung der Java Language Specification

Generische Typen in Java 1.5. Die Erweiterung der Java Language Specification Generische Typen in Java 1.5 - Seminarvortrag 1/26 Generische Typen in Java 1.5 Die Erweiterung der Java Language Specification Seminarvortrag von Heiko Minning, mi3795 bei Prof. Dr. Uwe Schmidt, FH-Wedel

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 09: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes

Mehr

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:

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

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

Generische Datenstrukturen

Generische Datenstrukturen Generische Datenstrukturen Prof. Dr. rer. nat. habil. Uwe Aßmann Lehrstuhl Softwaretechnologie Fakultät für Informatik TU Dresden Softwaretechnologie, Prof. Uwe Aßmann 1 2 Trends in der Softwareentwicklung

Mehr

Java Schulung (Java 2 Java Development Kit 5 / 6)

Java Schulung (Java 2 Java Development Kit 5 / 6) 2. Grundlagen der Objektorientierung 2.1 Klassen, Attribute, Methoden Klassen Eine Klasse beschreibt als Bauplan Gemeinsamkeiten einer Menge von Objekten ist also ein Modell, auf dessen Basis Objekte erstellt

Mehr

12) Generische Datenstrukturen

12) Generische Datenstrukturen 12) Generische Datenstrukturen Prof. Dr. rer. nat. habil. Uwe Aßmann Lehrstuhl Softwaretechnologie Fakultät für Informatik TU Dresden Version 09-0.2, 24.11.08 Softwaretechnologie, Prof. Uwe Aßmann 1 mpfohlene

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 14: Generics Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda Generische Klassen (Generics) Motivation Java Typ-Prüfung Warum also Generics? Generische

Mehr

Modul 122 VBA Scribt.docx

Modul 122 VBA Scribt.docx Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval

Mehr

JAVA KURS COLLECTION

JAVA KURS COLLECTION JAVA KURS COLLECTION COLLECTIONS Christa Schneider 2 COLLECTION Enthält als Basis-Interface grundlegende Methoden zur Arbeit mit Collections Methode int size() boolean isempty() boolean contains (Object)

Mehr

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen

Mehr

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Inhalt SWP Funktionale Programme (2. Teil) Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Interpreter für funktionale Sprache

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

12) Generische Datenstrukturen

12) Generische Datenstrukturen mpfohlene Literatur 12) Generische Datenstrukturen http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf rof. Dr. rer. nat. habil. Uwe Aßmann Lehrstuhl Softwaretechnologie Fakultät für Informatik TU Dresden

Mehr

Schnittstellen implementieren am Beispiel Suchbaum

Schnittstellen implementieren am Beispiel Suchbaum Motivation Informatik mit Java und BlueJ Schnittstellen implementieren am Beispiel Suchbaum von Bernhard Rosing Schreiben Sie eine Klasse Person, deren Instanzen in ein TreeSet (Suchbaum) eingefügt werden

Mehr

Interfaces und Vererbung

Interfaces und Vererbung Interfaces und Vererbung Einführung in Java Folie 1 von 31 12. Mai 2011 Ivo Kronenberg Inhalt Interfaces Statische und dynamische Typen Visiblitätsmodifier Vererbung Überschreiben von Methoden Konstruktoren

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

Fachseminar. Semantische Analyse

Fachseminar. Semantische Analyse Fachseminar Vortragender: Arton Berisha Thema : Semantische Analyse Kursleiter: Prof. Dr. Helmut Weber Agenda 1. Einleitung 1.1 Phasen eines Compilers 1.2 Symboltabelle 2. Semantische Analyse 2.1 Was ist

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

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

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

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

Informatik II (D-ITET) Übungsstunde 6

Informatik II (D-ITET) Übungsstunde 6 Informatik II (D-ITET) Übungsstunde 6 simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich Ablauf Nachbesprechung Übung 5 Besprechung der Vorlesung Die neue Serie... Zeit zum Programmieren / für

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

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

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

Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife

Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife 303 Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife durchgeführt wird. 304 305 for-schleifen sind in Aktivitätsdiagrammen

Mehr

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic THE GO PROGRAMMING LANGUAGE Part 1: Michael Karnutsch & Marko Sulejic Gliederung Geschichte / Motivation Compiler Formatierung, Semikolons Variablen, eigene Typen Kontrollstrukturen Funktionen, Methoden

Mehr

SWE1 / Übung 9 (11.01.2012)

SWE1 / Übung 9 (11.01.2012) SWE1 / Übung 9 (11.01.2012) Vererbung Zugriffskontrolle Motivation für Vererbung (1) Objekte in der realen Welt kommen oft in ähnlichen Varianten (Attribute, Verhalten) vor Gliederung durch hierarchische

Mehr

Informatik ist viel mehr als Delphi-Programmierung!

Informatik ist viel mehr als Delphi-Programmierung! Gliederung 1. Objektorientierte Programmierung mit Object Pascal (5. Studienbrief, Kapitel 5) 9.4. + 16.4. 2. Software-Bausteine am Beispiel der Delphi-Komponenten (5. Studienbrief, Kapitel 5) 23.4. 3.

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

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

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 9. Zeiger Arbeitsspeicher / Adressen Der Arbeitsspeicher des Computers (RAM) besteht aus einem Feld von Speicherzellen, beginnend bei Adresse

Mehr

Versuchsziele Kenntnisse in der Anwendung von: Sortieren mit Klassen Benutzung von generischen Klassen o Definition o Sortierung.

Versuchsziele Kenntnisse in der Anwendung von: Sortieren mit Klassen Benutzung von generischen Klassen o Definition o Sortierung. Hochschule Harz Programmierung1 Tutorial 11: FB Automatisierung und Informatik Dipl.-Inf. Dipl.-Ing. (FH) M. Wilhelm Programmierung 1 für MI / WI Thema: Sortieren und generische Klassen Versuchsziele Kenntnisse

Mehr

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

Grundzüge der Programmierung. Wiederverwendung VERERBUNG Grundzüge der Programmierung Wiederverwendung VERERBUNG Inhalt dieser Einheit Syntax: Vererbung in Java Superklassen - Subklassen Konstruktorenaufruf in Subklassen super, abstract und final 2 Code-Reuse

Mehr

Android-Apps Gegenüberstellung Delphi java

Android-Apps Gegenüberstellung Delphi java Android-Apps Gegenüberstellung 2/9 Grundsätzliches etc. Groß-/Kleinschreibung egal sensitiv! Zuweisung := = Kommentare // // { } /* */ Zeichenkettenbegrenzer: 'text' "text" Inkrementieren / Dekrementieren

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Interfaces

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Interfaces 10 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Interfaces Aber: Mehrfachvererbung von Klassen ist in Java nicht erlaubt. Ausweg Definition eines Interfaces, z.b.:

Mehr

PROGRAMMIERUNG IN JAVA

PROGRAMMIERUNG IN JAVA PROGRAMMIERUNG IN JAVA ZUWEISUNGEN (1) Deklaration nennt man die Ankündigung eines Platzhalters (Variablen) und Initialisierung die erste Wertvergabe bzw. die konkrete Erstellung des Platzhalters. In einem

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

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

2. Vererbung und Polymorphie. Vererbung (1/2) Beispiel (1/2) Vererbung (2/2) Eine Unterklasse wird folgendermaßen definiert

2. Vererbung und Polymorphie. Vererbung (1/2) Beispiel (1/2) Vererbung (2/2) Eine Unterklasse wird folgendermaßen definiert 2. Vererbung und Polymorphie Vererbung (1/2) Vererbung mit extends Konstruktoren bei der Vererbung Überladen von Methoden - statische Polymorphie Casten Dynamische Polymorphie Klasse Object Eine Unterklasse

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

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

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung K05 Vererbung & Polymorphie in C++ 1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung 2 Vererbung in C++: Grundlagen Analog zu Java unterstützt C++ das Konzept der Vererbung:

Mehr

Übersicht. Vorstellung des OO-Paradigmas

Übersicht. Vorstellung des OO-Paradigmas Java, OO und UML Vorstellung des OO-Paradigmas Übersicht Umsetzung des OO-Paradigmas in Java Einführung (seeeeeehr rudimenter) in UML zur graphischen Darstellung von OO Grammatik und Semantik von Java

Mehr

Distributed Computing Group

Distributed Computing Group JAVA TUTORIAL Distributed Computing Group Vernetzte Systeme - SS 06 Übersicht Warum Java? Interoperabilität grosse und gut dokumentierte Library weit verbreitet Syntax sehr nahe an C Erfahrung: Java wird

Mehr

Teil V. Generics und Kollektionen in Java

Teil V. Generics und Kollektionen in Java Teil V Generics und Überblick 1 Parametrisierbare Datenstrukturen in Java 2 Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 5 1 Parametrisierbare Datenstrukturen in Java Motivation für

Mehr

Einführung in C++ Vererbung und Polymorphismus

Einführung in C++ Vererbung und Polymorphismus Einführung in C++ Vererbung und Polymorphismus Ablauf Grundlegende Eigenschaften der Vererbung in C++ Redefinition und Namensauflösung Eine einfache Klassenhierarchie in Java und C++ Redefinition von virtuellen

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

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

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

620.900 Propädeutikum zur Programmierung

620.900 Propädeutikum zur Programmierung 620.900 Propädeutikum zur Programmierung Andreas Bollin Institute für Informatik Systeme Universität Klagenfurt Andreas.Bollin@uni-klu.ac.at Tel: 0463 / 2700-3516 Arrays Wiederholung (1/5) Array = GEORDNETE

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

! 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

Kapitel 12: Übersetzung objektorienter Konzepte

Kapitel 12: Übersetzung objektorienter Konzepte Kapitel 12: Übersetzung objektorienter Konzepte Themen Klassendarstellung und Methodenaufruf Typüberprüfung Klassenhierarchieanalyse Escape Analyse 12.1 Klassendarstellung bei Einfachvererbung class Punkt

Mehr

Einführung in die Programmierung mit VBA

Einführung in die Programmierung mit VBA Einführung in die Programmierung mit VBA Vorlesung vom 07. November 2016 Birger Krägelin Inhalt Vom Algorithmus zum Programm Programmiersprachen Programmieren mit VBA in Excel Datentypen und Variablen

Mehr

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Milners

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 3. Kontrollstrukturen 04.11.2015 Prof. Dr. Ralf H. Reussner Version 1.1 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD),

Mehr

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens Grundlagen von C Jonas Gresens Proseminar C Grundlagen und Konzepte Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

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

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

188.154 Einführung in die Programmierung für Wirtschaftsinformatik

188.154 Einführung in die Programmierung für Wirtschaftsinformatik Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger

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

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) Wintersemester 2006/07 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl

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

Advanced Programming in C

Advanced Programming in C Advanced Programming in C Pointer und Listen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Variablen vs. Pointer - Statischer und dynamischer

Mehr

1.4. Funktionen. Objektorientierte Programmierung mit C++

1.4. Funktionen. Objektorientierte Programmierung mit C++ mehrfache Deklarationen sind erlaubt für jede Funktion muss es (GENAU) eine Definition geben, ansonsten linker error [the one definition rule ODR] Deklarationen in *.h - Files, Definitionen in *.cpp -

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

5.6 Vererbung. Vererbung

5.6 Vererbung. Vererbung 5.6 Vererbung Klassen können zueinander in einer "ist ein"- Beziehung stehen Beispiel: Jeder PKW ist ein Kraftfahrzeug, jedes Kraftfahrzeug ist ein Transportmittel aber: auch jeder LKW ist ein Kraftfahrzeug

Mehr

Short Introduction to C# C# (C SHARP) Microsofts Antwort auf Java

Short Introduction to C# C# (C SHARP) Microsofts Antwort auf Java Short Introduction to C# C# (C SHARP) Microsofts Antwort auf Java Short Introduction to C# C# (C SHARP) Microsofts Antwort auf Java Standardisierung durch die ECMA und ISO Short Introduction to C# C# (C

Mehr