You are here: GSI Wiki>Java Web>DiaShow2 (2003-11-14, christo)EditAttach
Start presentation

Slide 1: Java Code Conventions

Für Java-Programme sollte man sich an den Java-Code-Konventionen orientieren:

  • Jede Java-Klasse sollte dabei in einer separaten Datei gespeichert werden, mit einem einführenden Kommentar beginnen und nicht mehr als 2000 Zeilen Code enthalten.
  • Die Klasse selbst sollte folgendermaßen strukturiert sein:
    • Statische (Klassen-)variablen
    • Instanzvariablen
    • Konstruktoren
    • Methoden
  • Eine einer Zeile sollte stets nur eine Deklaration oder Anweisung stehen.
  • Blöcke sollten stets geklammert werden, auch wenn sie nur aus einer Anweisung bestehen.
  • Binäre Operatoren sollten stets durch Leerzeichen von ihren Operanden getrennt werden, unäre hingegen nie:
(1 + 2) * (3 - 4)
i++

  • Klassen- und Interface-Bezeichner sollten möglichst Hauptworte sein und mit einem Großbuchstaben beginnen.
    jedes Teilwort eines zusammengesetzten Begriffes sollte mit einem Großbuchstaben beginnen: TrivialClassNameAsSample.
    Abkürzungen sollten vermieden werden, solange sie nicht gebräuchlicher sind als der ursprüngliche Begriff (URL, HTML)
  • Instanzvariablen beginnen mit einem Kleinbuchstaben, bei zusammengesetzten Begriffen beginnt jedes weitere Teilwort mit einem Großbuchstaben.
  • Selbiges gilt für Methoden; für diese sollten zudem möglichst Verben verwendet werden.
  • Klassenkonstanten (z. B.
static final String BLACK = "#000000"
) werden ausschließlich in Großbuchstaben geschrieben.

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

-- ChristopherHuhn - 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}%.

-- ChristopherHuhn - 13 Nov 2003

-- ChristopherHuhn - 14 Nov 2003
Topic revision: r1 - 2003-11-14, christo
 
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding GSI Wiki? Send feedback
Imprint (in German)
Privacy Policy (in German)