Variable für Klassentypen und Arrays sind Referenzen (``Zeiger'')
auf null initialisiert
bekommen dynamisch Speicher mit new und Konstruktor
Matrix m = new Matrix(42, 28)
keine free-Routine, sondern automatisches Aufräumen
(``garbage collector'')
Fehlerbehandlung durch Ausnahmen:
vordefinierte Klasse Exception und abgeleitete Klassen
Auslösen einer Ausnahme mit
throw Exception(message) // Programm springt zum Errorhandler
Behandeln von Ausnahmen:
try {
// etwas, was Fehler auslösen könnte, etwa
m.get(100, 100);
} catch {
// tue etwas, was den Fehler repariert oder beende vernünftig
// Programm macht ggf. weiter hinter den catch-Blöcken
}
Standard-Verhalten (kein try-catch-Block):
Ausgabe von message und Stacktrace, dann Abbruch
java.lang.IndexOutOfBoundsException: Invalid index: (4,2)
at Matrix.get(Matrix.java:57)
at TestMatrix.main(TestMatrix.java:44)
Implementation von set/get:
sorgt für Fortran-artiges Verhalten
leicht an andere Modelle anpassbar
Implementation von mult:
benutzt interne Struktur (val[]) statt set/get
deutlich schneller (Faktor 4), da keine Indextests nötig
SquareMatrix:
mult(Matrix, Matrix) geht (natürlich) auch für SquareMatrix
aber: Ergebnis ist Matrix, nicht SquareMatrix!
Hauptprogramm main:
static Routinen gehören zur Klasse
können ohne Objekt aufgerufen werden