• Keine Ergebnisse gefunden

Einführung in die Programmierung

N/A
N/A
Protected

Academic year: 2022

Aktie "Einführung in die Programmierung"

Copied!
16
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Einführung in die Programmierung

by André Karge

Übung - Stack, Queue, Generics

19. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 1/16

(2)

Heute

Stack

Queue

Polymorphie

Einführung in die Programmierung | WS19/20 | André Karge 2/16

(3)

Stack

19. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 3/16

(4)

Stack

Beschreibung

Liste mit begrenzter Funktion

wir haben in Stack immer nur Zugriff Last Element

Hinzufügen und Entfernen arbeitet immer nur mit dem letzten Element

LIFO Prinzip (Last In First Out)

https://techwelkin.com/differences-between-stack-and-queue

Einführung in die Programmierung | WS19/20 | André Karge 4/16

(5)

Stack

Beispiel

public class Stack {

private Node top; // Link zum obersten Stack Element private int size;

public Stack() { this.top = null;

this.size = 0;

}

public void push(Node n) { if (this.top == null) {

this.top = n; // Referenz speichern }

else {

n.setPrev(this.top); // Stackinterner Link zum vorher aktuellsten Element this.top = n; // Stackinterner Link zum aktuellsten Element

}

this.size++;

} //...

}

19. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 5/16

(6)

Queue

Einführung in die Programmierung | WS19/20 | André Karge 6/16

(7)

Queue

Beschreibung

Wieder eine spezielle Form einer Liste

push() und pop() haben hier andere Funktionen

enqueue(): fügt ein Element von links der Queue hinzu

dequeue(): entfernt ein Element am rechten Ende der Queue

Funktionsweise: FIFO (First In First Out)

https://techwelkin.com/differences-between-stack-and-queue

19. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 7/16

(8)

Polymorphie - Überladene Methoden

Einführung in die Programmierung | WS19/20 | André Karge 8/16

(9)

Ü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);

} }

19. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 9/16

(10)

Ü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

Einführung in die Programmierung | WS19/20 | André Karge 10/16

(11)

Polymorphie - Generics

19. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 11/16

(12)

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: einfach verkettete Liste für integer

was, wenn wir damit unterschiedliche Komplexe Datentypen speichern wollen?

Einführung in die Programmierung | WS19/20 | André Karge 12/16

(13)

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)

19. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 13/16

(14)

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>)

Einführung in die Programmierung | WS19/20 | André Karge 14/16

(15)

Generics - Insel 7

Übungsaufgabe (15 min)

1. Schreiben Sie eine einfach verkettete Liste in der Form, dass sie anstelle von integer einen Generic Datentypen abspeichern kann

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

19. Dezember 2019 Einführung in die Programmierung | WS19/20 | André Karge 15/16

(16)

Fragen?

Einführung in die Programmierung | WS19/20 | André Karge 16/16

Referenzen

ÄHNLICHE DOKUMENTE

In einem solchen Falle wird eben der blinde Versuch mit und ohne Mariottesche Flasche noch einen Gewichtszuwachs bis etwa zu 0,03—0,05 mg aufweisen, die im übrigen korrekt

Bei einer auch in Dunkelstellung befindlichen anderen Platte (Fig. 412) geht eine Schwingungsrichtung parallel zu der langen Kante y; die zweite Schwingungsrichtung steht also auf

Eine starre Verbindung ist der durch Zahnräder vorzuziehen, wenn auch dann die Drehung der Nicols nicht um volle 3600 geschehen kann;.. Zahnräder bekommen leicht toten Gang, so daß

Das Schwefeltetrachlorid SC]4 erhält man durch Einwirkung von Chlor auf Schwefel bei ‚_250. Die Verbindung SzClz, das gewöhnliche Sc hwe felch 1 or ür, bisweilen auch

Rubidiums sind weniger löslich als die entsprechenden Kalisalze, was eine Trennung des Kaliums und Rubidiums durch fraktionierte Kristallisation der Salze gestattet..

Das Papier, auf dem anfangs kein Bild sichtbar ist, wird alsdann in Rhodankaliumlösung gebadet, hierbei schlägt sich weifses Kupferrhodaniir an allen vom Licht getroffenen,

rend einer halben Minute in ziemlich warmes Wasser getaucht,- sofort wird sich mit der gröfsten Leichtigkeit das Papier vonder Collodion- schiebt (die das Bild in sich

die Entfernung des Originals (Negativ) sowohl als die der Collodionplatte gleich dem Doppelten der Brennweite. Fiir Vergröfserungen ist; die Entfernung des Originals kleiner als