Einstieg in die Informatik mit Java
|
|
- Detlef Wagner
- vor 7 Jahren
- Abrufe
Transkript
1 1 / 22 Einstieg in die Informatik mit Java Generics Gerd Bohlender Institut für Angewandte und Numerische Mathematik
2 Gliederung 2 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4 Ergänzungen
3 Gliederung 3 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4 Ergänzungen
4 Überblick Generics Java besitzt seit Version 5 generische Klassen und Methoden. Ohne Generics Verwendung von Object In diesen Fällen ist keine Typprüfung möglich Mit Generics Angabe eines generischen Typs Typprüfung möglich 4 / 22
5 Gliederung 5 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4 Ergänzungen
6 Programmierung ohne Generische Klasse 6 / 22 class Speicher { Object o b j e c t ; void speichern ( Object obj ) { o b j e c t = obj ; Object laden ( ) { return o b j e c t ; / / Speicher erzeugen, s p e i c h e r t a l l e s ohne Pruefung Speicher sp = new Speicher ( ) ; / / etwas speichern... sp. speichern ( Hallo ) ; / /... und wieder laden, Typecast noetig! S t r i n g s t = ( S t r i n g ) sp. laden ( ) ; / / der folgende Fehler wird e r s t zur L a u f z e i t entdeckt I n t e g e r i = ( I n t e g e r ) sp. laden ( ) ; / / f a l s c h e r Typ!
7 Definition einer Generischen Klasse Bei der Definition einer generischen Klasse wird ein formaler Typparameter angegeben. Dieser steht für eine beliebige Klasse, ein Interface oder einen anderen Typparameter. Grundtypen sind nicht erlaubt. Syntax class Klassenname <T> { // Verwendung des Typparameters T Falls mehrere Typparameter benötigt werden, werden sie mit Komma getrennt. In dem Fall müssen verschiedene Bezeichner verwendet werden. Typparameter erhalten üblicherweise einbuchstabige Bezeichner mit einem Großbuchstaben. Übliche Bezeichner: T (steht für Type), E (Element), K (Key), N (Number), V (Value), S, U, V,... (zweiter und weitere Typparameter) 7 / 22
8 8 / 22 Definition einer Generischen Klasse Der Typparameter T darf bei der Definition der generischen Klasse u.a. verwendet werden als Typ von Instanzvariablen, als Typ formaler Parameter von Instanzmethoden oder Konstruktoren der Klasse, als Ergebnistyp von Instanzmethoden, als lokale Variable in Instanzmethoden oder Konstruktoren, in Initialisierern. Dies gilt ebenso für den Feldtyp T[]. Hierbei kann jeweils der aktuelle Typ für den formalen Typparameter T beim Compilieren aus den Angaben bei der jeweiligen Instanz bzw. aus dem aktuellen Parameter der Methode / des Konstruktors bestimmt werden.
9 Definition einer Generischen Klasse Nicht erlaubt ist die Verwendung eines Typparameters T in einer static-umgebung, also: Klassenvariablen vom Typ T, Klassenmethoden mit Argumenttyp, lokalen Variablen oder Ergebnistyp T, Auftreten von T in Klasseninitialisierer. Der Grund hierfür ist, dass der Typparameter T für eine nicht-statische Klasse steht. Nicht erlaubt sind außerdem mit einem Typparameter T Konstruktoraufrufe new T(), die Erzeugung von Feldern new T[3], Typecasts (T)new Object(), Aufrufe von instanceof T zum Laufzeittest des Typs. Der Grund hierfür ist, dass der Typ T in der generischen Klasse nicht abgespeichert wird (der Typparameter T wird beim Übersetzen gelöscht: Type Erasure ). Die Klasse hat hier also keine Möglichkeit, den aktuellen Typ zu bestimmen. 9 / 22
10 Verwendung einer Generischen Klasse Bei der Verwendung der generischen Klasse wird ein Typ angegeben. Die Klasse ist damit auf diesen Typ (und ggf. Subklassen) festgelegt. Syntax Klassenname <Typangaben> Hierbei gelten die folgenden Regeln: Die Typangaben sind eine durch Komma getrennte Liste von Klassen (bzw. Interfaces oder Typparametern, die indirekt auf eine Klasse führen). Die Anzahl der Klassen muss mit der Anzahl der Typparameter übereinstimmen, sie werden in der angegebenen Reihenfolge zugeordnet. Eine Typangabe darf mehrfach vorkommen, sie wird dann mehreren Typparametern zugeordnet. Mit der Definition class Demo<T,U>{ ist z.b. erlaubt Demo<Integer,Integer>. 10 / 22
11 11 / 22 Programmierung mit Generischer Klasse Weitere Regeln bei der Verwendung generischer Klassen: Die angegenenen Typen werden nur bei der Compilierung zur Typprüfung verwendet. Das class-file enthält keine Angaben über die generischen Typangaben ( Type Erasure ). Es wird nur ein class-file für eine generische Klasse erzeugt, also nicht für jede vorkommende Typangabe eine spezifische Variante (im Gegensatz z.b. zu template-klassen in C++). Zur Kompatibilität mit älteren Programmen (vor Java 5) kann <Typangabe> auch entfallen. In dem Fall wird Object als Typ angenommen. Mit der Definition class Demo<T>{ ist z.b. erlaubt Demo d = new Demo(); Eine solche Mischung von generischem und nicht-generischem Code sollte möglichst vermieden werden!
12 Programmierung mit Generischer Klasse 12 / 22 class Speicher<T> { T o b j e c t ; void speichern ( T obj ) { o b j e c t = obj ; T laden ( ) { return o b j e c t ; / / Speicher erzeugen, s p e i c h e r t nur S t r i n g s Speicher<String > sp = new Speicher<String > ( ) ; / / etwas speichern... sp. speichern ( Hallo ) ; / /... und wieder laden, kein Typecast n o e t i g! S t r i n g s t = sp. laden ( ) ; / / der folgende Fehler wird vom Compiler entdeckt I n t e g e r i = ( I n t e g e r ) sp. laden ( ) ; / / f a l s c h e r Typ!
13 Programmierung mit Generischer Klasse 13 / 22 Die Verwendung von Subklassen ist erlaubt, z.b. bei Hüllklassen: / / Speicher f ü r b e l i e b i g e Zahltypen Speicher<Number> sn = new Speicher<Number> ( ) ; sn. speichern (new I n t e g e r ( 1 ) ) ; / / I n t e g e r sn. speichern ( 1 ) ; / / ebenso, automatische Konversion sn. speichern (new Double ( ) ) ; / / Double sn. speichern ( ) ; / / ebenso, automatische Konv. sn. speichern ( 111 ) ; / / Fehler, S t r i n g verboten Und zur Kompatibilität mit alten Programmen (vor Java 5): Speicher so = new Speicher ( ) ; / / Typ Object so. speichern ( Hallo ) ; so. speichern ( ) ; System. out. p r i n t l n ( so. laden ( ) ) ; / / 555
14 Programmierung mit Generischer Klasse, 2 Parameter 14 / 22 Beispiel mit 2 Parametern: class Demo<T, U> { T t ; U u ; Demo ( T t, U u ) { this. t = t ; this. u = u ; public S t r i n g t o S t r i n g ( ) { return t. t o S t r i n g ( ) + = + u. t o S t r i n g ( ) ;... Demo<String, Integer > s i = new Demo<String, Integer > ( Jahr, 2010); System. out. p r i n t l n ( s i ) ; / / Jahr = 2010
15 Gliederung 15 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4 Ergänzungen
16 16 / 22 Generische Methoden Bei Methoden und ggf. Konstruktoren sind ebenfalls generische Typparameter erlaubt. Bei der Definition der Methode: Typparameter vor dem Ergebnistyp. Bei der Verwendung einer Klassenmethode: Klassenname.<Typangabe> vor dem Methodennamen. Bei der Verwendung einer Instanzmethode: Instanzname.<Typangabe> vor dem Methodennamen. Oft kann diese Angabe entfallen und automatisch aus dem Typ der normalen aktuellen Parameter bestimmt werden.
17 Generische Klassenmethode 17 / 22 import java. u t i l. ; public class GenerischeFunktion { s t a t i c <T> void f u e l l e F e l d ( T wert, T [ ] f e l d ) { for ( i n t i =0; i <f e l d. l e n g t h ; i ++) f e l d [ i ] = wert ; public s t a t i c void main ( S t r i n g [ ] args ) { I n t e g e r [ ] f = new I n t e g e r [ 1 0 ] ; / / Klassenname i s t h i e r notwendig GenerischeFunktion. <Integer > f u e l l e F e l d ( 5, f ) / / Typangabe ( und dann auch Klassenname ) koennen / / o f t e n t f a l l e n, werden automatisch bestimmt f u e l l e F e l d ( 5, f ) ; System. out. p r i n t l n ( f [ 9 ] ) ;
18 Generische Instanzmethode import java. u t i l. ; public class GenerischeFunktion2 { <T> void f u e l l e F e l d ( T wert, T [ ] f e l d ) { for ( i n t i =0; i <f e l d. l e n g t h ; i ++) f e l d [ i ] = wert ; public s t a t i c void main ( S t r i n g [ ] args ) { I n t e g e r [ ] f = new I n t e g e r [ 1 0 ] ; GenerischeFunktion2 t f 2 = new GenerischeFunktion2 ( ) ; / / Instanzname i s t h i e r notwendig t f 2. <Integer > f u e l l e F e l d ( 5, f ) ; / / Typangabe ( aber n i c h t der Instanzname ) kann / / o f t e n t f a l l e n, wird automatisch bestimmt t f 2. f u e l l e F e l d ( 5, f ) ; System. out. p r i n t l n ( f [ 9 ] ) ; 18 / 22
19 Gliederung 19 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4 Ergänzungen
20 Ergänzung: Beschränkung der zulässigen Klassen Falls für den Typparameter T nur Subtypen einer Superklasse Sup erlaubt sein sollen, kann dies durch class Klassenname <T extends Sup> {... angegeben werden. Die gleiche Syntax gilt auch für die Implementierung von Interfaces (es wird hier also extends und nicht implements verwendet!). Sollen mehrere Interfaces implementiert werden, werden sie nicht mit Komma sondern mit & aufgelistet (das Komma trennt Typparameter). 20 / 22
21 Ergänzung: Vererbung bei generischer Klasse 21 / 22 Gegeben sei eine generische Klasse class Klasse<T>... Mit einer Subklasse Sub zu einer Superklasse Super ist trotzdem Klasse<Sub> keine Subklasse zu Klasse<Super> Damit ist z.b. folgendes Programstück fehlerhaft: / / D e f i n i t i o n generische Klasse class Klasse<T> { / / okay / / automatischer Typecast : Number n = new I n t e g e r ( 1 ) ; / / okay / / kein automatischer Typecast moeglich : Klasse<Number> kn = new Klasse<Integer > ( ) ; / / f a l s c h / / auch kein e x p l i z i t e r Typecast e r l a u b t : Klasse<Number> kn = ( Klasse<Number>) new Klasse<Integer > ( ) ; / / f a l s c h
22 Ergänzung: Wildcard 22 / 22 Bei der Verwendung generischer Typen kann das Wildcard-Zeichen? eingesetzt werden. Hier gibt es Einschränkungen bei der Verwendung, da der Typ unbekannt ist. / / D e f i n i t i o n generische Klasse class Klasse<T> { / / okay / / der generische Typparameter i s t e i n e unbekannte / / Klasse, d i e Subklasse von Number i s t Klasse <? extends Number> k1 ; / / der generische Typparameter i s t e i n e unbekannte / / Klasse, die Subklasse von Object i s t / / ( also jede b e l i e b i g e ) Klasse<?> k2 ; / / der generische Typparameter i s t e i n e unbekannte / / Klasse, d i e Superklasse von Number i s t Klasse <? super Number> k3 ;
Einstieg in die Informatik mit Java
1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren
MehrEinstieg in die Informatik mit Java
1 / 28 Einstieg in die Informatik mit Java Variablenarten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 28 1 Überblick: Variablenarten 2 Lokale Variablen 3 Lokale Variablen
MehrEinstieg in die Informatik mit Java
1 / 24 Einstieg in die Informatik mit Java Variablenarten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 24 1 Lokale Variablen 2 Lokale Variablen in Blocks 3 Lokale Variablen
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
MehrEinstieg in die Informatik mit Java
1 / 18 Einstieg in die Informatik mit Java Klassenvariablen, Klassenmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 18 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden
MehrEinstieg in die Informatik mit Java
1 / 13 Einstieg in die Informatik mit Java Schnittstellen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 13 1 Einführung 2 Definition einer Schnittstelle 3 Implementierung
MehrEinstieg in die Informatik mit Java
1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung
MehrEinstieg in die Informatik mit Java
1 / 27 Einstieg in die Informatik mit Java Methoden / Funktionen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick 2 Zweck von Methoden 3 Methodendefinition
MehrVererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.
Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1
MehrEinstieg in die Informatik mit Java
1 / 39 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 39 1 Überblick:
MehrVererbung, Polymorphie
Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08
MehrEinstieg 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
MehrEinstieg in die Informatik mit Java
1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen
MehrEinstieg in die Informatik mit Java
1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition
MehrKlassenvariablen, Klassenmethoden
Einstieg in die Informatik mit Java, Vorlesung vom 11.12.07 Übersicht 1 Klassenmethoden 2 Besonderheiten von Klassenmethoden 3 Aufruf einer Klassenmethode 4 Hauptprogrammparameter 5 Rekursion Klassenmethoden
MehrEinstieg in die Informatik mit Java
1 / 26 Einstieg in die Informatik mit Java Methoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Methoden 2 Methodendefinition 3 Parameterübergabe, Methodenaufruf
MehrEinstieg in die Informatik mit Java
1 / 24 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 24 1 Klassen als Datenstruktur 2 Vereinbarung von
MehrEinstieg in die Informatik mit Java
1 / 17 Einstieg in die Informatik mit Java Methoden und Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 17 1 Überblick 2 Felder als Parameter bei Methoden 3 Feld
MehrEinstieg in die Informatik mit Java
1 / 21 Einstieg in die Informatik mit Java Felder, eindimensional Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 21 1 Überblick: Was sind Felder? 2 Vereinbarung von Feldern
MehrRepetitorium 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
MehrInnere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java
Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11
MehrObjektorientierte Programmierung und Klassen
Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16.5.07 G. Bohlender (IANM UNI Karlsruhe) OOP
MehrTag 7 Repetitorium Informatik (Java)
Tag 7 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium
MehrExkurs: ANONYME KLASSEN. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm
Exkurs: ANONYME KLASSEN Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Anonyme Klassen Eigenschaften 1 Häufigste Anwendung lokaler Klassen: anonyme Definition. Klasse erhält keinen eigenen
MehrEinstieg in die Informatik mit Java
1 / 26 Einstieg in die Informatik mit Java Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Was sind Felder? 2 Vereinbarung von Feldern 3 Erzeugen von Feldern
MehrSchlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:
Musterlösung Übung 7 Aufgabe 1 Sehen wir uns zu allererst das gegebene Forth Programm an: 0 3 new - list constant list1 list1 5 new - list constant list2 list1 6 new - list constant list3 list2 2 new -
MehrProf. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen
Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Anonyme Klassen
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
MehrMethoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom
Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon
MehrEinstieg in die Informatik mit Java
1 / 26 Einstieg in die Informatik mit Java Felder, mehrdimensional Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Überblick: mehrdimensionale Felder 2 Vereinbarung
MehrKlassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:
Klassenvariablen Klassenmethoden Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit
MehrPhilipp Güttler Progwerkstatt. Enums, Interfaces und Generics
Philipp Güttler 18.11.2008 Progwerkstatt Enums, Interfaces und Generics Seite 2 Enums Enum Typen Definition komplexer Datentyp, der festen Menge von Konstanten enthält Information der Reihenfolge der Konstanten
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte
Mehr3. Klassen Statische Komponenten einer Klasse. Klassenvariablen
Klassenvariablen Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit aller Studentenobjekte.
MehrEinstieg in die Informatik mit Java
1 / 13 Einstieg in die Informatik mit Java Zeichenketten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 13 1 Zeichenketten 2 Erzeugen von Zeichenketten 3 Operatoren für
MehrKlassen 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
MehrKlassen als Datenstrukturen
Einstieg in die Informatik mit Java, Vorlesung vom 27.11.07 Übersicht 1 Klassen als Datenstruktur 2 Vereinbarung von Klassen 3 Erzeugen von Objekten - Instanzen einer Klasse 4 Zugriff auf Attribute 5 Initialisierung
MehrInstitut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke
Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen
MehrObjektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)
Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester
MehrEinstieg in die Informatik mit Java
1 / 15 Einstieg in die Informatik mit Java Zeichenketten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick: Zeichenketten 2 Zeichenketten 3 Erzeugen von Zeichenketten
MehrProgrammieren in Java
Programmieren in Java Vorlesung 06: Das Visitor Pattern Prof. Dr. Peter Thiemann (vertreten durch Luminous Fennell) Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg)
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
MehrEinstieg in die Informatik mit Java
1 / 15 Einstieg in die Informatik mit Java Collections Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick Collections 2 Hierarchie von Collections 3 Verwendung
MehrEinstieg in die Informatik mit Java
1 / 17 Einstieg in die Informatik mit Java String Tokenizer Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 17 1 Überblick Tokenizer 2 StringTokenizer 3 Verwendung von String.split
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0
9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung
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
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
MehrKapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen
Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18
MehrNeben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter
Kapitel 1 Der vierte Tag 1.1 Vererbung Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter Sprachen. Unter Vererbung versteht man die Möglichkeit, Eigenschaften vorhandener
MehrKapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik
Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute
MehrJava für Bauingenieure
1 JAVA für Bauingenieure Alexander Karakas SS 2008 Objektorientierte Programmierung 30.04.2008, CIP Pool Objektorientierte Programmierung Übersicht 2 Klasse und Objekt Polymorphismus und Vererbung Klassen
MehrProgrammiertechnik Vererbung & Polymorphismus für Fortgeschrittene
Programmiertechnik Vererbung & Polymorphismus für Fortgeschrittene Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Motivation Aufgabe: Finanzbuchhaltungssystem für internationale Hotelkette Problem:
MehrImplementieren von Klassen
Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und
MehrObjektorientierte Programmierung. Kapitel 14: Interfaces
14. Interfaces 1/26 Objektorientierte Programmierung Kapitel 14: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2013/14 http://www.informatik.uni-halle.de/ brass/oop13/
MehrTag 8 Repetitorium Informatik (Java)
Tag 8 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium
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
MehrII.4.5 Generische Datentypen - 1 -
1. Unterklassen und Vererbung 2. Abstrakte Klassen und Interfaces 3. Modularität und Pakete 4. Ausnahmen (Exceptions) 5. Generische Datentypen 6. Collections II.4.5 Generische Datentypen - 1 - Ähnliche
MehrPhilipp Güttler Progwerkstatt Letzte Änderung: Enums, Interfaces, Generics und Threads
Philipp Güttler 18.11.2008 Progwerkstatt Letzte Änderung: 09.12.2009 Enums, Interfaces, Generics und Threads Seite 2 Enums Enums, Interfaces und Generics 17.11.2008 Enum Typen komplexer Datentyp, der festen
MehrInformatik II Übung 06. Benjamin Hepp 5 April 2017
Informatik II Übung 06 Benjamin Hepp benjamin.hepp@inf.ethz.ch 5 April 2017 Nachbesprechung U5 5 April 2017 Informatik II - Übung 01 2 Nachbesprechung U5 1. Einfach verkettete Listen Keine Probleme 2.
Mehr1 Abstrakte Klassen, finale Klassen und Interfaces
1 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,
MehrProf. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Schnittstellen, Vererbung & Polymorphismus für Fortgeschrittene
Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Schnittstellen, Vererbung & Polymorphismus für Fortgeschrittene Motivation Aufgabe: Finanzbuchhaltungssystem für internationale Hotelkette
MehrProgrammieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik
Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen
MehrEinstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
Mehr4. Vererbung. Idee der Vererbung. Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende Klassen vor:
4. Vererbung Grundlagen der Vererbung 4. Vererbung 4. Vererbung Grundlagen der Vererbung Idee der Vererbung Wir wollen ein Verwaltungsprogramm für CDs und Videos entwickeln. Wir stellen uns dazu folgende
MehrC++ Klassen weitere Funktionen
C++ Klassen weitere Funktionen Übersicht static Elemente const Elemente Zusätzliches zu Konstruktoren Kopier-Konstruktor Konvertierung-Konstruktor Initialisierungslisten Friend Funktionen 2 Statische Klassenkomponenten
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
MehrObjektorientierte Programmierung Studiengang Medieninformatik
Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 1 15.03.2017 Objektorientierte Programmierung (Studiengang Medieninformatik) Form: Prüfung:
MehrProgrammieren in Java -Eingangstest-
Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit
MehrEINFÜHRUNG IN DIE PROGRAMMIERUNG
EINFÜHRUNG IN DIE PROGRAMMIERUNG OBJEKTORIENTIERTES PROGRAMMIEREN Tobias Witt 25.03.2014 10:30-12:00 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Aber in den Übungen! Linux, OS X http://hhu-fscs.de/linux-install-party/
MehrKapitel 8. Generische Klassen
Kapitel 8 Generische Klassen Ziel: Zusammensetzen von Software-Bausteinen Oft probiert, nie erreicht! sprachliche Mittel fehlten In C++, ADA, Eiffel, Java: Klassen, die mit anderen Klassen parametrisiert
Mehr13. Generics. Prof. Dr. Harald Gall. Institut für Informatik Universität Zürich.
13. Generics Prof. Dr. Harald Gall Institut für Informatik Universität Zürich http://seal.ifi.uzh.ch Lernziele! Wie kann man mehr Flexibilität hinsichtlich der Typen erreichen?! Wie kann man Typen als
Mehr13. Generics. Lernziele. Motivation. Prof. Dr. Harald Gall. Institut für Informatik Universität Zürich.
13. Generics Prof. Dr. Harald Gall Institut für Informatik Universität Zürich http://seal.ifi.uzh.ch Lernziele! Wie kann man mehr Flexibilität hinsichtlich der Typen erreichen?! Wie kann man Typen als
MehrJava I Vorlesung Generics und Packages
Java I Vorlesung 9 Generics und Packages 21.6.2004 Generics Packages Qualifizierte Namen Mehr zu Zugriffsklassen Generics (Java 1.5) Die Klassen im Java Collections Framework sind mit dem Typ ihrer Elemente
MehrEinfache Liste: Ein Stapel (Stack) Ansatz. Schaubild. Vorlesung 1. Handout S. 2. Die einfachste Form einer Liste ist ein Stapel (stack).
Programmieren I Martin Schultheiß Hochschule Darmstadt Sommersemester 2011 1 / 64 2 / 64 Motivation Hauptteil dieser Vorlesung sind die so genannten. Zur Motivation (und als Vorbereitung der Datencontainer-Klassen
MehrFragen zur OOP in Java
- 1 - Inhalt Was bedeutet OOP?... 2 Was versteht man unter einer Klasse?... 2 Wie nennt man die Mitglieder einer Klasse?... 2 Wie erzeugt man Objekte?... 2 Wie greife ich auf Member einer Klasse zu?...
MehrZeichenketten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java. 16.
Zeichenketten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16. Mai 2007 G. Bohlender (IANM UNI Karlsruhe) Zeichenketten 16. Mai 2007 1
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
MehrC++ - Objektorientierte Programmierung Konstruktoren und Destruktoren
C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue
MehrInfo B VL 11: Innere Klassen/Collections
Info B VL 11: Innere Klassen/Collections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 11: Innere Klassen/Collections
MehrTafelübung 07 Algorithmen und Datenstrukturen
Tafelübung 07 Algorithmen und Datenstrukturen Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Übersicht Vererbung Grundlagen Abstrakte
MehrArten von Klassen-Beziehungen
Arten von Klassen-Beziehungen Untertypbeziehung: Ersetzbarkeit Vererbung von Code aus Oberklasse irrelevant Vererbungsbeziehung: Klasse entsteht durch Abänderung anderer Klassen Ersetzbarkeit irrelevant
MehrInformatik II. Woche 13, Giuseppe Accaputo
Informatik II Woche 13, 30.03.2017 Giuseppe Accaputo g@accaputo.ch 1 Programm für heute Nachbesprechung Self-Assessment Test Nachbesprechung Übung 5 Java: Objektorientierte Programmierung Klassen und Objekte
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
MehrWeitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax
Weitere Beispiele Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts public interface Funktion { boolean istimdefbereich(double x); double wert(double x); String gibbeschreibung(); public interface
MehrAlgorithmen und Datenstrukturen II
Algorithmen und Datenstrukturen II in JAVA D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2009, 31. März 2009, c 2009 D.Rösner
MehrEnumerations und innere Klassen
Enumerations und innere Klassen Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung
MehrFelder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich.
Felder Felder - Arrays Variable gleichen Types können in Feldern (array) zusammengefasst werden. Typ[] feldname; oder Typ feldname[]; dabei kann unter Benutzung des new-operators gleich die Dimension zugewiesen
Mehr2. Unterprogramme und Methoden
2. Unterprogramme und Methoden Durch Methoden wird ausführbarer Code unter einem Namen zusammengefasst. Dieser Code kann unter Verwendung von sogenannten Parametern formuliert sein, denen später beim Aufruf
MehrInterfaces und Generics
Algorithmen und Datenstrukturen Wintersemester 2012/13 21. Vorlesung Interfaces und Generics Jan-Henrik Haunert Lehrstuhl für Informatik I Übersicht Liste und InsertionSort für Punkte für Objekte beliebiger
Mehr9. Kapitel GENERICS. Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm
9. Kapitel GENERICS Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Übersicht 1 1. Programmstrukturierung mit Paketen (packages) 2. Vererbung 3. Abstrakte Klassen und Interfaces 4. Ausnahmebehandlung
MehrAlgorithmen und Datenstrukturen. Übersicht. Interfaces und Generics. InsertionSort für Punkte. InsertionSort für Punkte
Algorithmen und Datenstrukturen Wintersemester 2012/13 21. Vorlesung Übersicht Liste und InsertionSort für e für Objekte beliebiger Klassen für Objekte von Klassen, die ein(e) Nutzer(in) festlegen kann
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für
MehrSoftware Entwicklung 1. Subtyping revisited. Subtypbildung in Java: Klassen I. Subtyping und Vererbung I. Annette Bieniusa / Arnd Poetzsch-Heffter
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Subtyping revisited AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 40 Subtyping und Vererbung
MehrC++ - Objektorientierte Programmierung Vererbung
C++ - Objektorientierte Programmierung Vererbung Personen Kunden Mitarbeiter Verwaltung Verkäufer Leibniz Universität IT Services Anja Aue Vererbung Definition von Klassen auf Basis von bestehenden Klassen.
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrPolymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces
Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 / 20 Polymorphie/Späte Bindung Abstrakte Klassen Interfaces 2 / 20 Definition: Polymorphie Der Begriff Polymorphie (manchmal
MehrGebundene Typparameter
Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte
MehrProbleme ohne generische Typen
Generics seit Java1.5 SSJ Kapitel 15 Probleme ohne generische Typen Klassen, die mit Objekten verschiedenen Typs arbeiten können class List { Object[ ] data = ; void add(object x) { Object remove() { Probleme
Mehr