Crashkurs Java Datenbankanwendungsprogrammierung - Denny Priebe

 
Datenbankanwendungsprogrammierung
         Crashkurs Java
             Denny Priebe

                            Datenbankanwendungsprogrammierung – p.
Unterschiede zu C, C++

typedefs, Präprozessor
Strukturen, Unions
globale Funktionen
Mehrfachvererbung
goto
implizites Type-Casting
Zeiger, manuelle Speicherverwaltung

                                      Datenbankanwendungsprogrammierung – p.
Applikationen

gestartet wird Methode main

public class Hello {
  public static void main(String args[]) {
    System.out.println("Hello");
  }
}

                               Datenbankanwendungsprogrammierung – p.
Quelltexte

Dateien tragen Namen der public-Klasse mit Extension
.java
nur eine öffentliche Klasse pro Datei erlaubt
Übersetzung und Ausführung:

$ javac Hello.java
$ java Hello

                                         Datenbankanwendungsprogrammierung – p.
Blöcke

fassen Anweisung zu einem Verbund zusammen
eingeschlossen durch { und }
Deklarationen innerhalb von Blöcken möglich,
Gültigkeitsbereich, Sichtbarkeit

                                       Datenbankanwendungsprogrammierung – p.
Einfache Datentypen

logischer Typ boolean
Ganzzahltypen int, byte, short und long
Fließkommatypen float und double
Zeichentyp char

                                   Datenbankanwendungsprogrammierung – p.
boolean

einzigen Werte: true, false
keine Casts auf/von andere(n) Typen möglich
Operationen: ==, !=, &, |, ˆ, &&, ||

                                      Datenbankanwendungsprogrammierung – p.
Ganzzahltypen

vorzeichenbehaftet
byte: 8 Bit, short: 16 Bit, int: 32 Bit, long 64 Bit
Operationen (u.a.):
==, !=, =, +, -, *, /, %, ++, -
Zuweisungen: +=, -=, *=, /=, ...

                                             Datenbankanwendungsprogrammierung – p.
Fließkommatypen

float: 32 Bit, double 64 Bit
Operationen, Zuweisungen ähnlich oben
Literale per default double, sonst Suffix ’f’

                                            Datenbankanwendungsprogrammierung – p.
char

speichert einzelne Unicode-Zeichen
Zuweisungskompatibel mit int-Werten (Nummer des
Zeichens)
Literale in einfache Hochkommata

char c = ’A’;
char d = 65;

                                     Datenbankanwendungsprogrammierung – p. 1
Wrapper-Klassen

Wrapper-Klasse für jeden einfachen Datentyp
Boolean, Byte, Short, Integer, Long, Double, Float,
Character
Aufgabe: formale Parametern von Standard-Methoden,
Konvertierungsmethoden

                                        Datenbankanwendungsprogrammierung – p. 1
Strings

kein einfacher Datentyp, sondern Objekte von Klassen
String für konstante Zeichenketten, StringBuffer
für veränderliche Zeichenketten

String s = "Ein Test-String";
String s2 = "Ein Test" + "-String";

                                      Datenbankanwendungsprogrammierung – p. 1
Arrays (1)

haben Objekt-Eigenschaften, aber keine
Konstruktoren; sind auch nicht spezialisierbar
Deklaration:
int[] demo;
// oder auch
int demo[];
// geschachtelt:
int[][] coord;

                                        Datenbankanwendungsprogrammierung – p. 1
Arrays (2)

