Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003...

73
Grundlagen der Java-Programmierung 1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim <[email protected] frankfurt.de> Jochen Franke <[email protected] frankfurt.de> Daniel Beimborn <[email protected] frankfurt.de>

Transcript of Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003...

Page 1: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 1

Einführung in die Programmierung in JAVAAG SS 2003

Veranstalter: Tim Stockheim <[email protected]>Jochen Franke <[email protected]>Daniel Beimborn <[email protected]

frankfurt.de>

Donnerstag 14.00 – 16.00 Uhr – Raum 220 C

Page 2: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 2

Ablaufplan

• 8.05.2003 Installation des JDK, Variablen,arithmetische Operatoren, Schleifen

• 15.05.2003 logische Operatoren, Bedingungen,Methoden, Eclipse als IDE

• 22.05.2003 Klassenkonzept und Vererbung, Pakete,Beispiele

• 05.06.2003 Exceptions, weitere Programmbeispiele

• 12.06.2003 Input/Output- Operationen auf Datei-system und Netzwerkebene

Page 3: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 3

Die Programmiersprache JAVA

Literaturhinweise zu Java:

• Guido Krüger: Handbuch der Java-Programmierung, 3. Auflage Addison-Wesley, 2002kostenlos im Netz: http://www.javabuch.de

• David Flanagan: Java in a Nutshell, O‘Reilly Verlag, 4. Auflage, 2000

• David Flanagan: Java Examples in a Nutshell, O‘Reilly, 2. Auflage, 2001

WWW-Adresse: http://www.javasoft.com

Page 4: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 4

Java EinführungTim Stockheim

Page 5: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 5

• Entwickelt von SUN Microsystems mit dem Ziel einer Programmiersprache für PDAs

• Sprachkonzept erwies sich als ideal für die Anforderungen des WWW

• Erste Version 1995 vorgestellt

• Syntax ähnelt der von C bzw. C++, inhaltlich bestehen aber deutliche Unterschiede

Die Programmiersprache JAVA

Page 6: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 6

JAVA ist plattformunabhängig

• Weil sich Java-Programme in ein plattformunabhängiges Byte-Codeformat übersetzen lassen, kann eine Java-Anwendung auf jedem System ausgeführt werden, solange auf diesem System die Java Virtual Machine implementiert ist.

Page 7: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 7

• Das ist insbesondere für Anwendungen wichtig, die über das Internet oder andere heterogene Netzwerke verteilt werden.

• Ein architekturunabhängiger Ansatz ist aber auch über den Rahmen netzwerkbasierter Anwendungen hinaus sinnvoll.

JAVA ist plattformunabhängig

Page 8: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 8

JAVA ist objektorientiert

• In einem objektorientierten System besteht eine Klasse aus einer Reihe von Daten, sowie aus Methoden, die mit diesen Daten arbeiten.

• Zusammengenommen beschreiben Daten und Methoden den Zustand und das Verhalten eines Objekts.

Page 9: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 9

JAVA ist objektorientiert

• Klassen werden in einer Hierarchie angeordnet, so dass Unterklassen das Verhalten von übergeordneten Klassen (Superklassen) erben können.

• Eine Klassenhierarchie besitzt immer eine Stammklasse. Diese Klasse besitzt ein sehr allgemeines Verhalten.

Page 10: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 10

Animal

Cats Dogs

DanielJochen Tim

Page 11: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 11

JAVA ist objektorientiert

• Java wird mit einem sehr umfangreichen Satz von Klassen ausgeliefert. Diese sind in Paketen angeordnet, die in den Programmen verwendet werden können.

• Beispielsweise stellt Java Klassen zur Verfügung, mit denen Komponenten grafischer Benutzerschnittstellen erzeugt werden können (das java.awt-Paket).

Page 12: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 12

JAVA ist objektorientiert

• Java stellt Klassen zur Verfügung, mit denen die Ein- und Ausgabe behandelt wird (das java.io-Paket), sowie Klassen, die die Netzwerkfunktionalität unterstützen (das java.net-Paket).

Page 13: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 13

JAVA ist interpretiert

• Java ist eine interpretierte Sprache: Der Java-Compiler erzeugt einen Byte-Code für die Java Virtual Machine (JVM) und keinen direkten Maschinencode.

