Title: Erste Programme mit Java
1Erste Programme mit Java
- Grundelemente von Java
- Entwicklung von GUI-Anwendungen mit dem
Java-Editor - Übungen
Helmut Paulus Speyer, 08.05.09
2Teil 1
3Was ist Java
Eigenschaften von Java Java ist eine
objektorientierte Programmiersprache, die
universell einsetzbar und für die Industrie als
robuste Programmiersprache interessant ist.
Bytecode und virtuelle Maschine Der
Java-Compiler erzeugt keinen Maschinencode für
eine spezielle Plattform und einen bestimmten
Prozessor, sondern einen so genannten Bytecode
(Zwischencode), für eine virtuelle Maschine. Der
Bytecode ist plattformunabhängig. Auf dem
jeweiligen System wird er von der
Laufzeitumgebung, der Java Virtual Machine (JVM),
übersetzt und ausgeführt.
4Vorbereitung
Werkzeuge
- Java-Development-Kit (JDK) der Firma Sun, sowie
die zugehörige Dokumentation und Tutorial - Als Alternative zum Java-Compiler javac.exe kann
der schnellere Compiler jikes.exe dienen - Entwicklungsumgebung
- Es genügt im Prinzip jeder Texteditor (Notepad
usw., aber nicht zu empfehlen) - Java-Editor (speziell für die Schule
entwickelt)Ähnelt sehr stark der Delphi-DIE - Mächtige Bibliotheken stehen zur Verfügung
Java Hilfen (kostenlos zum Download)
- Java Tutorials der Firma SUN
- Handbuch der Java-Programmierung von Guido Krüger
und Thomas Stark - Download http//www.javabuch.de/
- Java ist auch eine Insel von Christian Ullenboom
- Download http//openbook.galileocomputing.de/jav
ainsel8/
5Grundstruktur einer Java Anwendung
Quellcode einer Konsolenanwendung im Java-Editor
Die Main-Methode innerhalb der Klasse Quadrat
wirkt als Hauptprogramm.
6Klassen, Dateien und Programme
- Java-Programme sind aus Klassen aufgebaut.
- Eine Datei pro Klasse
- Quelltext Dateiname Klassenname.java
class Quadrat public static void
main(String args)
System.out.println()
- Kennzeichen
- Es gibt kein separates Hauptprogramm
- Eine spezielle Methode einer (beliebigen) Klasse
dient als Hauptprogramm - public static void main(String args)
- Der Compiler erzeugt class-Dateien
Klassenname.class - Diese werden von der VM ausgeführt.Aufruf java
Klassenname (ohne class)
7Java-Syntax
Anweisungsblock
Zuweisung
Vergleich
- Variablendeklaration
- Überall im Programm möglich!
- Syntax int index
- Initialisierung mit Wert bei der Deklaration
möglich - Syntax int index 0
Gültigkeitsbereich Ab der Zeile nach der
Deklaration bis zum Ende des Blocks, in dem sie
deklariert wurde If (a gt 0 ) int b a
8Java-Syntax
Fallunterscheidungen if (Bedingung) else
while Schleife while (Bedingung)
Anweisung
Dowhile Schleife do Anweisung while
(Bedingung)
For Schleife for (int i1 iltn ii1)
Anweisung
Array int liste new int5 Speicher für 5
Variablen vom Typ int Die Indizierung beginnt
immer mit 0 ! Länge eine Arrays liste.length
Zugriff auf einzelne Felder for (int i0 ilt5
ii1) listei ii
9Java-Syntax
Prozeduren
Funktionen
int quadrat(int i) return ii
void tueWas(int i)
Rückgabetyp
Rückgabewert
Schlüsselwort
Prozeduren und Funktionen unterscheiden sich in
Java nur durch den Rückgabetyp.
- Funktionen/Prozeduren
- Keine Aufteilung in Interface und Implementierung
- können an beliebiger Stelle innerhalb einer
Klassendefinition stehen. - heißen in der Sprache der Objektorientierten
Modellierung einheitlich Methoden
10Java-Grundlagen
- Bezeichner
- Erlaubt sind die Elemente des gesamten
Unicode-Zeichensatzes - Einschränkungen
- Das erste Symbol muss ein Buchstabe sein und
keine Ziffer. - Leerzeichen sind in Bezeichnern nicht erlaubt,
ebenso viele Sonderzeichen. - Java ist kontextsensitiv, d. h.
Groß-/Kleinschreibung ist relevant .
Logische Operatoren Konjunktion
Disjunktion Negation ! ungleich !
Beispiele Bedingungen (a gt 0) (b gt 0) (a
0) !(b 0)
11Java-Grundlagen
Primitive Datentypen
int, long Ganze Zahlen (einfache bzw.
doppelte Genauigkeit) float, double
Fließkommazahlen (einfache bzw. doppelte
Genauigkeit) boolean Wahrheitswerte (true,
false)
Zeichenketten (Strings)
- Zeichenketten werden durch Objekte der Klasse
String repräsentiert. - Strings sind, nachdem sie initialisiert sind,
nicht mehr veränderbar! - Die Klasse String stellt eine Reihe von Methoden
zur Bearbeitung von Strings zur Verfügung. - Strings können mit dem Operator zu einem
neuen String zusammengefügt werden. - Beispiel
- String a Hallo Welt // Erzeugung und
Initialisierung - a Schöne Welt
- String neu a heute
- String-Objekte selbst lassen sich nicht
verändern, aber eine Referenz kann auf ein
anderes String-Objekt gelegt werden. - Länge des Strings int len a.length()
12Java-Grundlagen
Typumwandlungen
Primitiver Datentyp ? Datentyp String Funktion
String.valueOf() Beispiele String zahl
String.valueOf( 10 ) String pi
String.valueOf( Math.PI )
Datentyp String ? Primitiver Datentyp
Funktionen Integer.parseInt(String s ),
Double.parseDouble( String s ),
Beispiel String s 3945 int i
Integer.parseInt( s )
13Java-Grundlagen
Arithmetische Operatoren
, -, , / Der Ergebnistyp hängt von den Typen der Operanden ab! Bei gleichen Typen wird der Typ beibehalten. Beispiel 1 / 2 ergibt 0, da beide Operanden vom int - Typen sind. Bei unterschiedlichen Typen, beispielsweise int und float, so entspricht der Ergebnistyp des Teilausdrucks dem größeren der beiden Operanden
Modulo Operator
Zuweisungskompatibilität zwischen primitiven
Datentypen
int ? long ? float ? double
Erlaubt sind Zuweisung in Pfeilrichtung
Mit Hilfe des Type - Cast Operators können
Typumwandlungen auch entgegen den Pfeilrichtungen
vorgenommen werden, als Zuweisungen von größeren
an kleinere numerische Typen. Schema (type) a
wandelt den Ausdruck a in einen Ausdruck vom Typ
type um
Beispiel int wuerfelZahl 1 (int)
(Math.random()6)
Type-Cast-Operator
Ausdruck vom Typ double
Typ int
14Teil 2
- Entwicklung von GUI-Anwendungen mit dem
Java-Editor
15GUI-Anwendungen
GUI-Anwendungen benutzen AWT (Abstract Window
Toolkit)- bzw. Swing-Komponenten
RechnerGUI
tFZahl1 Textfield
lAnzeige Label
bCL Button
- Das Formular (Frame) enthält Komponenten
(GUI-Objekte) vom Typ - Frame, TextField, Button, Label, Panel
Java ist kontextsensitiv! Es gilt die
Vereinbarung, dass Klassennamen stets mit einem
Großbuchstaben beginnen, Objektnamen (Variablen,
Prozeduren) mit kleinen!
16Ein- und Ausgabe von Daten
public void bPlus_ActionPerformed(ActionEvent
evt) //Eingabe Übernahme aus den
GUI-Objekten double a Double.parseDouble(tFz
ahl1.getText()) double b
Double.parseDouble(tFzahl2.getText())
//Verarbeitung double erg a b
//Ausgabe Übergababe an die GUI-Objekte
tFErgebnis.setText(Double.toString(erg))
- Der Zugriff auf die Attribute der Textfelder
erfolgt stets mit Hilfe der Methoden - getText() zur Eingabe
- setText() zur Ausgabe
- Da die Daten als Zeichenketten gespeichert sind,
müssen sie zur weiteren Verarbeitung in
Zahlentypen umgewandelt werden.
17Die Klasse RechnerGUI
import java.awt. import java.awt.event. public
class RechnerGUI extends Frame // Anfang
Attribute // Ende Attribute public
RechnerGUI(String title) //
Frame-Initialisierung .
// Anfang Komponenten // Ende
Komponenten setResizable(false)
setVisible(true) // Anfang
Methoden // Ende Methoden public static
void main(String args) new
RechnerGUI("Rechner")
Einbinden der AWT-Komponenten Deklaration der
Klasse RechnerGUI als Erweiterung der Klasse
Frame (extends) Konstruktor
Initialisierung, Erzeugung und Initialisierung
der weiteren GUI-Objekte Ereignisbearbeitung
und weitere Methoden Die main-Methode ruft den
Konstruktor auf, wodurch das Programmformular
erzeugt wird. Die Datei wird unter dem Namen der
Klasse RechnerGUI gespeichert (RechnerGUI.java).
18Quellcode
public class Rechner extends Frame // Anfang
Attribute private TextField tFzahl1 new
TextField() private TextField tFzahl2 new
TextField() private TextField tFErgebnis new
TextField() private Button bPlus new
Button() // Ende Attribute
Mit dem GUI-Designer wird die Benutzungsoberfläche
erstellt. Die Komponenten werden als Attribute
des Formulars deklariert und erzeugt.
Im Abschnitt Komponenten werden Größe und
Beschriftung der Komponenten gesetzt alle
GUI-Objekte werden dem Panel cp (content-panel)
zugeordnet. Für den Schalter bPlus wird ein
Ereignis-prozedur für das Anklicken des Schalters
implementiert. Die Ereignisprozedur ruft die
Prozedur ActionPerformed auf, die im Abschnitt
Ereignisse zu implementieren ist.
bPlus.setBounds(48, 136, 27, 25)
bPlus.setLabel("") bPlus.addActionListener(new
ActionListener() public void
actionPerformed(ActionEvent evt)
bPlus_ActionPerformed(evt)
) cp.add(bPlus)
19Ereignismodell von Java
Beim Anklicken eines Schalters wird ein Ereignis
ausgelöst, das ActionEvent genannt wird. Bei Java
werden die Ereignisse an so genannte
Ereignislauscher (ActionListener) geschickt. Ein
Objekt, das auf ein Ereignis reagieren will, muss
sich bei einem solchen ActionListener anmelden.
Der Schalter erledigt dies mit der Methode
addActionLister. Der dabei übergebene
ActionListener enthält lediglich die
Ereignismethode actionPerformed, die beim
Anklicken ausgeführt wird.
ActionEvent
button
ActionListener
bPlus.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent evt)
bPlus_ActionPerformed(evt))
ruft auf
ruft auf
bPlus_ActionPerformed(ActionEvent evt)
Der Java-Editor erzeugt automatisch den
notwendigen Quellcode.
20Übungen
- Ergänzen Sie das Programm Rechner.
- Implementieren Sie weitere Funktionen z. B.
ggT(a,b) als Funktion
21Teil 3
Helmut Paulus Speyer, 5.-7.11.07
22Aufgabe 1
Wann werde ich Millionär? Anfordungen Nach
Eingabe von Anfangskapital und Zins-satz wird
berechnet, nach wie viel Jahren das Kapital einen
bestimmten Endbetrag erreicht hat. Die Zinsen
werden jährlich gutgeschrieben (Zinseszins).
23Aufgabe 2
Würfelspiel Entwickeln Sie ein Programm das
folgendes Spiel simuliert. Man wirft vier Würfel
und gewinnt, wenn mindestens 2 Würfel die
Augenzahl 5 oder 6 zeigen. Anforderungen Die
vier Augenzahlen werden angezeigt und es wird
feststellt, ob man gewonnen hat.
24Aufgabe 3
- Doppelwürfel
- In der Wahrscheinlichkeitsrechnung werden oft
Würfelexperimente untersucht. Dabei interessiert
man sich für die absolute und relative Häufigkeit
des Auftretens bestimmter Ergebnisse, z.B. der
Augensumme 5 beim Wurf mit zwei Würfeln. Dazu
würfelt man z.B. 1000 mal mit zwei Würfeln und
zählt, wie oft bestimmte Ergebnisse auftreten. - Die Durchführung dieses Zufallsexperiments ist
langwierig und langweilig. - Aufgabe
- Entwickeln Sie ein Java-Programm, das diese
Aufgabe erledigt. - Anforderungen
- Bei jedem Wurf werden die beiden Augenzahlen
addiert und die zugehörige Zählvariable um 1
erhöht. Es gibt insgesamt 11 solcher
Zählvariablen vom Typ int, da die Augenzahlen 2
bis 12 auftreten können. - Die Ergebnisse sollen in einem mehrzeiligen
Textfeld (TextArea) ausgeben werden.
25Links und Literatur
- Bildungsserver Hessen
- http//lernen.bildung.hessen.de/informatik/javaedi
tor/ - Bildungsserver Rheinland-Pfalz
- Fortbildungsmaterial
- http//informatik.bildung-rp.de/fortbildungsmateri
al/objektorientiertes-programmieren-mit-java.html - Handbuch der Java-Programmierung von Guido Krüger
und Thomas Stark - http//www.javabuch.de/
- Java ist auch eine Insel von Christian Ullenboom
- http//openbook.galileocomputing.de/javainsel8/