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, ChristopherHuhn - This page was cached on 2021-01-09 - 10:16.

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 (german) | Privacy Policy (german)