Powerpoint-Präsentation - Informatik: Bildungsserver Rheinland

Werbung
Erste Programme mit Java

Grundelemente von Java

Entwicklung von GUI-Anwendungen mit dem Java-Editor

Übungen
Helmut Paulus
Speyer, 08.05.09
Teil 1

Grundelemente von Java
Was ist Java
3
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.
Vorbereitung
4
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/javainsel8/
5
Grundstruktur einer Java Anwendung
Quellcode einer Konsolenanwendung im Java-Editor
Die Main-Methode innerhalb der Klasse Quadrat wirkt als Hauptprogramm.
Klassen, Dateien und Programme
6
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)
Java-Syntax
7
Zuweisung
Vergleich
=
==
Anweisungsblock
{
…
}
Variablendeklaration
Gültigkeitsbereich
Überall im Programm möglich!
Ab der Zeile nach der Deklaration bis
zum Ende des Blocks, in dem sie
deklariert wurde
 Syntax: int index;
Initialisierung mit Wert bei der
Deklaration möglich:
…
If (a > 0 ){
 Syntax: int index = 0;
int b = a;
…
}
…
Java-Syntax
8
Fallunterscheidungen
while Schleife
if (Bedingung)
while (Bedingung)
{…}
{
else
{…}
Anweisung;
}
For –Schleife
Do–while – Schleife
for (int i=1; i<=n; i=i+1)
{
Anweisung;
}
do {
Anweisung;
} while (Bedingung);
Array
Zugriff auf einzelne Felder
int liste[] = new int[5];
for (int i=0; i<5; i=i+1)
Speicher für 5 Variablen vom Typ int;
{
liste[i] = i*i;
Die Indizierung beginnt immer mit 0 !
Länge eine Arrays: liste.length
}
Java-Syntax
9
Prozeduren
void tueWas(int i)
Funktionen:
Rückgabetyp
{
int quadrat(int i)
{
…
}
return i*i;
Rückgabewert
}
Prozeduren und Funktionen unterscheiden
sich in Java nur durch den Rückgabetyp.
Schlüsselwort
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‘
Java-Grundlagen
10
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 > 0) && (b > 0)
(a == 0) || !(b == 0)
Java-Grundlagen
11
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();
Java-Grundlagen
12
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 );
Java-Grundlagen
13
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
Erlaubt sind Zuweisung in Pfeilrichtung:
int  long  float  double
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);
Typ int
Type-Cast-Operator
Ausdruck vom Typ double
Teil 2

Entwicklung von GUI-Anwendungen mit dem Java-Editor
GUI-Anwendungen
15
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!
Ein- und Ausgabe von Daten
16
public void bPlus_ActionPerformed(ActionEvent evt)
{
//Eingabe – Übernahme aus den GUI-Objekten
double a = Double.parseDouble(tFzahl1.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.
Die Klasse „RechnerGUI“
17
import java.awt.*;
import java.awt.event.*;
public class RechnerGUI extends Frame
{
Einbinden der AWT-Komponenten
Deklaration der Klasse RechnerGUI als Erweiterung der Klasse
Frame (extends)
// Anfang Attribute
// Ende Attribute
public RechnerGUI(String title)
{
// Frame-Initialisierung
………….
// Anfang Komponenten
// Ende Komponenten
Konstruktor : Initialisierung, Erzeugung und Initialisierung der
weiteren GUI-Objekte
setResizable(false);
setVisible(true);
}
// Anfang Methoden
Ereignisbearbeitung und weitere Methoden
// Ende Methoden
public static void main(String[] args)
{
new RechnerGUI("Rechner");
}
}
Die main-Methode ruft den Konstruktor auf, wodurch das
Programmformular erzeugt wird.
Die Datei wird unter dem Namen der Klasse RechnerGUI
gespeichert (RechnerGUI.java).
Quellcode
18
public class Rechner extends Frame {
// Anfang Attribute
private TextField tFzahl1 = new TextField();
private TextField tFzahl2 = new TextField();
Mit dem GUI-Designer wird die
Benutzungsoberfläche erstellt.
Die Komponenten werden als Attribute
des Formulars deklariert und erzeugt.
private TextField tFErgebnis = new TextField();
private Button bPlus = new Button();
// Ende Attribute
bPlus.setBounds(48, 136, 27, 25);
bPlus.setLabel("+");
bPlus.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
bPlus_ActionPerformed(evt);
}
});
cp.add(bPlus);
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 Ereignisprozedur für das Anklicken des Schalters
implementiert.
Die Ereignisprozedur ruft die
ActionPerformed auf, die im
Ereignisse zu implementieren ist.
Prozedur
Abschnitt
19
Ereignismodell 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
bPlus.addActionListener(new ActionListener() {
ActionListener
ruft auf
public void actionPerformed(ActionEvent evt) {
bPlus_ActionPerformed(evt);}});
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
Teil 3

Übungen
Helmut Paulus
Speyer, 5.-7.11.07
Aufgabe 1
22
Wann werde ich Millionär?
Anfordungen:
Nach Eingabe von Anfangskapital und Zinssatz wird berechnet, nach wie viel Jahren das
Kapital einen bestimmten Endbetrag erreicht
hat.
Die Zinsen werden jährlich gutgeschrieben
(Zinseszins).
Aufgabe 2
23
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.
Aufgabe 3
24
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:
1.
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.
2.
Die Ergebnisse sollen in einem mehrzeiligen Textfeld (TextArea) ausgeben werden.
25
Links und Literatur
Bildungsserver Hessen:
http://lernen.bildung.hessen.de/informatik/javaeditor/
Bildungsserver Rheinland-Pfalz
Fortbildungsmaterial:
http://informatik.bildung-rp.de/fortbildungsmaterial/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/
Herunterladen