Initialisierung:
int[] a1 = {1,2,4,9,16};
int[][] coord = {{0,0}, {0,1}, {1,0}, {1,1
int[][] a2 = {{1}, {2,3}};
// oder mit new:
int[] a3;
a3 = new int[5];

                              Datenbankanwendungsprogrammierung – p. 1
Arrays (3)

Zugriff:
a1[0] = 0;
a2[1][1] = 4;

Kopien (Referenzen!) über Objekt.clone() oder
System.arraycopy()

                                       Datenbankanwendungsprogrammierung – p. 1
Variablen, Konstanten

Variablendeklaration:  
Initialisierung möglich
Konstanten: zusätzlich final

int i;
float j, k = 1.2f;
final String Titel = "ORDB";

                                   Datenbankanwendungsprogrammierung – p. 1
Objekte vs. Werte

Werte: Instanzen einfacher Datentypen
Objektvariablen sind Referenzen; flaches Kopieren
mittels clone()
Paramterübergabe grundsätzlich by value

                                        Datenbankanwendungsprogrammierung – p. 1
Anweisungen

if, switch, while, do, for
break, continue
return

                              Datenbankanwendungsprogrammierung – p. 1
if

Einschränkung bzgl. C, C++: Bedingung ist boolescher
Ausdruck

if (a < b)
  System.out.println(...);
else
  System.out.println(...);

                                      Datenbankanwendungsprogrammierung – p. 1
switch

Ausführung von Anweisungen in Abhängigkeit eines
Selektors
Selektor: int oder zuweisungskompatibel

switch (x) {
  case 0:
    System.out.println(...);
    break;
  case 1:
    ...
  default:
    System.out.println(...);
                                      Datenbankanwendungsprogrammierung – p. 2

}
while

kopfgesteuerte Wiederholung

while (a != 5)
 a++;

                              Datenbankanwendungsprogrammierung – p. 2
do

fußgesteuerte Wiederholung

do {
  a++;
} while (a != 5);

                             Datenbankanwendungsprogrammierung – p. 2
for

Wiederholung für bestimmte Anzahl von Durchgängen
Zählvariable mit Initialwert, Bedingung,
Inkrementierungsanweisung
Initialisierung, Inkrementierung: mehrere Anweisungen
durch Komma getrennt möglich

for (int i = 0; i < 10; i++)
  System.out.println(i);

                                           Datenbankanwendungsprogrammierung – p. 2
break, continue

break verläßt aktuelle Kontrollstruktur
continue setzt mit nächstem Schleifendurchlauf fort

for (;;a++) {
  if (a > 10)
    break;
}

                                          Datenbankanwendungsprogrammierung – p. 2
Kommentare

mehrzeilig: /* und */, nicht schachtelbar
einzeilig: //, schachtelbar

                                            Datenbankanwendungsprogrammierung – p. 2
Klassendefinition

Attribute, Methoden + Zugriffsregeln

public class Point {
  public int x,y.color;
  public void moveTo(int x, int y) {
    this.x = x;
    this.y = y;
  }
}

                                            Datenbankanwendungsprogrammierung – p. 2
Instantiierung von Klassen

  Variablen nehmen Referenz auf Objekt auf
  bei Deklaration null
  Erzeugung durch new-Operator

Point p; // Wert null
p = new Point();
p.moveTo(1,2);

                                       Datenbankanwendungsprogrammierung – p. 2
Konstruktoren (1)

implizit erzeugter parameterloser Standard-Konstruktor
tragen Namen der Klasse, Überladen möglich

                                       Datenbankanwendungsprogrammierung – p. 2
Konstruktoren (2)

public class Point {
  ...
  public Point(int x, int y) {
    this.x = x;
    this.y = y;
    color = 0;
  }
  public Point(int x, int y, int color) {
    this(x,y);
    this.color = color;
  }
}                                Datenbankanwendungsprogrammierung – p. 2
Destruktoren

kein delete-Operator, keine Destruktoren im
C++-Sinn
automatische Freispeicherverwaltung (Garbage
Collection)
finalizer-Methoden (protected void finalize())
Eigenschaften: Aufruf nicht garantiert, Exceptions
ignoriert, keine Angaben über Zeitpunkt oder
Reihenfolge des Aufrufs

                                         Datenbankanwendungsprogrammierung – p. 3
Einfachvererbung

public class Square extends Point {
  public int length;
  public Square(int x, int y, int color, int
    super(x, y, color);
    this.length = length;
  }
  public void resize(int length) {
    this.length = length;
  }
}

                                 Datenbankanwendungsprogrammierung – p. 3
Overriding von Methoden

public class RoundSquare extends Square {
  public int radius;
  public RoundSquare(int x, int y, int color,
    super(x, y, color, length);
    this.radius = radius;
  }
  public void resize(int length) {
    radius = length/this.length;
    super.rezize(length);
  }
}
                                 Datenbankanwendungsprogrammierung – p. 3
Zugriffsklassen: Daten, Methoden

public    Zugriff von beliebigen Klassen
protectedZugriff aus jeder Klasse desselben Paketes oder
    aus Unterklassen anderer Pakete
privateZugriff nur von Objekten der gleichen Klasse; keine
    Vererbung
ohne Angabe     Zugriff von allen Klassen desselben Pakets

                                              Datenbankanwendungsprogrammierung – p. 3
Zugriffsklassen: Klassen

public   Verwendung überall erlaubt
ohne Angabe   Verwendung nur im eigenen Paket

                                          Datenbankanwendungsprogrammierung – p. 3
Modifier für Daten/Methoden

final    Definition von Konstanten, Methode nicht
        überschreibbar; Methoden einer final-Klasse sind
        implizit final
static    Klassenvariablen, Klassenmethoden
        (static-Methoden sind implizit final)
abstract    Methoden ohne Implementierung; nur in
        abstrakten Klassen

                                                Datenbankanwendungsprogrammierung – p. 3
Parameterübergabe

grundsätzlich call by value
d.h. auch Objektreferenzen
Modifier final möglich

                                    Datenbankanwendungsprogrammierung – p. 3
Interfaces

reine Schnittstellen ohne Implementierung
Interfaces können spezialisiert werden, auch
Mehrfachvererbung
Klasse kann mehrere Interfaces implementieren, erbt
aber keine Implementierungen
Interface-Variable kann Objekte der
implementierenden Klasse(n) aufnehmen

                                       Datenbankanwendungsprogrammierung – p. 3
Pakete (1)

  bündeln logisch zusammengehörige
  Klassen/Interfaces
  bilden Hierarchie und jeweils einen Namensraum

package mein.paket;
public class ...

                                       Datenbankanwendungsprogrammierung – p. 3
Pakete (2)

  Importieren von Paketen erspart vollständige
  Qualifikation des Paketnamens

import java.util.*;

  nun z.B. Vector statt java.util.Vector

                                         Datenbankanwendungsprogrammierung – p. 3
Exceptions

Auslösen und Behandeln von Ausnahmen
Exceptions: Objekte von Klassen, geerbt von
Throwable
werden lokal behandelt oder die Aufrufhierarchie
hinauf propagiert
Kombination möglich (Exception behandeln, neue
auslösen)

                                       Datenbankanwendungsprogrammierung – p. 4
Lokale Behandlung

try {
// potentiell Exception-auslsender Code
}
catch (ExceptionTyp1 e1) {
// Behandlung
}
catch (ExceptionTyp2 e2) {
// Behandlung
}

  optionaler finally-Block

                                   Datenbankanwendungsprogrammierung – p. 4
Propagieren von Exceptions

  Methodendeklaration: throws

public void readFile(String name) throws IOEx
  // Code, der potentiell IOException auslst
}

                                 Datenbankanwendungsprogrammierung – p. 4
Sie können auch lesen
NÄCHSTE FOLIEN ... Stornieren