02_JAVAErstesProgramme_05052011 - Informatik

Werbung
Vorlesung Informatik II
Universität Augsburg
Wintersemester 2011/2012
Prof. Dr. Bernhard Bauer
Folien von: Prof. Dr. Robert Lorenz
Lehrprofessur für Informatik
02. JAVA: Erstes Programm
1
Das erste Java-Programm
/**
Ausgabe des Zeichenkette „Hello World“
(Mehrzeiliger Kommentar zur aut. Erstellung von Dokumentationen)
*/
//Ein Modul (Klasse SayHello) (einzeiliger Kommentar)
class SayHello
{
//Variablen (Attribute): keine
//Deklaration von Operationen (Funktionen):
//Funktion main mit Übergabe von Kommandozeilenparametern
public static void main(String args[])
{
//Bibliotheksfunktion println des Objekts System.out
System.out.println(“Hello World“);
}
}
2
Das erste Java-Programm
class SayHello { ... }
Deklaration einer Klasse SayHello
Eine Klasse ist ein strukturierter Datentyp (ein Modul)
Eine Klasse besteht aus der Deklaration von Variablen und
Funktionen (müssen Teil einer Klasse sein)
Die Variablen einer Klasse heißen Attribute
Die Funktionen einer Klasse heißen Operationen
Jede Klasse in Java wird in einer eigenen java-Datei vereinbart
(Klassen- und Dateiname müssen übereinstimmen)
3
Das erste Java-Programm
class SayHello { ... }
Deklaration einer Klasse SayHello
Es können beliebig viele Variablen einer Klasse vereinbart werden
Diese Variablen heißen Objekte
Operationen können nur über Objekte aufgerufen werden
(Ausnahme: Klassenoperationen)
4
Das erste Java-Programm
class SayHello { ... }
Ein C-Programm besteht aus einer Sammlung von Funktionen
In C gibt es strukturierte Datentypen, die aber nur Daten kapseln
In C sind Funktionen keinen Daten zugeordnet
Ein Java-Programm besteht aus einer Sammlung von Klassen
In Java werden durch Klassen Daten und Funktionen gekapselt
In Java sind Funktionen nur über Objekte der zugehörigen Klasse
aufrufbar
5
Das erste Java-Programm
public static void main(String args[ ]) { ... }
Deklaration der Operation main
Genau eine der Klassen eines Programms muss die main-Funktion
enthalten (die Programmklasse)
Bei Start wird automatisch main aufgerufen
6
Das erste Java-Programm
public static void main(String args[ ]) { ... }
Deklaration der Operation main
main hat immer folgende Modifikatoren:
public: öffentliche Operation – von aussen aufrufbar
static: Klassenoperation – ohne Objekt aufrufbar
[man benötigt kein Objekt der Programmklasse für den Aufruf]
7
Das erste Java-Programm
public static void main(String args[]) { ... }
Deklaration der Operation main
main hat immer folgende Parameter:
void: kein Rückgabewert
String args[]:
Feld (Array) args von Objekten der Klasse
String
args repräsentiert wie in C Kommandozeilenparameter
String ist Klasse zu Repräsentation von Zeichenketten
8
Das erste Java-Programm
public static void main(String args[ ]) { ... }
Ein C-Programm enthält genau eine Funktion main
In C werden Zeichenketten durch Pointer auf char repräsentiert (char *)
Ein Java-Programm enthält genau eine Klasse mit der Funktion main
In Java gibt es für Zeichenketten die Klasse String
9
Das erste Java-Programm
{ ... } - Blöcke
Geben wie in C Gültigkeitsbereiche an
Beispiele: Klassenrümpfe, Funktionsrümpfe
10
Das erste Java-Programm
System.out.println(...);
Aufruf der Bibliotheksfunktion println
println gibt übergebene Zeichenkette auf Kommandozeile aus
System ist eine Bibliotheksklasse
System hat ein Attribut out
Zugriff auf Attribute einer Klasse mit “.” - Notation
out ist Objekt der Bibliotheksklasse PrintStream
PrintStream hat eine Operation println(...)
Zugriff auf Operationen eines Objekts mit “.” – Notation
11
Das erste Java-Programm
System.out.println(...);
Aufruf der Bibliotheksfunktion println
println gibt übergebene Zeichenkette auf Kommandozeile aus
Bibliotheksklassen sind hierarchisch in Pakete gegliedert:
Das Paket java enthält alle anderen Pakete
Das Paket lang im Paket java enthält alle Basisklassen
System ist eine Klasse im Paket lang
Das Paket lang wird automatisch geladen (andere Pakete muss
man manuell einbinden)
12
Das erste Java-Programm
System.out.println(...);
In C gibt es eine Funktions-Bibliothek (gegliedert in h-Dateien)
In Java gibt es eine Klassen-Bibliothek
(hierarchisch gegliedert in Pakete):
http://java.sun.com/javase/6/docs/api/
13
Compilieren und Ausführen
Vorgehen
1. Java-Programme werden von einem Prozessorunabhängigen
Java-Compiler in sog. Byte-Code übersetzt.
Dieser kann vom Prozessor nicht direkt ausgeführt werden.
2. Der Byte-Code wird von einem System-spezifischen
Interpreter ausgeführt.
Der Java-Interpreter verdeckt die Eigenschaften des jeweiligen
Prozessors und bietet eine höhere Abstraktionsschicht,
die man sich als gedachten (virtuellen) Prozessor vorstellen
kann
 man spricht von der Java Virtuellen Maschine (JVM)
