Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13
Organisatorisches Nächster Übungstermin Nächsten Dienstag ist bergfrei! Tafelübung zu AuD 2/13
Wiederholung Referenzen Wiederholung (4.1) Was sind Referenzen? Zeiger auf den Speicherbereich eines Objekts Mehrere Referenzen können auf das selbe Objekt zeigen == vergleicht nur die Referenzen, equals() vergleicht Inhalte Tafelübung zu AuD 3/13
Der Garbage Collector Garbage Collection (4.1) Objekte löschen? Löschen aus dem Speicher in Java nicht möglich Stattdessen: Entfernen a der Referenzen auf ein Objekt Der Garbage Collector entfernt periodisch nicht länger erreichbare Objekte Wichtig: Es ist nicht klar, wann der Garbage Collector läuft! a oder ungültig werden Tafelübung zu AuD 4/13
Wiederholung Overloading Wiederholung (4.2) Was ist Overloading? Mehrere Methoden mit gleichem Namen, aber unterschiedlichen Parametertypen Unterscheidung anhand der statischen Typen der übergebenen Parameter beim Aufruf Tafelübung zu AuD 5/13
Wiederholung Overloading Beispiele (4.2) Beispiele Sei public static double[] fold(double[][] matrix) gegeben. Sind die folgenden Methoden gültige Überladungen? public static double[] fold(double[][] m) private static double[] fold(double[][] m) static double[] fold(double[] matrix) protected int[] fold() protected static int[] fold(double[][] matrix) public static double[] fold(double[][] matrix, int direction) Tafelübung zu AuD 6/13
Konstruktoren Konstruktoren und Superkonstruktor (4.3) Beispiel zu super() und this() 1 public class Constructor { 2 private int a, b; 3 public Constructor ( int a, int b) { 4 this.a = a; this.b = b; 5 } 6 } 7 class SubConstructor extends Constructor { 8 int c; 9 public SubConstructor ( int a, int b, int c) { 10 super (a, b); // muss erster Aufruf sein! 11 this. c = c; 12 } 13 protected SubConstructor () { 14 this (42, 23, 5); 15 } 16 } Tafelübung zu AuD 7/13
static-keyword statische Variablen (und Methoden) (4.1) statische Variablen/Methoden gekennzeichnet durch das Schlüsselwort static existieren nur einmal pro Klasse (d.h. alle Objekte der Klasse teilen sich eine Variable/Methode) Tafelübung zu AuD 8/13
static-keyword statische Variablen (und Methoden) Beispiel (4.1) Singleton-Entwurfsmuster Das Singleton (auch Einzelstück genannt) ist ein in der Softwareentwicklung eingesetztes Entwurfsmuster [... ]. Es verhindert, dass von einer Klasse mehr als ein Objekt erzeugt werden kann. Dieses Einzelstück ist darüber hinaus üblicherweise global verfügbar. http://de.wikipedia.org/w/index.php?title=singleton_(entwurfsmuster)&oldid=73699391 Tafelübung zu AuD 9/13
static-keyword statische Variablen (und Methoden) Beispiel (2) (4.1) Beispielimplementierung 1 public class SingleLogger { 2 private static SingleLogger instance ; 3 4 private SingleLogger () {} 5 6 public static SingleLogger getinstance () { 7 if ( instance == null ) { 8 instance = new SingleLogger (); 9 } 10 return instance ; 11 } 12 //... weitere Methoden / Variablen... 13 } Tafelübung zu AuD 10/13
static-keyword statische Variablen (und Methoden) Beispiel (3) (4.1) Beispielimplementierung 1 public class LoggerUsage { 2 public static void main ( String [] args ) { 3 // write a log message 4 SingleLogger. getinstance ().log (" starting... "); 5 SingleLogger. getinstance ().log ("done, shutting down "); 6 } 7 } Tafelübung zu AuD 11/13
Nachbesprechung Nachbesprechung von Blatt 2 Begriffe, Codierung, Entscheidungsgehalt Hangman, The Matrix 3D, The Matrix Reloaded Tafelübung zu AuD 12/13
Ende Ende Noch Fragen? Tafelübung zu AuD 13/13