Programmieren in Java

Ähnliche Dokumente
Programmieren in Java

Programmieren in Java

Programmieren in Java

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen

Programmieren in Java

II.4.2 Abstrakte Klassen und Interfaces - 1 -

Programmieren in Java

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Programmieren in Java

Programmieren in Java

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

Heute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.

II.4.5 Generische Datentypen - 1 -

3. Übungsbesprechung Programmkonstruktion

// compiliert, aber Programmabbruch zur Laufzeit: einesuppe = ((EßbarerPilz)einPilz).kochen();

Polymorphie/Späte Bindung Abstrakte Klassen Interfaces. Polymorphie/Späte Bindung Abstrakte Klassen Interfaces

Faulheit professionell: Fertige Datenbehälter. Das Java-Collections-Framework Typsicherheit Generische Klassen

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur

Programmierkurs Java

Programmierzertifikat Objekt-Orientierte Programmierung mit Java

Vorlesung 08: Vergleichen und Schranken. Peter Thiemann SS 2011

Klausur: Java (Liste P)

Vorkurs Informatik WiSe 15/16

Einführung in die Programmierung mit Java

Software Entwicklung 1

Programmieren 2 16 Java Collections und Generizität

ListElement (E i n f o, ListElement<E> prev, ListElement<E> next ) {

ALP II Dynamische Datenmengen

Propädeutikum Programmierung in der Bioinformatik

Programmiermethodik 2. Klausur Lösung

Informatik II Übung 06. Benjamin Hepp 5 April 2017

II.4.1 Unterklassen und Vererbung - 1 -

II.4.1 Unterklassen und Vererbung - 1 -

Objektorientierte Programmierung Studiengang Medieninformatik

II.4.1 Unterklassen und Vererbung - 1 -

Teil V. Generics und Kollektionen in Java

Technische Universität München WiSe 2018/19 Fakultät für Informatik Übungsblatt 6 Dr. Ch. Herzog 26. November 2018

Kapitel 5: Interfaces

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

II.4.4 Exceptions - 1 -

Software Entwicklung 1

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur

Algorithmen und Datenstrukturen II

Informatik II. Übungsstunde 6. Distributed Systems Group, ETH Zürich

Client-Server-Beziehungen

Einführung in die Programmierung mit Java

Objektorientierte Programmierung

Abschlussklausur Lösung. Bitte in Druckschrift leserlich ausfüllen!

Objektorientierte Programmierung

Programmieren in Java

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur

Probeklausur: Programmierung WS04/05

Programmieren in Java

Die Schnittstelle Comparable

Programmierzertifikat Objekt-Orientierte Programmierung mit Java

Kapitel 5: Iterierbare Container

14. Java Objektorientierung. Klassen, Vererbung, Kapselung

Java Grundlagen 2 - OOP

Programmierparadigmen und Sprachen

Aufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 {

Funktionales Programmieren mit objektorientierten Sprachen

Programmieren in Java

Neuere Sprachelemente in Java

Abschnitt 10: Typisierte Klassen

Programmieren in Java

Polymorphie. 15. Java Objektorientierung II

Einstieg in die Informatik mit Java

II.3.1 Rekursive Algorithmen - 1 -

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017

12 Abstrakte Klassen, finale Klassen und Interfaces

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

Polymorphie. 15. Java Objektorientierung II

Institut für Programmierung und Reaktive Systeme 24. April Programmieren II. 10. Übungsblatt

Java Spickzettel von Panjutorials.de

Generisches Programmieren. Generisches Programmieren

Informatik II Musterlösung

Probeklausur Java Einführung in die Informatik. Wintersemester 2017/2018

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

14. Java Objektorientierung

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?

Listing 1: Cowboy. Listing 2: Woody

Info B VL 11: Innere Klassen/Collections

Informatik II - Tutorium 6

EINFÜHRUNG IN DIE PROGRAMMIERUNG

Probeklausur zur Vorlesung

Ersetzbarkeit und Verhalten

II.4.4 Exceptions - 1 -

Einführung in die Informatik

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)

Übungsstunde 9. Einführung in die Programmierung I

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Java für Bauingenieure

Klassen und ihre Beziehungen III: Mehrfache Vererbung, Rollen, Schnittstellen und Pakete

Transkript:

Programmieren in Java Vorlesung 11: Generic Methods Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2017 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 15

Inhalt Lösungsbeispiele List Editor Sessions Generische Methoden Fragen Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 2 / 15

Lösungsbeispiele List Editor Lösungsbeispiel: w09-1 list-editor Stichworte Framework Programmierung Abstrakte Klassen und Vererbung Template Methoden Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 3 / 15

Lösungsbeispiele List Editor Demo Time Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 4 / 15

Lösungsbeispiele Sessions Lösungsbeispiel: w09-2 sessions Stichworte Vereinigung von Klassen Rekursive Klassen Interfaces Offizieller Name : Composite Pattern Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 5 / 15

Lösungsbeispiele Sessions Demo Time Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 6 / 15

Generische Methoden Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 7 / 15

Typvariablen in Signaturen Nicht nur Klassen und Interfaces können generisch sein Auch Methoden können generische Parameter haben Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 8 / 15

Beispiel: Generische Auswahl 1 class Selector { 2 boolean state = false; 3 public boolean flip() { 4 return (state =!state); 5 } 6 / 7 Return one of the arguments dependening on the state. 8 / 9 public <T> T choose(t x, T y) { 10 return (state? x : y); 11 } 12 } Bemerkung <T> vor dem Rückgabetyp deklariert T als Typvariable für die Signatur und den Rumpf der Methode. Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 9 / 15

Beispiel: Zählen Aufgabe (noch nicht generisch) Zähle die Anzahl der Vorkommen eines Strings in einem Array von Strings. 1 public static int countoccurrences(string goal, String[] subjects) { 2 int count = 0; 3 for (String s : subjects) { 4 if (Objects.equals (goal, s)) { 5 count++; 6 } 7 } 8 return count; 9 } Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 10 / 15

Beispiel: Zählen Aufgabe (noch nicht generisch) Zähle die Anzahl der Vorkommen eines Strings in einem Array von Strings. 1 public static int countoccurrences(string goal, String[] subjects) { 2 int count = 0; 3 for (String s : subjects) { 4 if (Objects.equals (goal, s)) { 5 count++; 6 } 7 } 8 return count; 9 } Bemerkung Nichts an diesem Code ist String-spezifisch! Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 10 / 15

Beispiel: Generisches Zählen Aufgabe Zähle die Anzahl der Vorkommen eines Objekts in einem Array von Objekten gleichen Typs. 1 public static <T> int countoccurrences(t goal, T[] subjects) { 2 int count = 0; 3 for (T s : subjects) { 4 if (Objects.equals (goal, s)) { 5 count++; 6 } 7 } 8 return count; 9 } Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 11 / 15

Beispiel: Minimum von String Aufgabe (noch nicht generisch) Bestimme das Minimum einer nicht-leeren Collection von Strings. 1 public static String minstring(collection<string> subjects) { 2 if (subjects.size() == 0) { throw new IllegalArgumentException(); } 3 String minval; 4 boolean first = true; 5 for (String s : subjects) { 6 if (first) { 7 minval = s; 8 first = false; 9 } else if (minval.compareto(s) > 0) { 10 minval = s; 11 } 12 } 13 return minval; 14 } Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 12 / 15

Beispiel: Minimum von Comparable Aufgabe Bestimme das Minimum einer nicht-leeren Collection von Objekten vom Typ T, die miteinander Comparable sind: T extends Comparable<T>. 1 public static <T extends Comparable<T>> T min(collection<t> subjects) { 2 if (subjects.size() == 0) { throw new IllegalArgumentException(); } 3 T minval; 4 boolean first = true; 5 for (T s : subjects) { 6 if (first) { 7 minval = s; 8 first = false; 9 } else if (minval.compareto(s) > 0) { 10 minval = s; 11 } 12 } 13 return minval; 14 } Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 13 / 15

Beispiel: Minimum (alternativ mit Iterator) 1 public static <T extends Comparable<T>> 2 T min(collection<t> subjects) { 3 Iterator<T> iter = subject.iterator(); 4 if (!iterator.hasnext()) { throw new IllegalArgumentException(); } 5 T minval = iterator.next(); 6 while(iterator.hasnext()) { 7 T s = iterator.next(); 8 if (minval.compareto(s) > 0) { 9 minval = s; 10 } 11 } 12 return minval; 13 } Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 14 / 15

Fragen Fragen? Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 15 / 15