• Keine Ergebnisse gefunden

Einführung in die Programmierung

N/A
N/A
Protected

Academic year: 2022

Aktie "Einführung in die Programmierung"

Copied!
15
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Einführung in die Programmierung

by André Karge

Übung - Polymorphie Teil 1

12. Dezember 2018 Einführung in die Programmierung | WS18/19 | André Karge 1/15

(2)

letzte Woche

Listen

Stack

Queue

12. Dezember 2018 Einführung in die Programmierung | WS18/19 | André Karge 2/15

(3)

diese Woche

Besprechung Übungsblatt 7

Methoden Überladen

Generics

Besprechung Übungsblatt 8

12. Dezember 2018 Einführung in die Programmierung | WS18/19 | André Karge 3/15

(4)

Übungsblatt 7

12. Dezember 2018 Einführung in die Programmierung | WS18/19 | André Karge 4/15

(5)

Übungsblatt 7

Aufgaben 1-2 Code Beispiel

12. Dezember 2018 Einführung in die Programmierung | WS18/19 | André Karge 5/15

(6)

Polymorphie

12. Dezember 2018 Einführung in die Programmierung | WS18/19 | André Karge 6/15

(7)

Überladene Methoden - Insel 2.8.10

Beschreibung

Polymorphie = Vielseitigkeit

erstes Beispiel: Überladen von Methoden

schon gesehen: Methoden können selben Bezeichner haben, wenn Signatur unterschiedlich

public class Poly {

public static void morph() { System.out.println("morph");

}

public static void morph(String s) { // selber Name, andere Signatur (String) System.out.println(s);

}

public static void morph(String s, int i) { // selber Name, andere Signatur (String, int) System.out.println(s + i);

}

public static void morph(int i) { // selber Name, andere Signatur (int) System.out.println(i + 2);

} // ...

}

12. Dezember 2018 Einführung in die Programmierung | WS18/19 | André Karge 7/15

(8)

Überladene Methoden - Insel 2.8.10

beim call der Methoden kommt es darauf an, welchen Typ die Parameter haben

Poly.morph(); // Eingabe: nichts - Ausgabe: morph

Poly.morph(1); // Eingabe: int - Ausgabe: 3

Poly.morph("hi"); // Eingabe: String - Ausgabe: hi

Poly.morph("the cake is a lie ", 42); // Eingabe: String,int - Ausgabe: the cake is a lie 42

12. Dezember 2018 Einführung in die Programmierung | WS18/19 | André Karge 8/15

(9)

Generics

12. Dezember 2018 Einführung in die Programmierung | WS18/19 | André Karge 9/15

(10)

Generics - Insel 7

Beschreibung

Generics sind Platzhalter im Programmcode

Stichwort: <Typ>

besonders Hilfreich für Container

Ermöglicht es uns die selbe Implementation eines Containers für unterschiedliche Typen zu verwenden

Beispiel von letzter Woche: einfach verkettete Liste für integer

was, wenn wir damit unterschiedliche Komplexe Datentypen speichern wollen?

12. Dezember 2018 Einführung in die Programmierung | WS18/19 | André Karge 10/15

(11)

Generics - Insel 7

public class Node<T> { // wir geben an, dass die Klasse Node einen Generischen Typen T verwendet private T data; // data ist vom Typ T (unspezifiziert)

private Node<T> next; // Referenz zum folgenden Element

public Node(T data) { // Argument ist vom Typ T (unspezifiziert) this.data = data;

this.next = null;

} // ...

}

public class List<T> { // wir geben an, dass die Klasse Node einen Generischen Typen T verwendet private Node<T> first;

private Node<T> last;

public List() { this.first = null;

this.last = null;

} // ...

} // ...

List<Integer> myList = new List<Integer>(); // Konkrete Spezifikation des generischen Typ (Wrapper)

12. Dezember 2018 Einführung in die Programmierung | WS18/19 | André Karge 11/15

(12)

Generics - Insel 7

Wrapper

Schon aus der Vorlesung bekannt: wir können keine Primitiven Datentypen als Typparameter verwenden

Daher: Wrapper

int Integer, float Float, usw.

Wichtig

Man kann sich bei Generics merken: Man nutzt Platzhalter (<Typ>) an bestimmten Stellen im Code, den man für verschiedene Typen nutzen möchte

Bei der Nutzung beschreibt man diesen Platzhalter mit einem konkreten typen (List<Integer>)

12. Dezember 2018 Einführung in die Programmierung | WS18/19 | André Karge 12/15

(13)

Generics - Insel 7

Übungsaufgabe (15 min)

1. Schreiben Sie Ihre einfach verkettete Liste von letzter Woche um, dass sie anstelle von integer einen Generic Datentypen abspeichert

2. Testen sie diese generische Liste mit den Typen Integer, String und Float

12. Dezember 2018 Einführung in die Programmierung | WS18/19 | André Karge 13/15

(14)

Übungsblatt 08

Anmerkung

Der Abgabetermin von Übungsblatt 08 wird vom 17.12.2018 11:00

auf den 07.01.2019 11:00

verschoben!

12. Dezember 2018 Einführung in die Programmierung | WS18/19 | André Karge 14/15

(15)

Fragen?

12. Dezember 2018 Einführung in die Programmierung | WS18/19 | André Karge 15/15

Referenzen

ÄHNLICHE DOKUMENTE

§ Diese Methode kann für ArrayList und LinkedList Examplare verwendet werden § Welche Klasse ist

containsAll( coll ) returns true if this set contains every element from given set equals( set ) returns true if given other set contains the same elements iterator() returns

set( index , value ) replaces value at given index with given value size() returns the number of elements in list?. toString() returns a string representation of the list such as

Implementieren Sie eine Zahlenmenge mit Hilfe einer linearen Liste (Hinweise: Ein Menge enthält niemals mehrere Exemplare der

Die Klasse soll folgende Methoden haben: search prüft ob eine Zahl vorhanden ist, delete entfernt eine Zahl, size liefert die Anzahl der Zahlen, und iterator liefert einen Iterator

Die Schnittstelle ist durch die abstrak- te Klasse List gegeben (für Methodenbeschreibungen siehe Java-Dokumentation in der Vorgabedatei).

Implementieren Sie eine doppelt verkettete Liste für Objekte in der Klasse ​ LinkedList sowie einen List Iterator in der Klasse ​ LinkedListIterator ​.. Die Schnittstellen

Die Schnittstellen sind durch die abstrakten Klassen ​ List ​ und Iterator ​ gegeben (für Methodenbeschreibungen siehe Java-Dokumentation in dem Vorgabeprojekt).. ● Fügen Sie