Start presentation
Slide 1: Java Code Conventions
Für Java-Programme sollte man sich an den
Java-Code-Konventionen orientieren:
--
Christo - 12 Nov 2003
Slide 2: java.lang.%JAVADOC{java.lang.Object}%
Object die Wurzel der Klassenhierarchie und somit der gemeinsame Vorfahr aller Java-Klassen. Object definiert u. a. folgende Methoden, die von Erben ggf. geeignet umdefiniert werden können:
-
protected Object clone()
: kopiert ein Objekt.
-
public boolean equals(Object obj)
: definiert die Gleichheit von zwei Objekten.
-
public String toString()
: liefert eine String-Repäsentation des Objektes.
-
protected void finalize()
: Wird vom GarbageCollector aufgerufen, bevor das Objekt vom Heap gelöscht wird.
Slide 3: java.lang.%JAVADOC{java.lang.System}%
System stellt einige nützliche Klassenvariablen und -methoden zur Verfügung:
-
System.out
, System.err
, System.in
: Streams zum Arbeiten mit der Konsole (siehe JavaIO).
-
arraycopy
: zum Kopieren von Ojektfeldern
-
exit
: beendet die Application, bzw. JVM.
-
get/setProperty
: Zugriff auf die Systeminformationen wie user.home
, os.name
, java.vm-version
, file.separator
.
-
gc()
, runFinalization()
: Zugriff auf die entsprechenden Methoden der %JAVADOC{java.langh.Runtime}%-Klasse.
Slide 4: java.lang.%JAVADOC{java.lang.String}%
String
implementiert die diversen Zeichenketten-Operation wie z. B.
substring(int beginIndex, int endIndex)
und zusätzlich die
public static String valueOf(...)
-Methoden, um die
BasisDatentypen in Strings zu wandeln.
Slide 5: java.lang.%JAVADOC{java.lang.Math}%
Math
Sammelklasse für arithmetische Funktionen.
Slide 6: java.lang.%JAVADOC{java.lang.Boolean}%, java.lang.%JAVADOC{java.lang.Integer}%, java.lang.%JAVADOC{java.lang.Character}%, ...
Wrapper für die
BasisDatentypen, um diese z.B. in
Collections verwenden zu können.
Slide 7: Interface java.lang.%JAVADOC{java.lang.Comparable}%
Durch die Implementation von %JAVADOC{java.lang.Comparable}% definiert eine Klasse eine totale Ordnung ihrer Elemente für die Verwendung des
CollectionsAPI. Sie muss dann die Funktion
public int compareTo(Object o)
implementieren.
Slide 8: Interface java.lang.%JAVADOC{java.lang.Cloneable}%
Alle Klassen, deren Objekte mit
Object.clone()
kopiert werden sollen können, müssen das - leere - Interface
Cloneable implementieren und müssen ggf.
clone()
neudefinieren.
Die Standardimplementation von
clone()
erzeugt eine flache Kopie, keinen
deep clone.
-- Main.christo - 06 Nov 2003
Slide 9: java.io
Das
Package java.io
enthält Klassen zur Ein- und Ausgabe. Diese erfolgt grundsätzlich
stream basiert.
Es gibt zwei verschiedene Gruppen:
- %JAVADOC{java.io.InputStream}% und %JAVADOC{java.io.OutputStream}% zur Arbeit mit - binären - Byte-Strömen.
- %JAVADOC{java.io.Reader}% und %JAVADOC{java.io.Writer}% zur Arbeit mit Textdaten, die ggf. beim Lesen in Unicode transformiert werden.
Slide 10: Serialization
Mithilfe der Klassen
java.io.%JAVADOC{java.io.ObjectInputStream}
und
java.io.%JAVADOC{java.io.ObjectOutputStream}
können Java-Objekte gespeichert und später wieder eingelesen werden.
Dies wird insbesondere dazu genutzt, um Objektstrukturen von einem Device auf einen anderen zu übertragen (siehe
RemoteMethodInvocation).
--
Christo - 14 Nov 2003
Slide 11: Ausnahmebehandlung in Java
Die Behandlung von Laufzeitfehlern (z. B. IO-Fehlern) wird in Java nicht dem Entwickler alleine überlassen.
Durch das Konzept der
Exceptions ist der Code zur Fehlerbehandlung schon syntaktisch von der "normalen" Programmlogik getrennt.
try {
statements
...
} catch (Exception e) {
statements
...
} finally {
....
}
void method() throws Exception {
...
throw new Exception("Alles ist hin!");
}
Die Behandlung von
Exceptions durch den Compiler folgt dabei der
Catch or Specify Direktive: Ein Methodenaufruf muss die von dieser deklarierten möglichen
Exceptions entweder behandeln oder die den Code enthaltende Methode muss diese
Exception ebenfalls deklarieren. Eine Ausnahme bilden die %JAVADOC{java.lang.RuntimeException}%s.
Exceptions haben eine eigene Klassen-Hierarchie basierend auf dem Interface %JAVADOC{java.lan.Throwable}%.
--
Christo - 13 Nov 2003
--
Christo - 14 Nov 2003