Nachgehakt - String Vergleich

Werbung
Nachgehakt - String Vergleich
int a=1, b=1;
String x=“abc“, y=“abc“;
if(a==b) …
Geht nur manchmal!
if(x==y) …
if(x.equals(y)) …
1
Grundlagen der Programmierung II
DBIS - SS2008
Nachgehakt - Bestimmte Schleifen (for)
for (x=0; x !=10; x+=0.01) {
….
}
Ausprobiert?!?
2
Grundlagen der Programmierung II
DBIS - SS2008
Teil 7 - Java
Collections Framework
3
Java Collections Framework
• Im Package java.util enthalten.
• Übersicht:
java.sun.com/j2se/1.5.0/docs/guide/collections/index.html
Collection
List
Map
Set
SortedMap
SortedSet
• Weitere Datenstrukturen:
http://jakarta.apache.org/commons/collections/apidocs/index.html
4
Grundlagen der Programmierung II
DBIS - SS2008
Java Collections Framework
Set: Menge ohne Duplikate
List: Jedes Element hat einen Index
Map: Jedes Element hat einen Schlüssel
Für uns wichtig: HashMap und ArrayList
5
Grundlagen der Programmierung II
DBIS - SS2008
Übersicht Collections Framework
Quelle: TIJ3 –
Bruce Eckel
6
Grundlagen der Programmierung II
DBIS - SS2008
Java Collections Framework
• Definiert „Collections“ von Objekten, die über
einheitliche Schnittstellen manipuliert werden können.
• Implementiert Datenstrukturen und Algorithmen.
Beispiel: Durchgehen einer ArrayList
List list = new ArrayList();
list.add("Hello");
list.add("World");
for (Iterator i = list.iterator(); i.hasNext();){
System.out.println(i.next());
}
7
Grundlagen der Programmierung II
DBIS - SS2008
Java Collections Framework
Beispiel: Sortieren einer ArrayList
List list = new ArrayList();
list.add("B");
list.add("A");
list.add("C");
Collections.sort(list);
System.out.println(list);
/* hier wird toString() aufgerufen von java.lang.Objekt
bzw. von java.util.AbstractCollection */
8
Grundlagen der Programmierung II
DBIS - SS2008
Java Collections Framework
Beispiel: Map (Wörterbuch)
Zuordnung von Elementen zu Schlüsseln.
Map map =
new HashMap();
map.put(2, "Hello");
map.put(4, "World");
System.out.println(m.size());
System.out.println(m.get(4));
9
Grundlagen der Programmierung II
DBIS - SS2008
Java 1.5. Generics
Beispiel: Map (Wörterbuch)
Zuordnung von Elementen zu Schlüsseln.
Jetzt ist aber der Typ vorgegeben!
Map<Integer,String> m =
new HashMap<Integer,String>();
map.put(2, "Hello");
10
Grundlagen der Programmierung II
DBIS - SS2008
ENUM
Die Atribute des Aufzählungstyps enum bestehen
aus einer festen Menge von Konstanten.
ZugriffsSpezifikator enum Bezeichner
{Wert1, Wert2, ...};
• enum-Aufzählungen sind Klassen
• enum-Aufzählungen erben von der Klasse
java.lang.Enum
• enum Aufzählungen sind standardmäßig final
11
Grundlagen der Programmierung II
DBIS - SS2008
ENUM - Beispiel
public class Ausgabe {
public enum Day {
SUNDAY, MONDAY, TUESDAY,
WEDNESDAY, THURSDAY, FRIDAY,
SATURDAY
}
public static void main(String[] args){
System.out.println(Day.MONDAY);
}
}
12
Grundlagen der Programmierung II
DBIS - SS2008
Teil 8 - Java
Vererbung
Schnittstellen
Polymorphie
13
Erinnerung: Beispiel für Vererbung
Kraftfahrzeug
Omnibus Stehplätze
Limousine
PKW
Typ, Farbe, kmh
beschleunigen()
bremsen()
LKW anhängen()
Cabriolet Verdeck öffnen()
Cabriolet und Limousine können zusätzliche Methoden bzw. Attribute haben.
Beide erben alle Merkmale von PKW und damit auch von Kraftfahrzeug.
14
Grundlagen der Programmierung II
DBIS - SS2008
Mehrfachvererbung (Multiple Inheritance)
In manchen objektorientierten Programmiersprachen
(C++, Smalltalk usw.) kann eine Klasse mehrere direkte
Oberklassen haben (Mehrfachvererbung)
Î gute Modellierung mancher realen Gegebenheiten:
15
Grundlagen der Programmierung II
DBIS - SS2008
Vererbung
Die Methoden (Prozeduren/Funktionen) der
Elternklasse können beibehalten, modifiziert oder
überschrieben werden, müssen aber denselben
Rückgabetyp haben.
In Java darf eine Klasse nur eine direkte
Elternklasse haben Î Einfachvererbung.
Mehrfachvererbung nur durch Schnittstellen
realisierbar (siehe später).
16
Grundlagen der Programmierung II
DBIS - SS2008
Vererbung Syntax
Syntax:
ZugriffsSpezifikator class NameDerKlasse
extends Oberklasse
{
// erbt automatisch alle Attribute und
// Methoden der Oberklasse
}
17
Grundlagen der Programmierung II
DBIS - SS2008
Vererbung - Zugriffsrechte
Klassen die final sind, dürfen nicht
vererbt werden.
Attribute/Methoden die protected oder public
sind, können vererbt werden.
Beachte:
Attribute/Methoden die protected sind, sind ohne
Vererbung nicht sichtbar.
18
Grundlagen der Programmierung II
DBIS - SS2008
this und super
super: Ermöglicht den Zugriff auf die Methoden der Oberklasse.
this: “Zeigt” auf das aktuelle Objekt.
Beispiel:
public class Student extends Person {
private int semester;
public int getSemester() {
return this.semester;
}
public void incrementAge() {
super.incrementAge();
//Aufruf der Methode in Person
if (this.getSemester() > 8)
System.out.println(“Achtung, Studiengebühren werden fällig!");
}
}
19
Grundlagen der Programmierung II
DBIS - SS2008
Casting
Bei der Deklaration eines Objektes wird die
entsprechende Klasse, zu der es gehört, angegeben.
Es ist möglich dieses Objekt in ein Objekt einer
Oberklasse zu verwandeln, z.B.:
…
Student s = new Student(4);
Person p = (Person)s;
Ist das sinnvoll?
…
Diesen Vorgang nennt man casting.
Zu den primitiven Datentypen (siehe spätere Folie) existieren
Regeln, welchen Typ man in welchen umformen kann.
20
Grundlagen der Programmierung II
DBIS - SS2008
instanceof
Mit instanceof kann die Klassenzugehörigkeit
geprüft werden.
...
Object o = xyz.get();
if (o instanceof Student)
int i =
((Student)o).getAge();
...
Beachte: Ein Objekt ist immer auch Element seiner
Oberklassen.
21
Grundlagen der Programmierung II
DBIS - SS2008
Schnittstellen (Interfaces)
Interfaces enthalten nur die "Signaturen" von
Methoden. Statt der Definition des MethodenInhalts zwischen { und } enthalten sie nur ein
Semikolon:
interface InterfaceName {
void methode1(parameterListe) ;
}
22
Grundlagen der Programmierung II
DBIS - SS2008
Schnittstellen (Interfaces)
Wofür:
• Trennung von Spezifikation und Realisierung (wie bei
ArrayList, LinkedList, …)
• Definition der Interaktion zwischen Komponenten
• Um Probleme bei der Mehrfachvererbung zu
umgehen, gibt es in Java die eingeschränkte
Mehrfachvererbung durch Schnittstellen.
23
Grundlagen der Programmierung II
DBIS - SS2008
Anzahl der Personen in
Modernisierungs-Projekten
Persons involved (on average during the duration time)
6-10 Persons
19%
4-5 Persons
20%
11-50 Persons
24%
above 50 Persons
12%
3 Persons
12%
2 Persons
11%
1 Person
2%
*Quelle: MOMOCS Consortium - Modernization Project Evaluation – http://www.viewzone.org/momocs/evaluation.pdf
24
Grundlagen der Programmierung II
DBIS - SS2008
Schnittstellen (Interfaces)
Die Klasse, die dieses Interface implementiert, muss
alle darin skizzierten Methoden enthalten, mit der
richtigen Signatur (Typ, Name und Parameterliste)
und mit einem konkreten Block von Statements:
class ClassName implements InterfaceName {
...
void methode1 (parameterListe) {
... // Statements;
}
}
… die Klasse kann weitere Methoden, die nicht im Interface enthalten sind
besitzen!
25
Grundlagen der Programmierung II
DBIS - SS2008
Abstrakte Klassen
Eine Exemplarmethode heißt abstract, wenn
sie keinen Rumpfinhalt hat, d.h. wenn nur Ihr Kopf
(Signatur), nicht aber eine Implementation
angegeben wird.
Der Konstruktor einer abstrakten Klasse kann
nicht aufgerufen werden, d.h. es kann kein
Exemplar erzeugt werden.
Ein Klasse, die mindestens eine abstrakte
Methode erbt und diese nicht implementiert,
ist zwangsläufig abstrakt.
26
Grundlagen der Programmierung II
DBIS - SS2008
Beispiel „Abstract Class“
public abstract class Person {
String name;
public Person(String name) {
this.name = name;
}
public abstract String getName();
protected void setName(String name) {
this.name = name;
}
}
27
Grundlagen der Programmierung II
DBIS - SS2008
Unterschied Interface – Abstrakte Klasse
Interface == keine Implementierung, alles abstrakt
Abstrakte Klasse == kann Implementierung enthalten
Abstrakt Klassen, die keine Implementierung
enthalten sollten als Interface deklariert werden.
… beide können nicht instanziiert werden!
28
Grundlagen der Programmierung II
DBIS - SS2008
Innere Klassen
class Haus {
String s = "Haus";
public static void main(String[] args) {
Haus h1 = new Haus();
Zimmer z1 = h1.new Zimmer();
Zimmer z2 = new Haus().new Zimmer(); // in 1er Zeile
}
class Zimmer {
String s = "Zimmer";
}
}
29
Grundlagen der Programmierung II
DBIS - SS2008
Übungs-Aufgabe
class A{
public void foo(){ System.out.println("A"); }
}
class B extends A {
public void foo(){ System.out.println("B");}
public static void main(String[] args){
A aobject = new B();
aobject.foo();
}
AUSGABE: B
}
30
Grundlagen der Programmierung II
DBIS - SS2008
Übungs-Aufgabe
class A{
public A(){
super();
System.out.println("A erzeugt");}
}
public class B extends A{
public B(){
System.out.println("B erzeugt");}
}
AUSGABE:
A erzeugt
B erzeugt
super() in class
A redundant
public class Test{
public static void main(String[] args){
A aobject = new B();}
}
31
Grundlagen der Programmierung II
DBIS - SS2008
Polymorphie in der Natur
Das Pantherchamäleon
Das Chamäleon ändert seine Farbe in Abhängigkeit seiner Stimmung.
Ärger
Es hat eine andere Farbe, ist aber immer noch dasselbe
Individuum.
32
Grundlagen der Programmierung II
DBIS - SS2008
Polymorphie in der Evolutionstheorie
“It is not the strongest of the species that survives,
nor the most intelligent,
but rather the one most responsive to change.”
Charles Darwin
33
Grundlagen der Programmierung II
DBIS - SS2008
Polymorphie
Die Fähigkeit eines Objektes zu entscheiden,
welche Methode auf sich selbst anzuwenden ist,
bezeichnet man als Polymorphie in der
Objektorientierung.
Das Objekt kann auf eigene Weise auf den Aufruf
einer Methode reagieren.
34
Grundlagen der Programmierung II
DBIS - SS2008
Beispiel Polymorphie
Die Polymorphie bei Methoden
heißt Überladen.
Vorteile des Überladens einer Methode
• sinnvoll, wenn mehrere Methoden dasselbe Ergebnis erzielen
sollen, aufgrund des Eingabetyps aber unterschiedliche
Implementierungen benötigen.
• Im Programmquellcode entfällt dadurch die umständliche Typabfrage
und die anschließende Fallunterscheidung.
• Bei der Programmierung ist darauf zu achten,
dass Methoden mit gleichem Namen inhaltlich „zusammenpassen“.
35
Grundlagen der Programmierung II
DBIS - SS2008
Überschreiben von Methoden
In einer Unterklasse darf eine Methode mit gleichem Namen
und gleicher Signatur wie in einer Oberklasse definiert werden.
Î Überschreiben (Overwriting)
Oberklasse
methodeX()
Wichtig:
• Unterscheidung zum Überladen:
(vgl. Beispiel „Geometrische Objekte“)
- gemeinsame Oberklasse
- unterschiedliche Klassennamen
Unterklasse1
...
methodeX()
• Oberklassenmethode geht in der Unterklasse verloren
(In Java durch das Keyword super noch zugreifbar!)
36
Grundlagen der Programmierung II
DBIS - SS2008
Überschreiben von Methoden – Bsp.
Fahrzeug
kmh: int
sitzplaetze: int
fahren()
plaetze_anzeigen()
Omnibus
stehplaetze: int
plaetze_anzeigen()
...
• Die Unterklasse Omnibus erbt alle Attribute und Methoden der
Oberklasse Fahrzeug.
• Zusätzlich erhält die Unterklasse Omnibus das Attribut
stehplaetze.
• Die Methode plaetze_anzeigen() der Oberklasse Fahrzeug wird
in der Unterklasse Omnibus durch eine „neue Version“
überschrieben.
37
Grundlagen der Programmierung II
DBIS - SS2008
Auch Polymorphie
Beispiel „Late Binding“ in Java:
Bei final-Methoden
kann der Compiler
Early Binding verwenden!
GeoObjekt
Kreis
Rechteck
radius
berechneFlaeche()
laenge
breite
berechneFlaeche()
• Klasse von geometrischen Formen GeoObjekt
• Unterklassen Rechteck und Kreis, jeweils mit
einer Methode zur Flächenberechnung berechneFlaeche()
• unterschiedliche Berechungsvorschriften
• aber gleich benannte Methoden
38
Grundlagen der Programmierung II
DBIS - SS2008
Teil 9 - Java
Ausnahmen
39
Exceptions - Grundlagen
Es gibt außergewöhnliche Bedingungen, die es
nicht gestatten im Code normal fortzufahren,
z.B. wenn man auf eine Datei zugreifen möchte,
die nicht existiert.
Ausnahmen (Exceptions) unter Java bieten
einen Mechanismus zur strukturierten, flexiblen
Behandlung von Fehlern, die während der
Laufzeit eines Programmes (Runtime Error)
auftreten können.
40
Grundlagen der Programmierung II
DBIS - SS2008
Exceptions - Fehlerarten
mögliche Fehlerarten zur Laufzeit:
• Eingabefehler (durch Benutzer)
• Gerätefehler
• physikalische Grenzen
• Codefehler (z.B. ArrayIndex)
41
Grundlagen der Programmierung II
DBIS - SS2008
Exceptions - Ablauf
Gegeben: Ein Laufzeitfehler löst eine Exception aus (vom
System oder vom Entwickler) .
Entweder Behandlung durch den Programmteil, in dem sie
ausgelöst wurde oder weitergeben. Beim Weitergeben hat
nun der Empfänger die Möglichkeit sie zu behandeln oder
ebenfalls weiterzugeben.
Wird die Exception von keinem Programmteil behandelt,
führt dies zum Abbruch des Programms (mit
entsprechender Fehlermeldung)!
42
Grundlagen der Programmierung II
DBIS - SS2008
Exceptions - throwing
In manchen Fällen sind die Ausnahmen bereits
vorgesehen. Die entsprechenden Methoden enthalten
dann eine throws-Klausel.
throwing = Auslösen der Ausnahme (werfen, schmeißen).
Beispiel:
void read() throws IOException {
…
throw new IOException(“Datei nicht gefunden!”);
…
}
43
Grundlagen der Programmierung II
DBIS - SS2008
Exceptions - catching
Will man solche Methoden (die Exceptions werfen) verwenden,
muss die eventuelle Ausnahme abgefangen und die Behandlung
implementiert werden. Alternativ kann die Exception einfach weiter
gereicht werden mit throws.
catching = Behandeln der Ausnahme (Abfangen und Reaktion).
Beispiel:
...
try {
read();
} catch (IOException e) {
…
// im Falle einer Ausnahme
}
...
44
Grundlagen der Programmierung II
DBIS - SS2008
Exceptions - catching
In Java übernimmt der try-catch-Block die
Fehlerbehandlung. Er umgibt den Bereich, in dem der
Fehler auftreten könnte.
Tritt im try-Block ein Fehler auf, wird dieser sofort
verlassen (alle weiteren Anweisung werden nicht
ausgeführt!) und es wird in den ersten catch-Block
gesprungen.
Falls dieser die Exception nicht abfängt, wird weiter in den
nächsten catch-Block gesprungen, usw...
45
Grundlagen der Programmierung II
DBIS - SS2008
Exceptions - catching
Beispiel: Mehrere catch-Blöcke (Reihenfolge beachten)
try {
Anweisung1;
}
catch (Ausnahmetyp1 ex1) {
Anweisung2;
}
catch (Ausnahmetyp2 ex2) {
Anweisung3;
}
46
Grundlagen der Programmierung II
DBIS - SS2008
Exceptions - catching
der finally-Block ist optional, folgt nach dem letzten
catch-Block und wird immer ausgeführt !!! Insbesondere:
• wenn das normale Ende des try-Blocks erreicht
wurde (ohne Fehler),
• wenn eine Exception aufgetreten ist, egal ob sie
durch einen catch-Block behandelt wurde oder nicht,
• wenn der try-Block durch break, continue oder
return verlassen wurde.
47
Grundlagen der Programmierung II
DBIS - SS2008
Exceptions - catching
Beispiel: try-catch mit finally-Block
try {
Anweisung1;
}
catch (Ausnahmetyp1 ex1) {
}
finally {
Anweisung2;
}
48
Grundlagen der Programmierung II
DBIS - SS2008
Exceptions - catching
Der finally-Block kann somit verwendet
werden, um Aufräumarbeiten durchzuführen!
Zum Beispiel um Dateien zu schließen oder
andere Ressourcen freizugeben.
49
Grundlagen der Programmierung II
DBIS - SS2008
Exception Weitergabe
Statt eine Exception zu behandeln, kann man sie an die
aufrufende Methode weitergeben:
• einfach die try-catch-Klausel weggelassen und
• an den Methodenkopf die Exceptions mit throws
anhängen (durch Komma getrennt), die nicht
behandelt werden sollen.
50
Grundlagen der Programmierung II
DBIS - SS2008
Exception Weitergabe
Beispiel:
...
public void dbAusgabe() throws SQLException
{
...
ResultSet ergebnis =
stat.executeQuery("SELECT * FROM kunden
WHERE nachname='Schmidt'");
...
}
51
Grundlagen der Programmierung II
DBIS - SS2008
Exception Behandlung
… und dann kann die aufrufende Methode die
Exception z.B. behandeln.
Beispiel von vorheriger Folie:
...
try {
dbAusgabe();
// Ausführung von SELECT
}
catch (SQLException ex) {
System.out.println("DB-Fehler beim Lesen!");
}
...
52
Grundlagen der Programmierung II
DBIS - SS2008
Exception Klassen (API)
Throwable
Exception
IOException
53
Error
RuntimeException
Grundlagen der Programmierung II
DBIS - SS2008
Exception Klassen (API)
einige wichtige Ausnahmetypen
RuntimeException:
• ArithmeticException (Division durch 0)
• ArrayIndexOutOfBoundsException
• NullPointerException
IOException:
• FileNotFoundException
Error:
• VirtualMachineError
Exception:
• ClassNotFoundException
54
Grundlagen der Programmierung II
DBIS - SS2008
Exception Klassen (API)
Für die Standard-Java-Klassen kann man in der
API nachlesen, ob für eine bestimmte Methode
eine Exception behandelt werden muß.
Der Compiler gibt eine Fehlermeldung aus, falls
eine Exception nicht behandelt wird
(catch-or-throw).
55
Grundlagen der Programmierung II
DBIS - SS2008
Exception Klassen (API)
Ausnahmen von der catch-or-throw-Regel
sind alle Klassen, die von RuntimeException
erben bzw. RuntimeException selbst.
Beispiel:
• Gleitkommadivision durch Null
• Überlauf
• Mathematische Fehler
Diese Exceptions können, müssen aber nicht
behandelt werden! Fehler-Handling würde sonst
zu groß werden.
56
Grundlagen der Programmierung II
DBIS - SS2008
Exception Behandlung
Beispiel: Diese Methode testet, ob ein String in einen Integer
umwandelbar ist.
public boolean isInteger(String s){
if ( (s == null) || (s.equals("")) ) {
return false;
}
else {
try {
Integer test = new Integer(s); }
catch (NumberFormatException ex) {
return false;}
return true; }
}
57
Grundlagen der Programmierung II
DBIS - SS2008
Exceptions Besonderheiten
Mathematische Fehler
Exceptions werden nur
bei ganzzahligen Typen geworfen.
System.out.println("Erg: " + 2.0 / 0);
// Ergebnis: Infinity
// vergleiche java.lang.Float.POSITIVE_INFINITY
System.out.println("Erg: " + 2 / 0);
// Laufzeitfehler: ArithmeticException: by zero
58
Grundlagen der Programmierung II
DBIS - SS2008
Eigene Exceptions
Es ist möglich, eigene Fehlerklassen aus den vorhandenen
abzuleiten.
public class MyException extends
IllegalArgumentException {
public MyException() { super(); }
public MyException(String s) { super(s); }
public String getMessage() {
return "Meine feste Fehlermeldung!";}
}
59
Grundlagen der Programmierung II
DBIS - SS2008
Exceptions– Ablauf (im Detail)
Wenn eine Exception auftritt, sucht das
Laufzeitsystem erst in der unmittelbaren trycatch-Anweisung, die diesen Fehler behandelt.
Wird diese nicht gefunden, wird die Suche in den
weiteren umgebenden Blöcken fortgesetzt.
Wird auch hier nichts gefunden, wird die
Exception an den Aufrufer weitergereicht
falls keine Behandlung der Exception erfolgt,
bricht das Programm ab.
60
Grundlagen der Programmierung II
DBIS - SS2008
Teil 10 - Java
Streams & Dateien
61
Streams und Dateien
Um Daten zwischen zwei oder mehreren Rechnern
auszutauschen bedient man sich der Streams.
Streams (Ströme) sind vergleichbar mit einem
Datentunnel zwischen zwei Rechnern.
„Wenn man an einem Ende etwas eingießt, kommt es am
anderem Ende wieder raus (Gartenschlauch nur in eine
Richtung benutzbar).“
62
Grundlagen der Programmierung II
DBIS - SS2008
Streams und Dateien
Rechner A
63
Rechner B
Eingang
Eingang
Ausgang
Ausgang
Grundlagen der Programmierung II
DBIS - SS2008
Streams und Dateien
Die obersten Streamklassen sind die abstrakten Klassen
InputStream und OutputStream.
Diese Klassen bieten Methoden zum Lesen bzw.
Schreiben von einzelnen Bytes oder Byte Feldern.
Um die Funktionalität zu erweitern, müssen die oberen
Klassen erweitern werden.
64
Grundlagen der Programmierung II
DBIS - SS2008
Streams und Dateien
Auch Klassen zum Zugriff auf Dateien sind
vorhanden:
Beispiel:
DataInputStream / DataOutputStream
FileInputStream / FileOutputStream
FileWriter / FileReader
zum Lesen oder Schreiben von Textdateien
65
Grundlagen der Programmierung II
DBIS - SS2008
Streams und Dateien – Bsp.
…
File file = new File("test.txt");
try {
FileWriter fw = new FileWriter(file);
fw.write("Hallo Welt");
fw.flush();
} catch (Exception ex) {
ex.printStackTrace();
}
…
66
Grundlagen der Programmierung II
DBIS - SS2008
Teil 11 – Ausblick:
Was gibt es sonst noch und
sollte man mal gehört
haben?
67
UML - Modellierung
UML (Unified Modeling Language) ist eine
Standardsprache zum Entwerfen von
Softwaremodellen.
• Modelle helfen, ein System zu visualisieren,
so wie es ist oder wie wir es wünschen.
• Modelle ermöglichen uns, die Struktur oder
das Verhalten eines Systems zu spezifizieren.
• Modelle liefern uns eine Schablone, die uns beim
Konstruieren eines Systems anleitet.
• Modelle dokumentieren die getroffenen
Entscheidungen.
68
Grundlagen der Programmierung II
DBIS - SS2008
69
Grundlagen der Programmierung II
DBIS - SS2008
Warum modellieren?
Beispiel: Der Bau einer Hundehütte
Man braucht nur einen Hammer, Nägel
und ein paar Bretter, baut diese zusammen
und der Hund ist glücklich.
Æ Kein Modellieren nötig!
70
Grundlagen der Programmierung II
DBIS - SS2008
Warum modellieren?
Beispiel: Der Bau eines Hochhauses
• Ohne Planung und Arbeitsteilung unmöglich
• Viele Auflagen
• Sehr hohe Kosten
• Ansprüche der Mieter
Æ Modellieren unumgänglich!
71
Grundlagen der Programmierung II
DBIS - SS2008
Modellieren mit UML
• UML ermöglicht objektorientiertes Modellieren.
• Da UML standardisiert ist, können die Modelle von
anderen Anwendern verstanden werden.
• UML ermöglich „Forward-Engineering“:
Aus einem UML-Modell kann der Code einer
Programmiersprache erzeugt werden (Java, C++...).
• UML ermöglich „Reverse-Engineering“:
Aus dem Code einer Implementierung kann ein
entsprechendes UML-Modell erzeugt werden.
72
Grundlagen der Programmierung II
DBIS - SS2008
Multiple Diagramme in UML 2.0
73
Grundlagen der Programmierung II
DBIS - SS2008
Modell-Typen in UML
Es ist sinnvoll, für die verschiedenen Sichtweisen auf ein System
unterschiedliche Modelle zu verwenden.
Programmierer
Hier: Statiker
Kunden
Klassendiagramm
74
Anwendungsfalldiagramm
Grundlagen der Programmierung II
DBIS - SS2008
Ansätze für Persistenz
Ohne DBMS – Speicherung in einer Datei
Nutzung eines ODBMS
Nutzung von RDBMS
• JDBC oder SQLJ
• EJB
• JDO
• Frameworks (z.B. Hibernate)
Spezielle DBMS, z.B. Cachè von InterSystems
…
75
Grundlagen der Programmierung II
DBIS - SS2008
Serialisieren von Objekten in Java
Objekte werden von Java in einer Datei
gespeichert und können wieder geladen werden.
Alle relevanten Objekte müssen das Interface
“java.io.Serializable” implementieren.
76
Grundlagen der Programmierung II
DBIS - SS2008
Serialize - Deserialize
Referenzierende Objekte werden automatisch mit
gespeichert (serialize) und auch mit geleaden
(deserialize).
A
B
class A implements Serializable {
private B b;
public A() {
b = new B();
}
}
77
Grundlagen der Programmierung II
DBIS - SS2008
Beispiel: Java Serialize
public class Person implements Serializable {
String name;
ArrayList nummern = new ArrayList();
…
}
class PersTest {
public static void main(String[] args) {
…
Person a = new Person(“Fred”);
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream(“filename”);
os.writeObject(a);
os.close;
…
ObjectInputStream is = new ObjectInputStream(new FileInputStream(“filename”);
Person b = (Person)is.readObject();
is.close();
…
}
}
78
Grundlagen der Programmierung II
DBIS - SS2008
ER-Diagramm
Der Kunde muss keine
DVD geliehen haben
(card 0) .
Es kann mehrere Exemplare
geben (card *).
Cartoons haben keine
Schauspieler (card 0).
79
Grundlagen der Programmierung II
DBIS - SS2008
Speicherung von Objekten
in Relationalen Datenbanken
• OR-Mapping
– Eine Klasse wird durch eine Tabelle abgebildet.
– Ein Objekt durch eine Zeile in einer Tabelle.
– Die Beziehungen werden durch Fremdschlüssel
und weitere Tabellen realisiert
(siehe nächste Folie).
Problem: Abbildung der Vererbungshierarchie.
– Methoden werden im Allgemeinen nicht auf die
Datenbank abgebildet.
80
Grundlagen der Programmierung II
DBIS - SS2008
OR-Mapping von 1:n Beziehungen
Eine 1:n Beziehung zwischen zwei Klassen kann durch
eine Tabelle in der Datenbank realisiert werden:
• Schlüssel von Professor (name, uni) wird als
Fremdschlüsselattribut in die Tabelle Vorlesung
aufgenommen.
Æ Vorlesung(name, sws, profName, profUni, profRang)
81
Grundlagen der Programmierung II
DBIS - SS2008
OR-Mapping von n:m Beziehungen
Eine n:m Beziehung zwischen zwei Klassen kann durch
drei Tabellen in der Datenbank realisiert werden:
• für jede der Klassen eine entsprechende Tabelle
• die dritte Tabelle enthält Schlüssel von Student
(matrikelnr) und Schlüssel von Vorlesung (name)
Æ Student(matrikelnr, fach)
Æ Vorlesung(name, sws)
Æ Hört(studentMatrikelnr, vorlesungName)
82
Grundlagen der Programmierung II
DBIS - SS2008
JUnit, Ant, Maven, AspectJ, …
JUnit = Framework zum Testen von Java-Progr.
(Stichwort: Test Driven Development TDD)
Ant & Maven = Build-Management Tools
(bei größeren Projekten unerlässlich)
AspectJ = Aspekt-Orientierte Erweiterung für Java
(siehe auch: cross-cutting-concerns)
83
Grundlagen der Programmierung II
DBIS - SS2008
Links, Literatur
http://java.sun.com/docs/books/tutorial/java/index.html
http://de.wikipedia.org/wiki/Java-Syntax
http://www.rz.unihohenheim.de/anw/programme/prg/java/tutorials/javainsel4/
index.htm
„Jetzt lerne ich Java“ -> Bibliothek !!!
… wieder geplant: Java-Intensivkurs als
Vorbereitung für das PRG-Praktikum!!
84
Grundlagen der Programmierung II
DBIS - SS2008
Herunterladen