Programmieren mit Java

Werbung
Programmieren mit Java
Eine Einführung für Anfänger ohne Vorkenntnisse
Hubert Partl
Download und Copyright
•
http://www.boku.ac.at/javaeinf/
•
Kursunterlagen und Folien
•
Download, privater Eigengebrauch: frei.
•
unveränderte Nutzung in Schulen und Universitäten: kostenlos.
•
Upload, Verbreitung, Bearbeitung, Übersetzung sowie jede
kommerzielle Nutzung: nur nach Rücksprache mit dem Autor.
•
[email protected]
Partl: Prog. Java
2
Kursablauf
1. Grundlagen
– Programmiersprachen, Java
2. Sprachelemente
– Namen, Daten, Anweisungen, Konzepte
3. Objektorientierte Programmierung
– Klassen, Vererbung, Analyse und Design, Kapselung
4. Klassenbibliothek
– Pakete, Graphische User-Interfaces, Datenbanken
5. weitere Informationen
Partl: Prog. Java
3
Programmieren
•
Wie sage ich dem Computer, was er tun soll?
Partl: Prog. Java
4
Beispiel: ein Programm
Ein Programm soll folgende Kreisberechnungen durchführen:
Radius =
Umfang =
Flaeche =
5.00000
31.41593
78.53982
Wie kann ein solches Programm aussehen?
Was muss ich schreiben, damit der Computer das macht?
Partl: Prog. Java
5
Beispiel: Quellprogramm (Fortran)
1
program kreis
pi = 3.14159265
r = 5.0
umfang = 2 * r * pi
flaeche = r * r * pi
write (*,1) 'Radius ', r
write (*,1) 'Umfang ', umfang
write (*,1) 'Flaeche', flaeche
format (a7, ' = ', f10.5)
end
Partl: Prog. Java
6
Programmiersprachen
•
kommerziell: COBOL, PL/I, SQL
•
technisch-mathematisch: FORTRAN, Basic
•
algorithmisch: Algol, Pascal, C
•
objekt-orientiert: Modula, C++, VisualBasic, Java, C#
•
andere: Ada, LISP, Perl, PHP, JavaScript, ...
Partl: Prog. Java
7
Programm-Elemente
•
•
•
Variable = Datenfelder
Konstante = Datenwerte
Dateien (Files) = Ein- und Ausgabe von Daten
Partl: Prog. Java
8
Programm-Elemente
•
•
•
Variable = Datenfelder
Konstante = Datenwerte
Dateien (Files) = Ein- und Ausgabe von Daten
•
Anweisungen (Statements) = Aktionen
– eine nach der anderen ;
– Abzweigungen (if, switch)
– Schleifen (for, while, do)
Partl: Prog. Java
9
Programm-Elemente
•
•
•
Variable = Datenfelder
Konstante = Datenwerte
Dateien (Files) = Ein- und Ausgabe von Daten
•
Anweisungen (Statements) = Aktionen
– eine nach der anderen ;
– Abzweigungen (if, switch)
– Schleifen (for, while, do)
•
strukturierte Programmierung:
– Blöcke von Statements { }
– Unterprogramme (Methoden)
– Hauptprogramm (main)
Partl: Prog. Java
10
Beispiel: HelloWorld (Java)
public class HelloWorld {
public static void main (String[] args) {
System.out.println("Hello World!");
}
}
Partl: Prog. Java
11
Java
Insel?
Kaffee?
Programmiersprache!
Partl: Prog. Java
12
Eigenschaften von Java
•
plattformunabhängig
•
Objekt-orientiert
•
Syntax ähnlich wie bei C und C++
•
umfangreiche Klassenbibliothek
•
Sicherheit von Internet-Anwendungen
Partl: Prog. Java
13
Vorgangsweise
1. Editor
notepad "Xxxxx.java"
=> Source-Programm
2. Compiler, Übersetzer
=> Binärprogramm, Bytecode
javac Xxxxx.java
3. Ausführung
java Xxxxx
=> Ergebnisse
Partl: Prog. Java
14
Mit Java arbeiten
Start Progr. Zubehör Editor
(weißes Notepad-Fenster)
Start Progr. Zubehör Eingab.
(schwarzes DOS-Fenster,
Folder eigenername)
... Programm schreiben ...
speichern unter
• Folder eigenername
• Datei "Classname.java"
javac Classname.java
... Programm korrigieren ...
speichern
javac Classname.java
java Classname
Partl: Prog. Java
15
Übung: HelloWorld
public class HelloWorld {
public static void main (String[] args) {
System.out.println("Hello World!");
}
}
Befehle:
• notepad
• speichern unter: "HelloWorld.java" in Ihrem Directory
• javac HelloWorld.java
• java HelloWorld
Partl: Prog. Java
16
Wiederholung
Programmiersprachen
Java
Vorgangsweise
Fragen ? ? ?
Partl: Prog. Java
17
Kursablauf
1. Grundlagen
– Programmiersprachen, Java
2. Sprachelemente
– Namen, Daten, Anweisungen, Konzepte
3. Objektorientierte Programmierung
– Klassen, Vererbung, Analyse und Design, Kapselung
4. Klassenbibliothek
– Pakete, Graphische User-Interfaces, Datenbanken
5. weitere Informationen
Partl: Prog. Java
18
Sprachelemente
•
•
•
Namen
Daten
Anweisungen
•
Übungen
•
Hinweise für Programmierer: Fehlersuche, Konzepte
Partl: Prog. Java
19
Namen
Namenskonventionen:
• KlassenName
(beginnt Groß)
• datenFeldName
(beginnt klein)
• methodenName
(beginnt klein)
Reservierte Wörter
Partl: Prog. Java
20
Daten
Partl: Prog. Java
21
Datenfelder (Variable)
die wichtigsten Datentypen
• int = ganze Zahl (integer)
• double = Zahl mit Komma und Exponent
• boolean = logischer Wert (ja oder nein)
• String = Zeichenkette
Werte (Konstante, Literals)
int i;
i = -1234;
double x;
x = -123.45;
boolean b;
b = true;
String s;
s = "Abc";
x = 1.0E23
b = false;
s = null;
Partl: Prog. Java
22
Deklarationen und Anfangswerte
typ name;
name = wert;
typ name = wert;
Beispiele:
int gebJahr;
gebJahr = 1972;
int anzahl = 0;
Partl: Prog. Java
23
Deklaration von Objekten
•
•
Typ ist der Klassenname
Das Objekt wird mit einem Konstruktor erzeugt
ClassName name;
name = new ClassName();
ClassName name = new ClassName();
Beispiele:
Date gebDatum;
gebDatum = new Date();
Person kursleiter = new Person();
Partl: Prog. Java
24
Ausdrücke und Operatoren
Mathematische Operatoren:
+ - * / %
Zuweisungen:
=
Logische Operatoren:
< > <= >=
==
!=
!
&&
||
Klammern:
( )
Beispiele:
a = ( b + c ) / 2;
i = i + 1;
if ( ( alter >= 15 ) && ( alter <= 65 ) )
Partl: Prog. Java
25
Ausdrücke (Forts.)
Text-Operationen (String)
String name = vorName + " " + zuName;
Funktionen (Math)
x = Math.sqrt(y);
Partl: Prog. Java
26
Anweisungen
•
•
Aktionen im Programm
Verarbeitung der Daten
Partl: Prog. Java
27
Anweisungen (Statements)
Statement ;
Blöcke von Statements:
{
Statement ;
Statement ;
}
Kommentare:
// Kommentar bis Zeilenende
/* Kommentar */
Partl: Prog. Java
28
Beispiel: expressions
public class ProgExpr {
/* Beispiel fuer eine einfache Berechnung */
public static void main (String[] args) {
int guthaben = 1000;
System.out.println ("Guthaben = " + guthaben);
int einzahlung = 500;
System.out.println ("Einzahlung = " + einzahlung);
guthaben = guthaben + einzahlung;
System.out.println ("Guthaben = " + guthaben);
}
}
Ausgabe:
Guthaben
= 1000
Einzahlung = 500
Guthaben
= 1500
Partl: Prog. Java
29
Übung: einfache Rechnung
a=6
b=7
Wie viel ist a mal b?
Partl: Prog. Java
30
Beispiel: einfache Rechnung
public class EinfRech {
public static void main (String[] args) {
int a = 6;
int b = 7;
int c = a * b;
System.out.println(c);
}
}
Partl: Prog. Java
31
Ablaufsteuerung
•
Entscheidungen = Abzweigungen:
if, else
•
Wiederholungen = Schleifen:
while, for
Partl: Prog. Java
32
if (wenn - dann)
if ( logischer Ausdruck ) {
Statements;
}
Beispiel:
if ( guthaben >= 1000000 ) {
System.out.println ("Du bist Millionaer!");
}
Partl: Prog. Java
33
Beispiel: if
public class ProgIf {
public static void main (String[] args) {
int guthaben = 2000000;
System.out.println ("Guthaben = " + guthaben);
if ( guthaben >= 1000000 ) {
System.out.println ("Gratuliere, Du bist Millionaer!");
}
}
}
Ausgabe:
Guthaben
= 2000000
Gratuliere, Du bist Millionaer!
Partl: Prog. Java
34
if - else (wenn - dann - sonst)
if ( logischer Ausdruck ) {
Statements;
}
else {
Statements;
}
Partl: Prog. Java
35
Übung: einfacher Vergleich
a=6
b=7
Ist a größer als b?
Partl: Prog. Java
36
Beispiel: einfacher Vergleich
public class EinfVergl {
public static void main (String[] args) {
int a = 6;
int b = 7;
if ( a > b ) {
System.out.println("ja, a ist größer.");
}
else {
System.out.println("nein, a ist nicht größer.");
}
}
}
Partl: Prog. Java
37
while (solange)
while ( logischer Ausdruck ) {
Statements;
}
Beispiel:
while ( guthaben < sparziel ) {
guthaben = guthaben + einzahlung;
System.out.println ("neues Guthaben = " + guthaben);
}
System.out.println( "Sparziel erreicht.");
Partl: Prog. Java
38
Beispiel: while
public class ProgWhile {
public static void main (String[] args) {
int guthaben = 1000;
int sparziel = 8000;
int einzahlung = 600;
System.out.println ("Guthaben = " + guthaben);
System.out.println ("Sparziel = " + sparziel);
while ( guthaben < sparziel ) {
guthaben = guthaben + einzahlung;
System.out.println ("neues Guthaben = " + guthaben);
}
System.out.println( "Sparziel erreicht.");
}
}
Partl: Prog. Java
39
Beispiel: while
Ausgabe:
Guthaben
= 1000
Sparziel
= 8000
neues Guthaben = 1600
neues Guthaben = 2200
...
neues Guthaben = 7600
neues Guthaben = 8200
Sparziel erreicht.
Partl: Prog. Java
40
for (für bestimmte Anzahl)
for ( int name=Anfangswert ;
logischer Ausdruck ;
Wertänderung ) {
Statements;
}
Beispiel:
for ( int monat=1; monat<=6; monat=monat+1 ) {
guthaben = guthaben + einzahlung;
System.out.println (monat + ". Monat:");
System.out.println (" Guthaben = " + guthaben);
}
Partl: Prog. Java
41
Beispiel: for
public class ProgFor {
public static void main (String[] args) {
int guthaben = 1000;
int einzahlung = 500;
System.out.println ("Guthaben = " + guthaben);
System.out.println ("Einzahlung = " + einzahlung
+ " pro Monat");
for ( int monat=1; monat<=6; monat=monat+1 ) {
guthaben = guthaben + einzahlung;
System.out.println (monat + ". Monat:");
System.out.println (" Guthaben = " + guthaben);
}
}
}
Partl: Prog. Java
42
Beispiel: for
Ausgabe:
Guthaben
Einzahlung
1. Monat:
Guthaben
2. Monat:
Guthaben
...
6. Monat:
Guthaben
= 1000
= 500 pro Monat
= 1500
= 2000
= 4000
Partl: Prog. Java
43
Übung: Quadratzahlen
Quadratzahlen berechnen und ausgeben:
1*1=1
2*2=4
3*3=9
usw. bis
20 * 20 = 400
Partl: Prog. Java
44
Beispiel: Quadratzahlen
public class Quadrat {
public static void main (String[] args) {
System.out.println(" Quadratzahlen:");
for ( int zahl=1; zahl<=20; zahl=zahl+1 ) {
int quad = zahl * zahl;
System.out.println (zahl + " * " + zahl + " = " + quad );
}
}
}
Partl: Prog. Java
45
Kursablauf
1. Grundlagen
– Programmiersprachen, Java
2. Sprachelemente
– Namen, Daten, Anweisungen, Hinweise und Konzepte
3. Objektorientierte Programmierung
– Klassen, Vererbung, Analyse und Design, Kapselung
4. Klassenbibliothek
– Pakete, Graphische User-Interfaces, Datenbanken
5. weitere Informationen
Partl: Prog. Java
46
Hinweise für Programmierer
•
•
Fehlersuche und Fehlerbehebung
Konzepte zur Programmstruktur
Partl: Prog. Java
47
Fehlersuche (Debugging)
•
Computer sind unglaublich dumme Geräte,
die unglaublich intelligente Sachen können.
Programmierer sind unglaublich intelligente Leute,
die unglaublich dumme Sachen produzieren.
"Die Presse", 30.8.1999
•
Nur wer nichts arbeitet, macht keine Fehler.
•
Der gute Programmierer ist nicht der, der keine Fehler macht,
sondern der, der seine Fehler rasch findet und behebt.
Partl: Prog. Java
48
Programm mit Fehler
// Anfangswerte eingeben
anfangswert = ...
// erster Teil der Berechnungen
zwischenergebnis = ...
// zweiter Teil der Berechungen
ergebnis = ...
// Ausgabe des Ergebnisses:
System.out.println ("Ergebnis = " + ergebnis);
•
... und das Ergebnis ist falsch!
•
Wo liegt der Fehler?
Partl: Prog. Java
49
Fehler finden
// Anfangswerte eingeben
anfangswert = ...
System.out.println ("Anfangswert = " + anfangswert);
// erster Teil der Berechnungen
zwischenergebnis = ...
System.out.println ("Zwischenergebnis = " +
zwischenergebnis);
// zweiter Teil der Berechungen
ergebnis = ...
// Ausgabe des Ergebnisses:
System.out.println ("Ergebnis = " + ergebnis);
Partl: Prog. Java
50
Test- und Produktionsversion
static final boolean TEST = true;
// Anfangswerte eingeben
anfangswert = ...
if (TEST) {
System.out.println ("Anfangswert = " + anfangswert);
}
// erster Teil der Berechnungen
zwischenergebnis = ...
if (TEST) {
System.out.println ("Zwischenergebnis = " + zwischenergebnis);
}
// zweiter Teil der Berechungen
ergebnis = ...
// Ausgabe des Ergebnisses:
System.out.println ("Ergebnis = " + ergebnis);
Partl: Prog. Java
51
Programmierkonzepte
•
Wie gehe ich es an?
•
Wie zerlege ich komplexe Aufgaben in übersichtliche Teile?
Partl: Prog. Java
52
Programmierkonzepte
•
strukturierte Programmierung:
möglichst kleine Einheiten
=
+
+
Partl: Prog. Java
53
Programmierkonzepte
•
objekt-orientierte Programmierung (OOP):
Daten & Aktionen
+
=
Partl: Prog. Java
54
Programmierkonzepte
•
top-down:
zuerst das Grundgerüst,
dann die Details
•
bottom-up:
zuerst die Einzelteile,
dann zusammenbauen
Partl: Prog. Java
55
Wiederholung
Namen
Daten, Werte und Ausdrücke
Anweisungen
Fehlersuche und Konzepte
Fragen ? ? ?
Partl: Prog. Java
56
Kursablauf
1. Grundlagen
– Programmiersprachen, Java
2. Sprachelemente
– Namen, Daten, Anweisungen, Konzepte
3. Objektorientierte Programmierung
– eine erste kurze Einführung
– Klassen, Vererbung, Analyse und Design, Kapselung
4. Klassenbibliothek
– Pakete, Graphische User-Interfaces, Datenbanken
5. weitere Informationen
Partl: Prog. Java
57
Objekte und Klassen
•
erste kurze Einführung
•
ein "besseres", erweiterbares Hello-World-Programm
als Muster für objekt-orientierte Programme
Partl: Prog. Java
58
Beispiel: HelloText-Objekt
public class HelloText {
public String messageText = "Hello World!";
public void printText() {
System.out.println (messageText);
}
public static void main (String[] args) {
HelloText h = new HelloText();
h.printText();
}
}
Partl: Prog. Java
59
Beispiel: mehrere Objekte
public class MultiText {
public static void main (String[] args) {
HelloText engl = new HelloText();
HelloText germ = new HelloText();
germ.messageText = "Hallo, liebe Leute!";
HelloText cat = new HelloText();
cat.messageText = "Miau!";
engl.printText();
germ.printText();
engl.printText();
cat.printText();
engl.printText();
}
}
Partl: Prog. Java
60
Kursablauf
1. Grundlagen
– Programmiersprachen, Java
2. Sprachelemente
– Namen, Daten, Anweisungen, Konzepte
3. Objektorientierte Programmierung
– Klassen, Vererbung, Analyse und Design, Kapselung
4. Klassenbibliothek
– Pakete, Graphische User-Interfaces, Datenbanken
5. weitere Informationen
Partl: Prog. Java
61
Objekte und Klassen
•
OOP = Objekt-orientierte Programmierung
Partl: Prog. Java
62
Objekt-orientierte Programmierung
•
Prozedurale Programmierung:
Daten <== ? ? ? ? ? ==>
•
Aktionen
Objekt-orientierte Programmierung (OOP):
( Daten & Aktionen )
<== ==> !
Partl: Prog. Java
63
Klassen und Objekte
•
Klasse = Menge = Programm = Bauplan des Architekten
public class ClassName {
....
}
•
Objekt = Exemplar = Datenfeld in Programm =
erzeugt mit Konstruktor (Baumeister)
Classname object = new Classname();
...
Partl: Prog. Java
64
Klassen und Objekte
•
Klasse = Bauplan des Architekten
public class ClassName {
// Definition von Datenfeldern
// Definition von Methoden
}
•
Objekt = erzeugt mit Konstruktor (Baumeister)
Classname object = new Classname();
... object.field ...
object.method();
Partl: Prog. Java
65
Beispiel: HelloText-Objekt
public class HelloText {
public String messageText = "Hello World!";
public void printText() {
System.out.println (messageText);
}
public static void main (String[] args) {
HelloText h = new HelloText();
h.printText();
}
}
Partl: Prog. Java
66
Beispiel: mehrere Objekte
public class MultiText {
public static void main (String[] args) {
HelloText engl = new HelloText();
HelloText germ = new HelloText();
germ.messageText = "Hallo, liebe Leute!";
HelloText cat = new HelloText();
cat.messageText = "Miau!";
engl.printText();
germ.printText();
engl.printText();
cat.printText();
engl.printText();
}
}
Partl: Prog. Java
67
Datenfelder (Objekteigenschaften)
public typ name;
public typ name = anfangswert;
Verwendung:
object.name
innerhalb der Klasse:
name oder this.name
Partl: Prog. Java
68
Methoden (Aktionen)
public typ name (typ name, typ name, typ name) {
Statements;
return wert;
}
public void name (typ name, typ name, typ name) {
Statements;
}
public void name () {
Statements;
}
Partl: Prog. Java
69
Methoden (Forts.)
Verwendung (Aufruf, Ausführung):
x = object.name();
object.name();
x = object.name (a, b, c);
object.name (a, b, c);
innerhalb der Klasse:
name() oder this.name()
Partl: Prog. Java
70
static
•
statische Datenfelder und Methoden
– nicht einmal pro Objekt (dynamisch),
– sondern einmal pro Klasse, von Anfang an
– Aufruf über Klassenname statt Objektreferenz
•
main-Methode (Hauptprogramm):
public static void main (String[ ] args) {
…
}
Partl: Prog. Java
71
Konstruktoren
•
•
automatisch erzeugt = Default-Konstruktor
oder selbst definiert: ...
Verwendung (Objekt erzeugen):
ClassName object = new ClassName();
Partl: Prog. Java
72
Wiederholung: Aufbau einer Klasse
public class HelloText {
public String messageText = "Hello World!";
public void printText() {
System.out.println (messageText);
}
public static void main (String[] args) {
HelloText h = new HelloText();
h.printText();
}
}
Partl: Prog. Java
73
Übung: einfache Person
•
•
Klasse Person:
– Eigenschaften:
• vorname
• zuname
– Methode:
• public String toString()
Klasse PersTest:
– main-Methode
• Person hans = new Person();
hans.vorname = "Hans";
hans.zuname = "Glück";
System.out.println ( hans.vorname );
System.out.println ( hans );
Partl: Prog. Java
74
Beispiel: einfache Person
public class Person {
public String vorname;
public String zuname;
public String toString() {
return this.vorname + " " + this.zuname;
}
}
Partl: Prog. Java
75
public class PersTest {
public static void main (String[] args) {
Person anna;
anna = new Person ();
anna.vorname = "Anna";
anna.zuname = "Schmidt";
...
System.out.println( anna.vorname );
...
System.out.println( anna );
...
}
}
Partl: Prog. Java
76
Kursablauf
1. Grundlagen
– Programmiersprachen, Java
2. Sprachelemente
– Namen, Daten, Anweisungen, Konzepte
3. Objektorientierte Programmierung
– Objekte, Klassen, Datenfelder, Methoden, Konstruktoren
– Vererbung, Analyse und Design, Kapselung
4. Klassenbibliothek
– Pakete, Graphische User-Interfaces, Datenbanken
5. weitere Informationen
Partl: Prog. Java
77
Vererbung
•
Allgemeiner Fall = Oberklasse
•
Spezialfall = Unterklasse "erbt" von der Oberklasse
Partl: Prog. Java
78
Vererbung
public class Person {
public String name;
public Date geburtsDatum;
...
}
public class Beamter extends Person {
public int dienstKlasse;
public Date eintrittsDatum;
...
}
Partl: Prog. Java
79
Vererbung (Forts.)
•
Verwendung der Klassen:
Person mutter;
Person vater;
mutter = new Person();
vater = new Beamter();
•
Methoden überschreiben (override, Polymorphismus)
– in der Unterklasse eine eigene, spezielle Version
– Dann wird diese spezielle Version genommen
statt der allgemeinen Version in der Oberklasse
Partl: Prog. Java
80
Übung: Person und Student
•
•
•
Person:
– Eigenschaften: vorname, zuname
– Methode: toString()
Student:
– zusätzliche Eigenschaft: uni
– überschriebene Methode: toString()
PersTest:
– main-Methode: auch Student ...
Partl: Prog. Java
81
Beispiel: einfacher Student
public class Student extends Person {
public String uni;
public String toString() {
String s;
s = vorname + ", studiert an " + uni;
return s;
}
}
Partl: Prog. Java
82
public class PersTest {
public static void main (String[] args) {
...
Student georg = new Student ();
georg.vorname = "Georg" ;
georg.zuname = "Fischer" ;
georg.uni = "BOKU" ;
...
System.out.println( georg.vorname );
...
System.out.println( georg );
...
}
}
Partl: Prog. Java
83
Kursablauf
1. Grundlagen
– Programmiersprachen, Java
2. Sprachelemente
– Namen, Daten, Anweisungen, Konzepte
3. Objektorientierte Programmierung
– Objekte, Klassen, Datenfelder, Methoden, Konstruktoren
– Vererbung, Analyse und Design, Kapselung
4. Klassenbibliothek
– Pakete, Graphische User-Interfaces, Datenbanken
5. weitere Informationen
Partl: Prog. Java
84
Analyse und Design
•
•
•
OOA = Objekt-orientierte Analyse
OOD = Objekt-orientiertes Design
OOP = Objekt-orientierte Programmierung
•
Objektverbindungen
Partl: Prog. Java
85
Objektorientierte Analyse & Design
komplexes System => einzelne Objekte
Objekte:
• einfach
• abgeschlossen
Analyse:
• Hauptwort
• Eigenschaftswort
• Zeitwort
• "A hat ein B"
• "A ist ein B"
=> Objekt, Datenfeld
=> Datenfeld
=> Methode
=> Datenfeld
=> Vererbung
Partl: Prog. Java
86
Design-Übung: Konto und Person
Analyse (Beziehungen in deutschen Sätzen)
und Design (Klassen, Datenfelder, Methoden)
•
•
•
•
•
•
•
•
abheben
einzahlen
Guthaben
Konto
Person
Student
Vorname
Zuname
Partl: Prog. Java
87
Beispiel: Analyse Konto und Person
•
Jede Person hat einen Vornamen.
•
Jede Person hat einen Zunamen.
•
Manche Personen haben ein oder mehrere Konten,
manche haben kein Konto.
•
Jeder Student ist eine Person.
•
Jedes Konto gehört einer Person (Inhaber).
•
Jedes Konto hat einen Kontostand (Guthaben).
•
Auf ein Konto kann man einen Geldbetrag einzahlen.
•
Von einem Konto kann man einen Geldbetrag abheben.
Partl: Prog. Java
88
Beispiel: Design Konto und Person
•
Klasse Person
– Eigenschaften: Vorname, Zuname, evtl. Liste der Konten
•
Klasse Student
– Unterklasse von Person
•
Klasse Konto
– Eigenschaften: Inhaber (Person), Guthaben
– Methoden: einzahlen, abheben
Partl: Prog. Java
89
Übung: einfaches Konto
Klasse Konto:
• Eigenschaften:
– inhaber (Typ: Person)
– guthaben (Typ: double)
• Methoden:
– public void einzahlen (double betrag)
– public void abheben (double betrag)
– public String toString()
• main-Methode:
– Person p = new Person();
// auch Student?
…
Konto k = new Konto();
k.inhaber = p
k.einzahlen(100.0); System.out.println(k); ...
Partl: Prog. Java
90
Beispiel: einfaches Konto
public class Konto {
public Person inhaber;
public double guthaben = 0.0;
public void einzahlen (double betrag) {
guthaben = guthaben + betrag ;
}
public void abheben (double betrag) {
guthaben = guthaben - betrag ;
}
public String toString() {
return inhaber + ": " + guthaben + " Euro";
}
Partl: Prog. Java
91
public static void main (String[] args) {
Person hans = new Person();
hans.vorname = "Hans";
hans.zuname = "Reich";
Konto hansKonto = new Konto();
hansKonto.inhaber = hans;
System.out.println(hansKonto);
hansKonto.einzahlen(1000.0);
System.out.println(hansKonto);
hansKonto.abheben(200.0);
System.out.println(hansKonto);
...
}
}
Partl: Prog. Java
92
Kursablauf
1. Grundlagen
– Programmiersprachen, Java
2. Sprachelemente
– Namen, Daten, Anweisungen, Konzepte
3. Objektorientierte Programmierung
– Objekte, Klassen, Datenfelder, Methoden, Konstruktoren
– Vererbung, Analyse und Design, Kapselung
4. Klassenbibliothek
– Pakete, Graphische User-Interfaces, Datenbanken
5. weitere Informationen
Partl: Prog. Java
93
Kapselung
•
Sichtbarkeit / Data Hiding
•
•
nach außen notwendig = bitte nicht verändern
nur intern verwendet = kann verändert werden
•
Java Beans
Partl: Prog. Java
94
Sichtbarkeit
•
•
•
public
...
private
Partl: Prog. Java
95
Java Beans - Konventionen
public class ClassName {
private typ xxxx = anfangswert;
public void setXxxx (typ xxxx) {
// Gültigkeit des Wertes kontrollieren
this.xxxx = xxxx;
}
public typ getXxxx() {
return this.xxxx;
}
}
Partl: Prog. Java
96
Skizze: HelloBean
public class HelloBean {
private String messageText = "Hello World!";
public void setMessageText(String newText) {
messageText = newText;
}
public String getMessageText() {
return messageText;
}
public void printText() {
System.out.println (messageText);
}
Partl: Prog. Java
97
public static void main (String[] args) {
HelloBean engl = new HelloBean();
HelloBean germ = new HelloBean();
germ.setMessageText("Hallo, liebe Leute!");
HelloBean cat = new HelloBean();
cat.setMessageText("Miau!");
engl.printText();
germ.printText();
engl.printText();
cat.printText();
engl.printText();
}
}
Partl: Prog. Java
98
Beispiel: schlechte Date-Klasse
public class BadDate { // very bad, don't do this!
public int year;
public int month;
public int day;
}
public class TestDate {
public static void main (String[] args) {
BadDate date1 = new BadDate();
date1.day = 35;
date1.month = 5;
date1.year = 97;
...
}
}
Partl: Prog. Java
99
Übung: Person als Java Bean
•
•
Klasse Person:
– vorname, getVorname(), setVorname(...)
– zuname, getZuname(), setZuname(...)
– toString()
Klasse PersTest:
– main-Methode
Person hans = new Person();
hans.setVorname ( "Hans" );
hans.setZuname ( "Glück" );
System.out.println ( hans.getVorname() );
System.out.println ( hans );
Partl: Prog. Java
100
Beispiel: Person als Java Bean
public class Person {
private String vorname;
private String zuname;
public void setZuname (String s) {
this.zuname = s;
}
public String getZuname() {
return this.zuname;
}
Partl: Prog. Java
101
public void setVorname (String s) {
this.vorname = s;
}
public String getVorname() {
return this.vorname;
}
public String toString() {
return this.vorname + " " + this.zuname;
}
}
Partl: Prog. Java
102
public class PersTest {
public static void main (String[] args) {
Person anna, willi;
anna = new Person ();
anna.setVorname( "Anna" );
anna.setZuname( "Schmidt" );
willi = new Person ();
willi.setVorname( "Wilhelm" );
willi.setZuname( "Schlosser" );
System.out.println("Vornamen:");
System.out.println( anna.getVorname() );
System.out.println( willi.getVorname() );
System.out.println("Komplette Informationen:");
System.out.println( anna );
System.out.println( willi );
}
}
Partl: Prog. Java
103
Übung: Person und Student als Java Beans
•
•
•
Person:
– get/setVorname, get/setZuname, toString()
Student:
– get/setUni, toString()
PersTest:
– main-Methode
Partl: Prog. Java
104
Beispiel: Student als Java Bean
public class Student extends Person {
private String uni;
public void setUni (String uni) {
this.uni = uni;
}
public String getUni() {
return this.uni;
}
public String toString() {
String s;
s = getVorname() + ", studiert an " + uni;
return s;
}
}
Partl: Prog. Java
105
public class PersTest {
public static void main (String[] args) {
Person anna = new Person ();
anna.setVorname( "Anna" );
anna.setZuname( "Schmidt" );
Student georg = new Student ();
georg.setVorname( "Georg" );
georg.setZuname( "Fischer" );
georg.setUni( "BOKU" );
System.out.println( anna.getVorname() );
System.out.println( georg.getVorname() );
System.out.println( anna );
System.out.println( georg );
}
}
Partl: Prog. Java
106
Übung: Konto und Person als Java Beans
Klasse Konto:
•
•
•
•
inhaber (Typ: Person)
getInhaber, setInhaber
guthaben (Typ: double)
getGuthaben, setGuthaben, einzahlen, abheben
toString()
main-Methode:
– Person und Konto
– Student und Konto
Partl: Prog. Java
107
Beispiel: Konto als Java Bean
public class Konto {
private Person inhaber;
private double guthaben = 0.0;
public void setInhaber (Person inhaber) {
this.inhaber = inhaber;
}
public Person getInhaber() {
return this.inhaber;
}
Partl: Prog. Java
108
private void setGuthaben (double neuerBetrag)
if (neuerBetrag >= 0.0) {
this.guthaben = neuerBetrag;
}
}
public double getGuthaben() {
return this.guthaben;
}
public void einzahlen (double betrag) {
this.setGuthaben( this.guthaben + betrag );
}
public void abheben (double betrag) {
this.setGuthaben( this.guthaben - betrag );
}
}
Partl: Prog. Java
109
public String toString() {
return this.inhaber + ": " + this.guthaben + " Euro";
}
public static void main (String[] args) {
Person hubert = new Person ();
hubert.setVorname("Hubert");
hubert.setZuname("Partl");
Konto kontoH = new Konto();
kontoH.setInhaber(hubert);
System.out.println(kontoH);
kontoH.einzahlen(1000.0);
System.out.println(kontoH);
kontoH.abheben(500.0);
System.out.println(kontoH);
Partl: Prog. Java
110
Student anna = new Student();
anna.setZuname("Fleißig");
anna.setVorname("Anna");
anna.setUni("BOKU");
Konto kontoA = new Konto();
kontoA.setInhaber(anna);
System.out.println(kontoA);
kontoA.einzahlen(1000.0);
System.out.println(kontoA);
kontoA.abheben(500.0);
System.out.println(kontoA);
}
}
Partl: Prog. Java
111
Wiederholung
Klassen, Objekte, Datenfelder, Methoden
Vererbung
Objektverbindungen, Analyse und Design
Kapselung und Java-Beans
Fragen ? ? ?
Partl: Prog. Java
112
Kursablauf
1. Grundlagen
– Programmiersprachen, Java
2. Sprachelemente
– Namen, Daten, Anweisungen, Konzepte
3. Objektorientierte Programmierung
– Klassen, Vererbung, Analyse und Design, Kapselung
4. Klassenbibliothek
– Pakete, Graphische User-Interfaces, Datenbanken
5. weitere Informationen
Partl: Prog. Java
113
Klassenbibliothek
•
mehr als 1.000 nützliche Programme
•
•
•
Beispiele:
Graphische User-Interfaces
Datenbanken
Partl: Prog. Java
114
Java-Pakete
•
java.lang (language)
•
java.awt und java.awt.event (abstract windowing toolkit)
•
java.util und java.text (utilities)
•
java.io (input, output)
•
java.net (networking)
•
java.sql (structured query language)
Partl: Prog. Java
115
Kursablauf
1. Grundlagen
– Programmiersprachen, Java
2. Sprachelemente
– Namen, Daten, Anweisungen, Konzepte
3. Objektorientierte Programmierung
– Klassen, Vererbung, Analyse und Design, Kapselung
4. Klassenbibliothek
– Pakete, Graphische User-Interfaces, Datenbanken
5. weitere Informationen
Partl: Prog. Java
116
Beispiel: Konto-GUI
•
Graphisches User-Interface für unser Konto
Partl: Prog. Java
117
Konto-GUI - erster Schritt
•
Datenmodell (model)
•
Klassen:
– Person
– Konto
– KontoFrame (Fenster)
– FensterTest (main-Methode)
Partl: Prog. Java
118
Konto-GUI - erster Schritt
public class FensterTest {
public static void main (String[] args) {
Person hans = new Person();
hans.setVorname("Hans");
hans.setZuname("Reich");
Konto hansKonto = new Konto();
hansKonto.setInhaber(hans);
KontoFrame fenster = new KontoFrame();
fenster.setKonto(hansKonto);
fenster.setVisible(true);
}
}
Partl: Prog. Java
119
import java.awt.*;
import java.awt.event.*;
import java.text.*;
public class KontoFrame extends Frame {
private Konto meinKonto = null;
public void setKonto (Konto k) {
this.meinKonto = k;
}
public Konto getKonto() {
return meinKonto;
}
}
Partl: Prog. Java
120
Konto-GUI erster Schritt
•
•
•
leeres Fenster, nichts zu sehen
Mausklicks funktionieren nicht
Abbruch mit Ctrl-C oder Task-Manager
Partl: Prog. Java
121
Konto-GUI - zweiter Schritt
•
Datenmodell (model)
•
Ansicht (view)
Partl: Prog. Java
122
Konto-GUI - zweiter Schritt
import java.awt.*;
import java.awt.event.*;
import java.text.*;
public class KontoFrame extends Frame {
private Konto meinKonto = null;
Partl: Prog. Java
123
private Label inhaberText = new Label("Inhaber");
private Label inhaberAnzeige = new Label();
private Label guthabenText = new Label("Kontostand");
private Label guthabenAnzeige = new Label();
private Label betragText = new Label("Betrag eingeben");
private TextField betragEingabe = new TextField("100");
private Button einzahlenButton = new Button("einzahlen");
private Button abhebenButton = new Button("abheben");
Partl: Prog. Java
124
private GridLayout fensterLayout =
new GridLayout (4, 2);
private DecimalFormat geldFormat =
new DecimalFormat("#,##0.00");
public void setKonto (Konto k) {
this.meinKonto = k;
}
public Konto getKonto() {
return meinKonto;
}
Partl: Prog. Java
125
public void init () {
Person inhaber = meinKonto.getInhaber();
String inhString = inhaber.toString();
inhaberAnzeige.setText(inhString);
double guthaben = meinKonto.getGuthaben();
String gutString = geldFormat.format(guthaben);
guthabenAnzeige.setText(gutString);
Partl: Prog. Java
126
this.setSize(300,150);
this.setTitle("Konto-Fenster");
this.setLayout(fensterLayout);
this.add(inhaberText);
this.add(inhaberAnzeige);
this.add(guthabenText);
this.add(guthabenAnzeige);
this.add(betragText);
this.add(einzahlenButton);
this.add(betragEingabe);
this.add(abhebenButton);
}
}
Partl: Prog. Java
127
public class FensterTest {
public static void main (String[] args) {
...
KontoFrame fenster = new KontoFrame();
fenster.setKonto(hansKonto);
fenster.init();
fenster.setVisible(true);
}
}
Partl: Prog. Java
128
Demo: Konto-GUI zweiter Schritt
•
•
•
sieht schön aus
Mausklicks funktionieren nicht
Abbruch mit Ctrl-C oder Task-Manager
Partl: Prog. Java
129
Konto-GUI - dritter Schritt
•
Datenmodell (model)
•
Ansicht (view)
•
Steuerung (event handling, controller)
Partl: Prog. Java
130
Konto-GUI - dritter Schritt
import ...
public class KontoFrame extends Frame
implements ActionListener, WindowListener {
...
public void init () {
...
einzahlenButton.addActionListener(this);
abhebenButton.addActionListener(this);
this.addWindowListener(this);
}
Partl: Prog. Java
131
public void actionPerformed (ActionEvent e) {
String betragString = betragEingabe.getText().trim();
double betrag = Double.parseDouble( betragString );
Object angeklickt = e.getSource();
if (angeklickt == einzahlenButton ) {
meinKonto.einzahlen( betrag );
}
if (angeklickt == abhebenButton ) {
meinKonto.abheben( betrag );
}
double guthaben = meinKonto.getGuthaben();
String gutString = geldFormat.format(guthaben);
guthabenAnzeige.setText(gutString);
}
Partl: Prog. Java
132
public void windowClosing (WindowEvent e) {
this.setVisible(false);
System.exit(0);
}
public void windowClosed (WindowEvent e) { }
public void windowOpened (WindowEvent e) { }
public void windowIconified (WindowEvent e) { }
public void windowDeiconified (WindowEvent e) { }
public void windowActivated (WindowEvent e) { }
public void windowDeactivated (WindowEvent e) { }
}
Partl: Prog. Java
133
Demo: Konto-GUI dritter Schritt
•
alles funktioniert!
Partl: Prog. Java
134
Kursablauf
1. Grundlagen
– Programmiersprachen, Java
2. Sprachelemente
– Namen, Daten, Anweisungen, Konzepte
3. Objektorientierte Programmierung
– Klassen, Vererbung, Analyse und Design, Kapselung
4. Klassenbibliothek
– Pakete, Graphische User-Interfaces, Datenbanken
5. weitere Informationen
Partl: Prog. Java
135
Datenbanken
<===>
Java GUI
Datenbank
Partl: Prog. Java
136
Relationale Datenbanken
•
•
•
Tabellen (Relationen)
Spalten = Datenfelder
Zeilen = Datensätze (Records)
Mitarbeiter
Vorname
Hans
Grete
Peter
Zuname
Fleißig
Tüchtig
Gscheitl
Geburtsjahr
1972
1949
1968
Gehalt
2400.00
3200.00
1600.00
Partl: Prog. Java
137
Structured Query Language SQL
•
Datenbank-Struktur ändern:
CREATE, ALTER, DROP
•
Daten ändern:
INSERT, UPDATE, DELETE
•
Daten abfragen:
SELECT
Partl: Prog. Java
138
SQL-Befehle zur Datenänderung
INSERT INTO Employees (EmployeeNumber, FirstName,
LastName, BirthYear, Salary)
VALUES (4711, 'Grete', 'Tüchtig', 1949, 3200.0)
UPDATE Employees SET Salary = 3600.0
WHERE LastName = 'Tüchtig'
DELETE FROM Employees
WHERE EmployeeNumber = 4710
Partl: Prog. Java
139
SQL-Befehle zur Datenabfrage
SELECT * FROM Employees
SELECT LastName, Salary FROM Employees
WHERE BirthYear <= 1970
ORDER BY Salary DESC
SELECT * FROM Employees
WHERE LastName = 'Fleißig' AND FirstName LIKE 'H%'
Partl: Prog. Java
140
Datenbankzugriff in Java
•
•
Java Database Connectivity JDBC
Open Database Connectivity ODBC (MS-Access)
Java Virtual Machine <===> JDBC-Driver <===> Datenbank
•
Class.forName( "Drivername" );
Partl: Prog. Java
141
JDBC-Klassen (Überblick)
•
import java.sql.*;
•
Connection db = DriverManager.getConnection
("dbname", "username", "password");
•
Statement stmt = db.createStatement();
•
ResultSet rs = stmt.executeQuery ("sql");
oder
int anzahl = stmt.executeUpdate ("sql");
Partl: Prog. Java
142
Fehlerbehandlung (Exceptions)
•
normaler Programmablauf
– try = versuchen, ob es richtig abläuft
– optimistische Version ohne Fehlerbehandlung
•
Ausnahmen (Exceptions)
– catch = alle Fehlersituationen (ab)fangen
– Fehlermeldung ausgeben
– Fehler korrigieren oder Programm abbrechen
Partl: Prog. Java
143
Fehler abfangen (try, catch)
try {
Statement1;
Statement2;
Statement3;
...
StatementX;
} catch (Exception e) {
System.out.println("*** Fehler: " + e);
}
Partl: Prog. Java
144
Beispiel: Datenbank-Abfrage
import java.sql.*;
...
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection
("jdbc:odbc:databasename", "admin", "geheim");
con.setReadOnly(true);
Statement stmt = con.createStatement();
Partl: Prog. Java
145
ResultSet rs = stmt.executeQuery
("SELECT LastName, Salary, Age FROM Employees");
System.out.println("List of all employees:");
while (rs.next()) {
System.out.print(" name=" + rs.getString(1) );
System.out.print(" salary=" + rs.getDouble(2) );
System.out.print(" age=" + rs.getInt(3) );
System.out.println();
}
rs.close();
stmt.close();
con.close();
} catch ..
Partl: Prog. Java
146
Beispiel: Datenbank-Update
import java.sql.*;
...
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection
("jdbc:odbc:databasename", "admin", "geheim");
Statement stmt = con.createStatement();
Partl: Prog. Java
147
int rowCount = stmt.executeUpdate
("UPDATE Employees " +
" SET Salary = 5000.0 WHERE LastName = 'Partl' ");
System.out.println( rowCount +
"Gehaltserhoehungen durchgefuehrt." );
stmt.close();
con.close();
} catch ...
Partl: Prog. Java
148
Vorbereitung DB-Übung
•
Datenbank ist angelegt ( mit MS-Access)
– Tabelle Mitarbeiter
– ohne Passwort-Schutz
•
Datenbank ist im ODBC Manager registriert
– Datenquellenname TestDB1
Partl: Prog. Java
149
Datenbank-Übung: Geburtsjahr
Liste von Vorname und Geburtsjahr
aller Mitarbeiter am Bildschirm anzeigen
• sun.jdbc.odbc.JdbcOdbcDriver
• jdbc:odbc:TestDB1
• SELECT Vorname, Geburtsjahr
FROM Mitarbeiter
ORDER BY Vorname
Partl: Prog. Java
150
Beispiel: Geburtsjahr
import java.sql.*;
public class GebJahr {
public static void main (String[] args) {
try {
Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection
("jdbc:odbc:TestDB1");
con.setReadOnly(true);
Statement stmt = con.createStatement();
Partl: Prog. Java
151
ResultSet rs = stmt.executeQuery
("SELECT Vorname, Geburtsjahr " +
" FROM Mitarbeiter ORDER BY Vorname");
while (rs.next()) {
System.out.println
( rs.getString(1) + " " + rs.getInt(2) );
}
rs.close();
stmt.close();
con.close();
} catch (Exception e) {
System.out.println("*** Fehler: " + e);
}
}
}
Partl: Prog. Java
152
Beispiel: GUI zur Datenbank-Suche
•
•
•
•
Graphisches User-Interface
Suche nach Mitarbeitern in der Datenbank
Eingabe:
– Teilstring von Vor- oder Zuname
Ausgabe:
– Anzahl der gefundenen Teilnehmer
– Vorname, Zuname, Geburtsjahr der Teilnehmer
– Fehlermeldungen
Partl: Prog. Java
153
Datenbank-GUI
Partl: Prog. Java
154
Datenbank-Suche
SELECT Vorname, Zuname, Geburtsjahr FROM Mitarbeiter
WHERE Vorname LIKE '%xxx%'
OR Zuname LIKE '%xxx%'
ORDER BY Vorname, Zuname
Partl: Prog. Java
155
Beispiel: SuchFrame.java
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class SuchFrame extends Frame
implements ActionListener, WindowListener {
Partl: Prog. Java
156
private String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
private String database = "jdbc:odbc:TestDB1";
private Label ueberschrift =
new Label ("Teilstring-Suche in Vor- und Zunamen");
private TextField eingabe = new TextField(20);
private Button suchButton = new Button ("Suchen");
private Label ergebnis =
new Label ("0 Mitarbeiter gefunden");
private TextArea ausgabe = new TextArea(8,40);
private FlowLayout layout = new FlowLayout();
Partl: Prog. Java
157
public void init() {
try {
Class.forName( driver );
} catch (Exception e) {
ausgabe.setText("Fehler: " + e);
}
this.setTitle("Datenbank-Suche");
this.setLayout(layout);
this.setSize(360, 300);
this.add(ueberschrift);
this.add(eingabe);
this.add(suchButton);
this.add(ergebnis);
this.add(ausgabe);
eingabe.addActionListener(this);
suchButton.addActionListener(this);
this.addWindowListener(this);
}
Partl: Prog. Java
158
public void actionPerformed (ActionEvent event) {
// Enter im TextField oder Klick auf den Button
String suchString = eingabe.getText().trim();
suchen (suchString);
}
private void suchen (String x) {
int count = 0; // bisher nichts gefunden
ausgabe.setText(""); // alte Ausgabe löschen, Platz für neue
String sql =
"SELECT Vorname, Zuname, Geburtsjahr FROM Mitarbeiter "
+ " WHERE Vorname LIKE '%" + x + "%' "
+ " OR Zuname LIKE '%" + x + "%' "
+ " ORDER BY Vorname, Zuname ";
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
Partl: Prog. Java
159
try {
con = DriverManager.getConnection ( database );
stmt = con.createStatement();
rs = stmt.executeQuery ( sql );
while (rs.next()) {
String zeile =
rs.getString(1) + " " + rs.getString(2)
+ ", geb. " + rs.getInt(3);
ausgabe.append( zeile + "\n" );
count = count + 1;
}
} catch (Exception e) {
ausgabe.append( "Fehler: " + e + "\n");
}
ergebnis.setText( count + " Mitarbeiter gefunden");
Partl: Prog. Java
160
// alles schließen, was eventuell geöffnet wurde
try {rs.close(); } catch (Exception ex) { }
try {stmt.close(); } catch (Exception ex) { }
try {con.close(); } catch (Exception ex) { }
}
public void windowClosing (WindowEvent e) {
this.setVisible(false);
System.exit(0);
}
public void windowClosed (WindowEvent e) { }
public void windowOpened (WindowEvent e) { }
public void windowIconified (WindowEvent e) { }
public void windowDeiconified (WindowEvent e) { }
public void windowActivated (WindowEvent e) { }
public void windowDeactivated (WindowEvent e) { }
Partl: Prog. Java
161
public static void main (String[] args) {
SuchFrame fenster = new SuchFrame();
fenster.init();
fenster.setVisible(true);
}
}
Partl: Prog. Java
162
Wiederholung
Klassenbibliothek
Graphische User-Interfaces
Datenbanken
Fragen ? ? ?
Partl: Prog. Java
163
Kursablauf
1. Grundlagen
– Programmiersprachen, Java
2. Sprachelemente
– Namen, Daten, Anweisungen, Konzepte
3. Objektorientierte Programmierung
– Klassen, Vererbung, Analyse und Design, Kapselung
4. Klassenbibliothek
– Pakete, Graphische User-Interfaces, Datenbanken
5. weitere Informationen
Partl: Prog. Java
164
API Online-Dokumentation
•
API = Application Programming Interface
Beschreibung aller Klassen der Java-Klassenbibliothek
in HTML-Format
•
Overview
Liste aller Pakete (Packages)
•
Class Hierarchy (tree)
Liste aller Klassen (Ober- und Unterklassen)
•
Index (fields and methods, all names)
alphabetische Liste aller Eigenschaften und Methoden
Partl: Prog. Java
165
Übung Online-Dokumentation
•
•
Web-Browser starten
http://java.sun.com/j2se/1.5.0/docs/api/
•
•
Was ist System.out (Objekt)?
Was tut println (Methode)?
Partl: Prog. Java
166
Programm-Dokumentation (javadoc)
/** Beschreibender Text
*
Formatierung mit HTML-Befehlen
*/
Aufruf:
– javadoc *.java
erzeugt:
– Classname.html für jede Klasse
– index.html
– packages.html, tree.html, AllNames.html, ...
Lesen mit Web-Browser (Netscape, Internet Explorer)
– start index.html
Partl: Prog. Java
167
Übung: javadoc
•
Vorher alle eventuellen fehlerhaften
java-Dateien löschen
•
Online-Doku von allen (fehlerfreien)
Java-Programmen erzeugen:
javadoc *.java
•
Online-Doku im Web-Browser ansehen:
start index.html
Partl: Prog. Java
168
Online-Informationen über Java
englisch:
• Online-Dokumentation (API) innerhalb des JDK
• http://java.sun.com/ und http://www.javasoft.com/
• http://www.gamelan.com/
• http://www.sourceforge.net/
• http://java.sun.com/docs/books/tutorial/index.html
• http://sunsite.unc.edu/javafaq/javafaq.html
• http://mindprod.com/gloss.html
• http://www.BruceEckel.com/
Bruce Eckel
Partl: Prog. Java
169
Online-Informationen über Java
deutsch:
• http://www.dclj.de/
• http://www.boku.ac.at/javaeinf/
• http://www.gkrueger.com/
• http://www.tutego.com/javabuch/
de.comp.lang.java
Hubert Partl
Guido Krüger
Christian Ullenbohm
Newsgruppen:
• comp.lang.java.*
• de.comp.lang.java
Partl: Prog. Java
170
Was sollen wir uns merken?
1. Grundlagen
– Programmiersprachen, Java
2. Sprachelemente
– Namen, Daten, Anweisungen, Konzepte
3. Objektorientierte Programmierung
– Klassen, Vererbung, Analyse und Design, Kapselung
4. Klassenbibliothek
– Pakete, Graphische User-Interfaces, Datenbanken
5. weitere Informationen
Partl: Prog. Java
171
Danke und Auf Wiedersehen!
Herunterladen
Study collections