14
Compilieren und Ausführen
Vorgehen
Erstelle .java - Quelldateien mit Texteditor
Compiliere Dateien mit Kommandozeilen-Befehl
javac <Dateiname>.java
Ergebnis: Ausführbarer Byte-Code in class- Dateien
Führe Programm aus durch Interpretation der
class – Programmdatei mit Kommandozeilen-Befehl
java <Programmdateiname>.class
15
Compilieren und Ausführen
Vorteile:
Nur ein Compiler für alle Prozessortypen
Java plattform-unabhängig exakt definiert
Übersetzte Java-Programme laufen ohne Neuübersetzung
auf allen Plattformen mit Java-Interpreter
Nachteile:
Übersetzte Programme laufen langsamer
Für jeden Prozessortyp einen neuen Interpreter
16
Compilieren und Ausführen
Anleitung
Installiere Java SE JDK 6 (auch J2SE SDK genannt)
Download unter http://java.sun.com
Jetzt müssen folgende Kommandos (Kommandozeilenfenster)
ein erfolgreiches Ergebnis liefern:
C:\Java\jdk\bin\java.exe -version
C:\Java\jdk\bin\javac.exe -help
Mit javac wird der Java-Compiler aufgerufen
Mit java wird ein Java-Programm ausgeführt
17
Compilieren und Ausführen
System konfigurieren
Setzen von Umgebungsvariablen: Angabe von Pfaden ...
... wo das Betriebssystem nach Compiler/Interpreter sucht
... wo Compiler/Interpreter nach Klassendateien suchen
Benutzervariablen setzen:
JAVA_HOME C:/Programme/Java/jdk1.6.0_06
Systemvariablen erweitern um:
Path <vorhandenePfade>;
C:/Programme/Java/jdk1.6.0_06;
C:/Programme/Java/jdk1.6.0_06/bin
18
Compilieren und Ausführen
System konfigurieren
Jetzt müssen folgende Kommandos erfolgreich sein:
set JAVA_HOME
java -version
javac -help
19
Mehr Java-Programme
class SayWhat
{
public static void main(String args[])
{
if (0 < args.length)//Fallunterscheidung nach Länge von args
{
int i;
for (i=0;i<args.length;i=i+1)
//for-Schleife über Anzahl Parameter
{
System.out.println(args[i]);//Zeilenweise Ausgabe der Parameter
}
}
else
{
System.out.println(“fehlende Argumente”);
}
}
}
20
Mehr Java-Programme
public static void main (String args[])
Zugriff auf Kommandozeilenparameter mit args
Zugriff auf i-ten Parameter mit args[i-1]
Compileraufruf: javac SayWhat.java
Interpreteraufruf: java SayWhat param1 param2 ...
(Entspricht args = (param1, param2, ... ))
21
Mehr Java-Programme
public static void main (String args[])
Ähnlich wie in C:
Deklaration von i gilt nur lokal im { ... } - Block
if-else- Anweisung für Fallunterscheidungen
for- Anweisung für wiederholte Ausführung von Anweisungen
Unterschiedlich zu C:
Mit Feldname.length kann man die Länge eines Feldes abfragen
22
Eclipse
Eclipse bietet eine Entwicklungsumgebung für Java
(und andere Programmiersprachen)
Frei erhältlich (open source) unter www.eclipse.org
.zip-Datei downloaden und in beliebigem Verzeichnis entpacken
(z.B. unter C:\...\Java)
Achtung: vorher JDK installieren
Start: Ausführen von eclipse.exe
Workspace am besten auf Datenpartition D: anlegen
23
Eclipse
Programme erstellen und ausführen in Eclipse:
Java-Projekt anlegen
Klasse anlegen mit main-Methode (und Paket-Angabe)
Programm schreiben und speichern (wird automatisch
compiliert)
Fehler beheben (Problems-Tab) und erneut speichern
Ausführen mit dem grünen Pfeil (bei Textcursor in main())
Ausgabe im Console-Tab
24
Herunterladen