Tutorium 5 - Programmieren Grischa Liebel Uni Karlsruhe (TH) Tutorium 11
1 Einleitung 2 Abschlussaufgaben 3 Vorlesungsstoff 4 Ergänzungen zum Vorlesungsstoff Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 2 / 21
Übersicht Einleitung 1 Einleitung 2 Abschlussaufgaben 3 Vorlesungsstoff 4 Ergänzungen zum Vorlesungsstoff Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 3 / 21
Einleitung Prüfungsanmeldung Abschlussaufgaben Anmeldeschluss: 22.1.09 Abmeldeschluss: 22.1.09 Anmeldungsstand Freitag: 70 Studenten Nach Anmeldeschluss ist die Anmeldung auch wirklich vorbei, keine Sonderregelungen! Vorlesungsschein Anmeldeschluss: 13.2.09 Abmeldeschluss: 20.2.09 Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 4 / 21
Einleitung Punktestand Punktestände der Übungsblätter wurden rumgeschickt Wer nichts bekommen hat, es aber wissen will nach dem Tutorium Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 5 / 21
Fragerunde Einleitung Was ist eine Utility-Class Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 6 / 21
Einleitung Fragerunde Was ist eine Utility-Class Kein eigener Zustand final, alle Methoden static, Konstruktor private Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 6 / 21
Fragerunde Einleitung Wie funktioniert Divide and Conquer? Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 7 / 21
Einleitung Fragerunde Wie funktioniert Divide and Conquer? Problem wird in Teilprobleme zerlegt; diese werden gelöst und die Gesamtlösung aus den Teillösungen zusammengesetzt Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 7 / 21
Übersicht Abschlussaufgaben 1 Einleitung 2 Abschlussaufgaben 3 Vorlesungsstoff 4 Ergänzungen zum Vorlesungsstoff Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 8 / 21
Abschlussaufgaben Notenänderung: Statt einem C im Schnitt, wird nun ein D im Schnitt benötigt Sind seit dem Wochenende freigegeben Nicht sehr einfach, dafür aber sehr ausführlich und präzise beschrieben Literaturhinweis: Thomas H. Cormen - Introduction to Algorithms Kap. 33.4 - Finding the closest pair of points Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 9 / 21
Abschlussaufgaben Haltet euch genau an die Vorgaben der Aufgabe Nur die Terminal-Klasse von der Vorlesungs-Homepage verwenden Die Terminal-Klasse aus dem Buch ist nicht JCC konform Zeilenbreite: 80 Zeichen bei 4er-Tabs Es gibt optimierte Varianten des Algorithmus Ihr solltet euch aber strikt an die Aufgabe halten! Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 10 / 21
Übersicht Vorlesungsstoff 1 Einleitung 2 Abschlussaufgaben 3 Vorlesungsstoff 4 Ergänzungen zum Vorlesungsstoff Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 11 / 21
Vorlesungsstoff Doppelt verkettete Listen Funktioniert vom Prinzip her genauso wie die einfach verkettete Liste Hat zusätzlich noch einen Zeiger auf das vorhergehende Objekt Liste kann auch Rückwärts durchlaufen werden Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 12 / 21
Vorlesungsstoff Doppelt verkettete Listen Funktioniert vom Prinzip her genauso wie die einfach verkettete Liste Hat zusätzlich noch einen Zeiger auf das vorhergehende Objekt Liste kann auch Rückwärts durchlaufen werden Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 12 / 21
Vorlesungsstoff Listenoperationen Wie wird in eine Liste eingefügt? Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 13 / 21
Vorlesungsstoff Listenoperationen Wie wird in eine Liste eingefügt? aus einer Liste gelöscht? Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 13 / 21
Vorlesungsstoff Listenoperationen Wie wird in eine Liste eingefügt? aus einer Liste gelöscht? in einer Liste gesucht? Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 13 / 21
Vorlesungsstoff Listenoperationen Wie wird in eine Liste eingefügt? aus einer Liste gelöscht? Tafel in einer Liste gesucht? Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 13 / 21
Vorlesungsstoff Interfaces Interface = Schnittstelle Menge von Konstanten und Methodenköpfen, ohne eine Implementierung davon Legt also eine Menge an notwendigen Methoden mit Paramteren fest Eine Klasse kann dieses Interface nun implementieren Diese Klasse muss alle vorgegebenen Methoden implementieren Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 14 / 21
Vorlesungsstoff interface Konto { void einzahlen(int betrag); void abheben(int betrag); } public class GiroKonto implements Konto { public void einzahlen(int betrag) { //Do Something } public void abheben(int betrag){ //Do Something } } Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 15 / 21
Vorlesungsstoff Eine Klasse kann mehrere Interfaces implementieren public class GepanzerterGeldtransporter implements Auto, Konto {... } Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 16 / 21
Vorlesungsstoff Implementiert eine Klasse ein Interface, so hat sie 2 Typen Beispiel: Die Klasse GiroKonto aus dem vorhergehenden Codebeispiel ist vom Typ GiroKonto und vom Typ Konto public void ueberweisen (Konto quellkonto, Konto zielkonto, int menge) { quellkonto.abheben(menge); zielkonto.einzahlen(menge); }... GiroKonto mygk = new GiroKonto(); GiroKonto mygk2 = new GiroKonto(); ueberweisen (mygk, mygk2, 100); Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 17 / 21
Übersicht Ergänzungen zum Vorlesungsstoff 1 Einleitung 2 Abschlussaufgaben 3 Vorlesungsstoff 4 Ergänzungen zum Vorlesungsstoff Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 18 / 21
Typecasts Ergänzungen zum Vorlesungsstoff Eine Variable lässt sich in einen Datentyp casten Durch Voranstellen eines Datentyps in Klammern, wird die Variable so behandelt, als wäre sie von diesem Typ Wurde schon kurz bei den primitiven Datentypen erwähnt: int a = (int)(1.0/3.0 * 1); Wichtig insbesondere bei Interfaces Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 19 / 21
Typecasts Ergänzungen zum Vorlesungsstoff public class GiroKonto implements Konto {... public void kartenzahlung(int betrag){ //Do Something } } Konto meinkonto = new Girokonto(); //funktioniert meinkonto.kartenzahlung (10); //Compilerfehler ((GiroKonto)meinKonto).kartenzahlung(10); //funktioniert Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 20 / 21
Ergänzungen zum Vorlesungsstoff Bis nächste Woche! Grischa Liebel (Uni Karlsruhe (TH)) c 2008 by Grischa Liebel Tutorium 11 21 / 21