• Um ein Java-Programm auszuführen, wird der Java-Interpreter benutzt, der den kompilierten Byte-Code ausführt.

Page 14: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 14

Begriffe

• Eigenständige Applikation ("normales, ausführbares Programm")

• Applet:– innerhalb eines Web-Browser oder eines Applet-Viewer ausführbar.– Container bildet zweites Betriebssystem– teilt Einschränkungen des Web-Browsers:

• kein Lese-Zugriff auf Dateisystem des Clientrechner (außer: Benutzer erlaubt es)

• nur Verbindung zum Host, von dem es geladen wurde• keine Möglichkeit des Starts von auf dem Clientrechner

vorhandenen Programmen

Diese Modell wird auch als Sandbox bezeichnet.

Page 15: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 15

Java Development Kit (JDK)

• Plattformen:– Windows, Macintosh, Linux, Sun Solaris, ...

• Befehlszeilenorientiertes Tool

• JDK - Zusammensetzung aus mehreren Tools:– Compiler: javac

– Interpreter: java

– Disassembler: javap

– Appletviewer: appletviewer

– ...

Page 16: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 16

JAVA Tutorial

Page 17: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 17

JAVA: Die Syntax

• Jede Anweisung muß mit einem Semikolon (;) abgeschlossen werden.

• JAVA unterscheidet Groß-/Kleinschreibung, d.h. z.B. "anzahl" ungleich "Anzahl".

• Beliebiges Einfügen von Leerzeichen / Leerzeilen zwischen Anweisungen zulässig.

• Kommentare innerhalb eines JAVA-Programms werden mit "/*" eingeleitet und mit "*/" beendet, z.B. /* Dies ist ein Kommentar */

• Kommentare, die nur bis zum Zeilenende gehen, werden mit "//" eingeleitet, z.B. // Kommentar

Page 18: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 18

Beispiel 1

class HelloWorld {public static void main( String[] args) {

System.out.println(“Hello World!“);}

}

• Dieses Programm besteht, wie jedes Java-Programm, aus einer Klassendefinition vom Typ public.

Page 19: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 19

Beispiel 1

• Die Klasse enthält eine Methode namens main(), die den Einstiegspunkt für alle Java-Anwendungen darstellt, d.h. an diesem Punkt beginnt der Java-Interpreter mit der Ausführung des Programms.

• main()selbst besteht nur aus einer einzigen Zeile, die unsere Nachricht ausgibt:

Hello World!

Page 20: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 20

Beispiel 1

• Das Programm muß in einer Datei gesichert werden, die den gleichen Namen besitzt, wie die public-Klasse, wobei noch die Erweiterung .java anzuhängen ist.

• Um das Programm zu kompilieren, verwendet man javacC:\>javac HelloWorld.java

• Dieser Befehl erzeugt die Datei HelloWorld.class im aktuellen Verzeichnis.

Page 21: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 21

Beispiel 1

• Um das Programm auszuführen, wird der Java-Interpreter java verwendet:

C:\>java HelloWorld

• Beachten Sie beim Aufruf des Interpreters, daß der Dateiname ohne das anhängende .class angegeben wird.

Page 22: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 22

JAVA: Variablen

• Variablen repräsentieren Speicherplätze zur Aufnahme veränderlicher Werte in einem Programm.

• erlaubte Zeichen für Variablennamen: – Buchstaben des engl. Alphabets (ohne Umlaute), – 10 Ziffern, – Unterstrich "_".

• Die erste Stelle darf keine Ziffer sein!

• Programmierer dürfen keine reservierten Wörter für eigene Namen verwenden (z.B. main, int,...)

Page 23: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 23

JAVA: Datentypen

• Alle Variablen müssen deklariert werden, bevor sie benutzt werden können.

• Notation für Variablendeklaration:

Datentyp variable1,...,variablen;– Bedeutung: Variable1,...,Variablen sind vom

angegebenen Datentyp.

• Beispiel:int v1, v2, v3;char v4;byte v5;

Page 24: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 24

JAVA: Datentypen

• Datentypen definieren Struktur und Wertebereiche der von einem Programm zu verarbeitenden Daten.

• elementare Datentypen in JAVA (Call by value):boolean - Wahrheitswertbyte, short, int, long - ganze Zahlen

Beispiel:int a; // erzeugt eine Variable vom Typ int.boolean b = true; /* erzeugt einen

