Typisierung. Prüfungen zur Übersetzungszeit Type Test und Type Cast Bedingte Zuweisung Nil Übergangsparameter Grade der Typisierung. 3.
|
|
- Swen Schmitt
- vor 6 Jahren
- Abrufe
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 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:
MehrJAVA 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
Mehr8 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
MehrKapitel 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
MehrKapitel 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
MehrBeispiel: 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
MehrKapitel 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
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
Mehr1 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
Mehr5.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
MehrVererbung. 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
MehrObjects 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
MehrJava 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
MehrJava 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
MehrEinfü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
MehrJavakurs 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
MehrType 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
MehrJavakurs 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,
Mehrzu 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
MehrProgrammieren 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
MehrObjektorientierte 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
MehrEinstieg 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
MehrObjektorientierte 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
Mehr7. 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
Mehr8. 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.
MehrProblemstellung. 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
MehrAnwendungsentwicklung 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,
MehrProbeklausur: 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,
MehrGenerische 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
MehrJavakurs 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
MehrDas 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:
MehrKlassenbeziehungen & Vererbung
Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in
MehrJava 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
MehrGenerische 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
MehrJava 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
Mehr12) 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
MehrJavakurs 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
MehrModul 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
MehrJAVA 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)
Mehrzu 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
MehrEinfache 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
MehrTypumwandlungen 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
Mehr12) 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
MehrSchnittstellen 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
MehrInterfaces 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
MehrVerhindert, 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:
MehrFachseminar. 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
MehrII. 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
MehrLetztes 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
MehrVBA-Programmierung: Zusammenfassung
VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung
Mehr2.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
MehrInformatik 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
MehrTheorie 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
MehrProgrammierung 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
MehrKapitel 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
MehrWelche 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
MehrBei 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
MehrTHE 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
MehrSWE1 / Ü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
MehrInformatik 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.
MehrGrundlagen 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();
MehrProgrammiersprache 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
MehrVersuchsziele 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
MehrGrundzü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
MehrAndroid-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
MehrFH 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.:
MehrPROGRAMMIERUNG 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
MehrProgrammieren 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,
Mehr3 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
Mehr2. 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
MehrOOP 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
Mehr1. 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
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
MehrDistributed 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
MehrTeil 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
MehrEinfü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
MehrJava 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
Mehr7. 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
MehrJava 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.
Mehr620.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
MehrObjektorientierte 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.4 Exceptions - 1 - Ausnahmen (Exceptions( Exceptions) Treten auf, wenn zur
MehrKapitel 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
MehrEinfü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
MehrHaskell, 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
MehrProgrammierkurs 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
MehrVorlesung 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),
MehrEinleitung 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
MehrGrundlagen 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.
MehrProbeklausur: 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,
MehrVererbung & 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
Mehr188.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
MehrSpec# 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
MehrEinfü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
MehrA(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,
MehrAdvanced 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
Mehr1.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 -
MehrJava 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
Mehr5.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
MehrShort 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