Wahrheitswert und setzt diesen auf true */

Page 25: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 25

Wiederholung

Schleife:Solange (Bedingung)erfüllt ist:

führe Anweisungenaus!

while ( Bedingung) { Anweisung1; Anweisung2;

… AnweisungN;}

Beispiel:• Anweisungen: i = i + 1;

Ausgabe von “Zähler ist: “ + i• Bedingung: (i < 10)

Page 26: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 26

Ablaufstruktur: Wiederholung

Beispiel für Ablauf mit Wiederholung:

class Schleife { /* Diese Klasse testet, das Zählen von 1 bis 10! */ public static void main(String[] args) { int i = 0; while (i<10) { i=i+1; System.out.println(„Zähler: "+i); } }}

Page 27: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 27

JAVA: Datentypen

• weitere elementare Datentypen in Java

float Gleitkommazahldouble Gleitkommazahlchar einzelnes Zeichen

Page 28: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 28

Gleitkommazahlen

(Fließkommazahlen, Floating Point Numbers)• zur näherungsweisen Darstellung reeller Zahlen

auf Rechnern.• Zahlen werden dargestellt in der Form m . be

– b, e ganze Zahlen– m = Mantisse, gibt Zahlenwert an– e = Exponent, charakterisiert die Größenordnung der

Zahl– b = Basis (z.B. 10)

• z.B. 12.25: 0.1225 . 102

122.5: 0.1225 . 103

Page 29: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 29

JAVA: Arithmetik

Operatoren werden nur auf elementare Datentypen (und Strings [+]) angewendet.

+ Addition- Subtraktion; Vorzeichen* Multiplikation/ Division (int-Typen: ganzzahliger Anteil: 17/3 = 5)

% Divisionsrest (nur bei int-Typen: 17%3 = 2)

Page 30: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 30

Java Einführung

- Beginn zweiter Teil -

Page 31: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 31

JAVA: Arrays

• Felder zur Erfassung mehrerer Variablen vom selben Typ

• Arrays müssen initialisiert werden.• Auslesen bzw. beschreiben darf nur im

initialisierten Bereich erfolgen.

Beispiel:

int[] b = new int[10]; /* erzeugt ein Feld vom Typ int mit 10 Speicherplätzen */

Page 32: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 32

JAVA: Arrays

• Beispielprogramm:

public class Schleife2 {public static void main( String[] args) { int a[] = new int[10];

int i = 0; a[0] = 2; while (i<10) { System.out.println( "a["+i+"] ist : "+a[i]); i = i+1; a[i] = 2*a[i-1]; }}

}

Page 33: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 33

JAVA: Methoden

• Eine Methode besteht aus der Deklaration und einem Methodenkörper, wobei dieser in geschweiften Klammern steht.Bsp.: public boolean funct ( int a) {

return true; }

• public gibt hier die Zugriffsberechtigungen an (jeder)• boolean bedeutet, dass die Methode einen boolean-

Wert zurückgeben muss ( true oder false)• int a beschreibt, den Typ und Namen des

übergebenen Wertes, wobei a dem Namen innerhalb der Methode entspricht

Page 34: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 34

JAVA: Methoden

• "void" weist darauf hin, daß eine Funktion keinen Funktionswert zurückgibt.

Bsp.: void funct( int a) gibt keinen Funktionswert zurück.

• Falls kein Eingabeparameter benötigt wird, verwendet man ein leeres Klammerpaar:

Bsp.: int funct() kann kein Wert übergeben werden

Page 35: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 35

Ablaufstruktur: Alternative

if (ausdruck) {anweisung1;

} else { anweisung2;

}

ausdruckja nein

anweisung1 anweisung2

Page 36: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 36

Logische Ausdrücke(Bedingungen)

Logische Operatoren werden nur auf elementare Datentypen.

&& AND

|| OR

! NOT

(einfaches & oder | auch möglich beide Seiten werden dann garantiert ausgeführt.)

Page 37: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 37

Ablaufstruktur: Alternative

• Switch-Bedingung

Ausdruck

Fall 1

Fall N... others

Anw. 1

Anw. N Ausnahme- Anw.

Page 38: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 38

Ablaufstruktur: Alternative

Switch-Bedingung

class unterscheidung {public static void main(String[] args) {

int zahl;zahl = Integer.parseInt(args[0]);

switch(zahl) {case 1: System.out.println("sehr gut"); break;case 2: System.out.println("gut"); break;case 3: System.out.println("befriedigend");

break;case 4: System.out.println("ausreichend");

break;case 5: System.out.println("mangelhaft"); break;default: System.out.println("Falsche Eingabe!");

}}

}

Page 39: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 39

Ablaufstruktur: Wiederholung

• abweisende Schleife

While bedingung

anweisung

while ( bedingung) anweisung;

Bedeutung:• Solange bedingung "wahr" (true) ist, wird

anweisung ausgeführt.• Abbruchtest vor jedem Schleifendurchlauf.

Page 40: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 40

Ablaufstruktur: Wiederholung

Abweisende Schleife: while

class Produkt2 {public static void main(String[] args) {

int produkt = 1;int i = 0;while ( Integer.parseInt(args[i]) != 0) {

produkt *= Integer.parseInt(args[i]);i++; // gleichbedeutend mit i=i+1;

}System.out.println("Ergebnis: "+produkt);

}}

Page 41: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 41

Ablaufstruktur: Wiederholung

• Wiederholung: annehmende Schleife

do anweisung

while bedingung

do anweisung;while (bedingung)

Bedeutung:• anweisung wird ausgeführt, solange bedingung „wahr“ ist.• Abbruchtest nach dem Schleifendurchlauf.• anweisung wird also mindestens einmal ausgeführt.

Page 42: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 42

Ablaufstruktur: Wiederholung

Annehmende Schleife: do ... while

class Produkt3 {public static void main(String[] args){

int produkt = 1;int i = 0;do {

produkt *= Integer.parseInt(args[i]);i++;

} while ( Integer.parseInt(args[i]) != 0); System.out.println( "Ergebnis: "+produkt);

}}

Page 43: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 43

Exkurs: Wiederholungfor-Schleife

Schleife: for( Initialisierung; Bedingung; Änderung) { … }

class Produkt3 {public static void main(String[] args){

int produkt = 1;

for( int i=0; i<args.length; i++) {produkt *= Integer.parseInt(args[i]);

}System.out.println( "Ergebnis: "+produkt);

}}

Page 44: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 44

Kommandozeilen-argumente

• Das einzige Argument an main()ist ein Array von Strings, der üblicherweise args genannt wird.

• Die Länge dieses Arrays ist über args.length verfügbar.

• Die Elemente dieses Arrays sind die Argumente, die in der Kommandozeile nach dem Klassennamen angegeben wurden.

• Beispiel 2 zeigt ein Programm, das einfach seine Argumente ausgibt:

Page 45: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 45

class echo {public static void main(String[] args) {

for( int i=0; i < args.length; i++)System.out.print(args[i] + “ “);

System.out.print(“\n“);System.exit(0);

}}• Zu beachten: main()muß so deklariert sein, daß es void

zurückgibt.• Aus einem Java-Programm kann also kein Wert

zurückgegeben werden, indem eine return-Anweisung in main() verwendet wird.

Beispiel 2

Page 46: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 46

Beispiel 2

• Wenn ein Wert zurückgeliefert werden soll, wird System.exit() mit dem gewünschten Integer-Wert aufgerufen(vgl. Beispiel 2).

• Zu beachten: die Verarbeitung und Interpretation dieses Exit-Wertes hängt vom Betriebssystem ab.

Page 47: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 47

Einführung in Klassen und Objekte

• Eine Klasse ist eine Sammlung von Daten sowie von Methoden, die mit diesen Daten arbeiten.

• Die Daten und Methoden dienen zusammengenommen üblicherweise dazu, den Inhalt und die Fähigkeit irgendeiner Art von Objekt zu definieren.

Page 48: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 48

Einführung in Klassen und Objekte

• Zum Beispiel kann ein Kreis durch die X/Y-Position seines Mittelpunktes und durch seinen Radius beschrieben werden.

• Auf Kreisen können verschiedene Operationen ausgeführt werden: ihren Umfang berechnen; ihre Flächen berechnen; prüfen, ob bestimmte Punkte innerhalb des Kreises liegen usw.

Page 49: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 49

Einführung in Klassen und Objekte

• Jeder konkrete Kreis besitzt individuelle Werte (d.h. einen konkreten Mittelpunkt und Radius), aber als Klasse betrachtet besitzen Kreise bestimmte gemeinsame Eigenschaften, die in einer Definition zusammengefaßt werden können.

• Zu beachten: die Klassendefinition im folgenden Beispiel 3 enthält Daten und Methoden.

Page 50: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 50

Beispiel 3

public class Circle {public double x, y; // Die Koordinaten des

// Mittelpunktes.public double r; // Der Radius.

/* Methoden zur Ermittlung des Umfangs und der Fläche des Kreises */

public double circumfence() {return 2 * 3.14159 * r;

}public double area() {

return 3.14159 * r*r;}

}

Page 51: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 51

Objekte sind Instanzen einer Klasse

• Um die Circle-Klasse "anwenden" zu können, wird ein konkreter Kreis benötigt.

• Mit anderen Worten: es wird eine Instanz der Klasse Circle benötigt, ein konkretes Circle-Objekt.

Page 52: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 52

Objekte sind Instanzen einer Klasse

• Durch Definition der Circle-Klasse in Java wurde ein neuer Datentyp erzeugt. Nun können Variablen dieses Typs deklariert werden:Circle c;

• Diese Variable c ist aber nur ein Name, der auf ein Kreisobjekt verweist, er ist nicht das Objekt selbst.

• Bei Java müssen alle Objekte dynamisch erzeugt werden, dies geschieht meist mit dem Schlüsselwort new:Circle c;c = new Circle();

Page 53: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 53

Objekte sind Instanzen einer Klasse

• Damit wird eine Instanz des Circle-Objektes - ein Kreisobjekt - erzeugt und der Variable c zugewiesen, die vom Typ Circle ist.

Page 54: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 54

Zugriff auf Objektdaten

• Nachdem nun ein Objekt erzeugt worden ist, können seine Datenfelder verwendet werden:

Circle c = new Circle();

c.x = 2.0;

c.y = 2.0;

c.r = 1.0; /* Initialisiere den Kreis mit dem Mittelpunkt an (2, 2) und dem Radius 1.0 */

Page 55: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 55

Verwendung von Objektmethoden

• Um auf die Methoden eines Objekts zuzugreifen, wird die gleiche Syntax verwendet wie für den Zugriff auf die Daten eines Objektes:

Circle c = new Circle();

double a;

c.r = 2.5;

a = c.area();

Page 56: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 56

public class Circle {public double x, y; // Koordinaten des Mittelpunktespublic double r; // Der Radiuspublic double circumfence() { return 2 * 3.14159 * r; } public double area() { return 3.14159 * r*r;}public static void main(String[] args) {

Circle c = new Circle(); // Erzeuge Objektc.x = 2.0; c.y = 2.0; // Initialisiere Kreisc.r = Double.parseDouble(args[0]); // Radius einlesendouble flaeche, umfang; // Variablendeklarationumfang = c.circumfence(); // Methodenaufruf auf Objekt flaeche = c.area(); // Methodenaufruf auf Objekt System.out.println( "Der Umfang eines Kreises mit einem Radius von " + c.r + " betraegt " + umfang + "\n");System.out.println("Die Flaeche betraegt " + flaeche);

} }

Beispiel 4

Page 57: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 57

Einführung in die Programmierung in JAVAAG SS 2003

Veranstalter: Tim Stockheim <[email protected]>Jochen Franke <[email protected]>Daniel Beimborn <[email protected]

frankfurt.de>

Donnerstag 14.00 – 16.00 Uhr – Kleiner PC PoolEinheit III

Page 58: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 58

Packages

• Packages als Mittel, um Klassen zu strukturieren

• Jede Klasse in Java ist Bestandteil eines Packages

• Vollständiger Klassenname: Paket.KlassennameBsp. java.lang.Integer

• Umgekehrte Domainnamen als Paketnamen

• Durch Punkte getrennte Namensbestandteile geben jeweils Unterverzeichnisse anBsp: com.sun.image.codec.jpeg -> com/sun/image/codec/jpeg

• Zugriff auf Klassen anderer Packages nur erlaubt, wenn Zielklasse als public definiert ist

Page 59: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 59

Beispiele für Packages

• java.lang -> Elementare Sprachunterstützung

• java.math -> Fliesskommaarithmetik

• java.util -> Diverse Hilfsklassen

• java.net -> Netzwerkunterstützung

• java.sql -> Datenbankzugriff

• java.io -> Bildschirm und Datei I/O

Page 60: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 60

Eclipse als IDE

Page 61: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 61

Interfaces

• Keine Mehrfachvererbung in Java• Eine Klasse kann nicht von zwei Klassen

gleichzeitig abgeleitet werden• Interfaces, um Schnittstellendefinitionen zu

vererben• Interfaces enthalten ausschließlich abstrakte

Methoden und Klassen• Klassen müssen ein Interface implementieren

Page 62: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 62

Interface - Beispiel

• Definition eines Interfaces• Statt class wird das Schlüsselwort interface

verwendet

public interface Groesse{

public int laenge();

public int breite();

public int hoehe();

}

Page 63: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 63

Interface - Beispiel

• Implementierung des Interfaces durch eine Klasse

public class Auto implements Groesse{ public int laenge(){ return 465; } public int hoehe(){ return 186; } public int breite(){ return 195; }}

Page 64: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 64

Interfaces - Nutzen

• Eine Interface-Variable ist kompatibel zu allen Klassen, die ein solches Interface implementieren

• Oder anders: Klassen, die ein bestimmtes Interface implementieren sind zu dem Datentyp des Interfaces kompatibel

• Beispiel Vergleich von Äpfeln, Birnen und Autos -> Eclipse

Page 65: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 65

Einführung in die Programmierung in JAVAAG SS 2003

Veranstalter: Tim Stockheim <[email protected]>Jochen Franke <[email protected]>Daniel Beimborn <[email protected]

frankfurt.de>

Donnerstag 14.00 – 16.00 Uhr – Kleiner PC PoolEinheit IV

Page 66: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 66

JAVA: Exception Handling

• Ausnahmebehandlung erfolgt in Java durch Exceptions und Errors beide Subtyp von Throwable

• Exceptions werden abgefangen durch Verwendung der Schlüsselworte try und catch

• Errors werden nicht abgefangen(führen zu Programmabbruch)

Page 67: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 67

Beispiel 6

java.io.File f = null;java.io.FileOutputStream stream = null;file = new File( "../daten/", "test.txt");

try { stream = new java.io.FileOutputStream( file);

} catch ( java.io.FileNotFoundException e) {System.out.println(e);

}

Page 68: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 68

Beispiel 7

java.io.OutputStreamWriter oWriter = new

java.io.OutputStreamWriter( stream);java.io.BufferedWriter bWriter =

new java.io.BufferedWriter( oWriter);try {

bWriter.write('My first line!\n');bWriter.flush();

} catch ( java.io.IOException e) { System.out.println(e); }

}

Page 69: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 69

JAVA: Pakete

• Zusammenfassung ähnlicher Klassen in Paketen. (z.B.: java.io.File, java.io.FileReader, java.io.FileWriter, …)

• Zugriff verkürzt durch import-Anweisung• Referenzierung ganzer Pakete durch *

(Wildcard)

Page 70: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 70

JAVA: Pakete

• Beispiel:

import java.io.File; oderimport java.io.*;

class NewFile {NewFile ( Sting name ) {

File nf = new File( name);}

}

Page 71: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 71

JAVA-Schlussbemerkung

• Dieser Teil der Vorlesung stellte lediglich eine kurze Einführung in Java dar.

• Im Vordergrund die für JADE benötigten Konzepte.

• Vertiefung durch Übung und eigene Nachbearbeitung

Page 72: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 72

JAVA-Beispiel

public static void main(String[] args){int max = Integer.parseInt( args[0]);int a = 1, b = 1, c = 0;DecimalFormat df = new DecimalFormat();df.setMaximumFractionDigits(6);do {

double d = a; d /= b;System.out.println(

"A = "+a+" B = "+b+" A/B= "+df.format( d));

c = a+b;a = b;b = c;

} while ( b<=max);

}

Page 73: Grundlagen der Java-Programmierung1 Einführung in die Programmierung in JAVA AG SS 2003 Veranstalter: Tim Stockheim Jochen Franke Daniel Beimborn Donnerstag.

Grundlagen der Java-Programmierung 73

JAVA-Aufgabe

Entwickeln sie ein Programm, welches die Primzahlen von 2 bis zu einer vorgegebenen Zahl ausgibt.

java Prim 200

2 3 5 7 ....