Softwareentwicklung 1 - SSW

Werbung
Softwareentwicklung 1
Dr. Herbert Prähofer
Institut für Systemwissenschaften
Johannes Kepler Universität Linz
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
1
© Hanspeter Mössenböck, Herbert Prähofer
2
Vortragender
Dr. Herbert Praehofer
Systems Science Institute
Johannes Kepler University
Altenbergerstrasse 69
A-4040 Linz / Austria
Tel.: ++43 (732) 2468 8894
Fax.: ++43 (732) 2468 8893
EMail: [email protected]
http: www.cast.uni-linz.ac.at
Raum: T0758 (TNF Turm 7. Stock)
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
Ziel und Inhalt
Ziel
Einführung des Programmieren in Java
Inhalte
ƒ Grundlagen der Programmierung
ƒ Programmieren in Java
ƒ Einfache Algorithmen
ƒ Grundlagen der Objektorientierung
ƒ Programmentwurf
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
3
Motivation programmieren zu lernen
ƒ
Software erstellen können
ƒ Grundlagen der Programmierung verstehen
ƒ Java kennen
ƒ komplexe Software entwerfen
ƒ sich neue Gebiete der Softwaretechnik erarbeiten können
ƒ
Software verstehen
ƒ wie arbeitet Software
ƒ was kann Software leisten
ƒ wie sind Programme aufgebaut
ƒ wie wird Software erstellt
ƒ
Kreativität erleben
ƒ Programmieren kann viel Spaß machen
ƒ Programmieren ist eine Herausforderung
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
4
Organisation der LVA Softwareentwicklung 1
ƒ
Vorlesung
ƒ Stoff wird theoretisch vorgetragen
ƒ Mit eingebauten Programmierbeispielen
ƒ ca. 8-10 mal im Semester jeweils ca. 3 – 4 LVA-Stunden
ƒ
Übung
ƒ Stoff wird geübt
ƒ Programmieraufgaben sind wöchentlich zu programmieren
ƒ 2 Unterrichtsstunden für
ƒ Wiederholung
ƒ Praktische Beispiele
ƒ Besprechung der Programmieraufgaben
ƒ Übungsleiter: Hr. DI Peter Hamader
Programmieren ist eine Fähigkeit,
die nur mit viel Übung erlernt werden kann!!
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
5
Webpage der LVA
http://www.ssw.uni-linz.ac.at/Teaching/Lectures/gTec_SWE1/2005W/index.html/
ƒ Alle wichtigen Infos wie
ƒ Termine
ƒ Unterlagen
ƒ Studienmaterial
findet man auf dieser Seite
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
6
Literatur
ƒ
P. Mössenböck, Sprechen Sie Java?, 2. Auflage, dpunkt.verlag, 2005
(Lehrbuch zur VL!)
ƒ
G. Krüger, GoTo Java 2, Addison-Wesley, 2000
On-Line Buch für Java Online Version hier Download (www.javabuch.de)
ƒ
M. Campione, K.Walrath: The Java Tutorial Online Edition
(www.javasoft.com/tutorial)
ƒ
Java-Einführungskurs (http://www.boku.ac.at/javaeinf/jein.html)
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
7
Einheit 1:
Grundlagen der Programmierung
Programmierung und Ausführung von Programmen
Algorithmen und Algorithmendarstellung
Programmiersprachen und Java
Das Java-Entwicklungssystem
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
8
Worum geht es?
Programmieren
Problem so exakt beschreiben, dass es ein Computer lösen kann
)
)
)
kreative Tätigkeit
Ingenieurtätigkeit
Nur wenige Leute können gut programmieren
Programm = Daten + Befehle
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
9
Von-Neumann Architektur eines Computers
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
aus: A. Ferscha, Skriptum Softwareentwicklung 1, JKU Linz
© Hanspeter Mössenböck, Herbert Prähofer
10
Wiederholung von der VL: RISC-Programm
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
aus: A. 1Ferscha,
Softwareentwicklung
(gtec)
Skriptum
Softwareentwicklung
1, JKU Linz
© Hanspeter
Mössenböck, Herbert Prähofer
11
Verarbeitungseinheit
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung
1 (gtec)
aus: A. Ferscha,
© Hanspeter
Mössenböck, Herbert Prähofer
Skriptum
Softwareentwicklung
1, JKU Linz
12
Typische Befehle
ƒ load:
Laden von Daten aus Hauptspeicher
ƒ store:
Schreiben von Daten in Hauptspeicher
ƒ move:
Speicheroperationen
ƒ add, sub, mult, …: Arithmetsiche Operationen
ƒ cmp:
Vergleichsoperationen: Vergleich auf 0
ƒ jmp, jeq;
Sprünge und bedingte Sprünge im Ablauf
ƒ …
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
13
Daten und Befehle
Daten
Menge adressierbarer Speicherzellen
x
17
y
4
z
21
Name
Wert
Daten sind binär gespeichert (z.B. 17 = 10001)
Binärspeicherung ist universell (Zahlen, Texte, Bilder, Ton, ...)
1 Byte = 8 Bit
1 Wort = 2 Byte (oder 4 Byte)
1 Doppelwort = 2 Worte
Befehle
Operationen mit den Speicherzellen
Maschinensprache
Hochsprache
// Lade Zelle x
ACC ← x
ACC ← ACC + y // Addiere Zelle y
// Speichere Ergebnis in Zelle z
z ← ACC
z = x + y;
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
14
Variablen
Programme arbeiten mit Variablen.
Sind benannte Behälter für Werte.
x
y
99
3
Variablen können ihren Wert ändern
x
x←x+1
100
Beispiel: byte x = 10
Charakterisiert durch
Adresse
ƒ Name oder Bezeichner
Wert
99
ƒ Wert
100
ƒ Adresse (im Hauptspeicher)
101
10
x
(byte)
ƒ Datentyp
Datentyp
ƒ int, char, byte, float, ...
Name
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
15
Datentypen
Variablen haben einen Datentyp == Menge erlaubter Werte
Variablentyp
Werte
17
Zahl
Zeichen
'a'
54
'x'
...
...
Typ ≅ Form
- in eine Zahlenvariable passen nur Zahlen
- in eine Zeichenvariable passen nur Zeichen
Beispiele von Datentypen:
ƒ char (2 Byte)
[ a-z][A-Z][0-9][Sonderzeichen]
ƒ int (4 Byte)
~-2,147 Mrd. – ~+2,147 Mrd.
ƒ boolean
true, false
ƒ float
3.14159265259
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
16
Algorithmus
Ein Algorithmus ist ein endliches, schrittweises Verfahren zur
Berechnung gesuchter aus gegebenen Größen, in dem jeder
Schritt aus einer Anzahl eindeutig ausführbarer Operationen und
einer Angabe über den nächsten Schritt besteht.
ƒ Berechnungsvorschrift
ƒ schrittweise
ƒ endlich
ƒ ausführbare Operationen
ƒ Angabe der Reihenfolge der Schritte
(Der Name Algorithmus ist abgeleitet von Al Chwarizmi,
arabischer Mathematiker, ca. 800 n.Chr.)
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
17
Beispiel: Algorithmus „Sum“
Algorithmus „Sum“ zum Berechnen der Summe einer Zahlenfolge
Aufgabenstellung:
Gegeben: Eine Zahl n größer 0
Gesucht: Die Summe dieser Zahlen von 1 bis n
Algorithmus:
1. Addiere alle Zahlen von 1 bis n
2. Gib das Ergebnis aus
Diese Formulierung ist für einen Computer noch zu wenig genau!
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
18
Algorithmus „Sum“ als Verfahren in mehreren Schritten
Name
Parameter
Ergebnis
Folge von Schritten
Sum (↓n, ↑sum)
1. sum ← 0
2. zahl ← 1
3. Wiederhole, solange zahl ≤ n
3.1 sum ← sum + zahl
3.2 zahl ← zahl + 1
Diese Formulierung ist einem Computerprogramm
schon sehr nahe.
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
19
Anweisungen: Wertzuweisung und Sequenz
Wertzuweisung
x ← x+1
Variable
1. werte Ausdruck aus
2. weise seinen Wert der Variablen zu
Ausdruck
Anweisungsfolge (auch Sequenz)
"Ablaufdiagramm"
x←3
y←4
z←x+y
Assertion
x == 3, y == 4, z == 7
Assertion (Zusicherung)
Aussage über den Zustand des Algorithmus
an einer bestimmten Stelle
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
20
Anweisungen: Verzweigung
Auswahl (auch Verzweigung, Abfrage, Selektion)
j
x<y?
min ← x
n
x≥y
min ← y
min == Minimum von x und y
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
21
Anweisungen: Wiederholung
Wiederholung (auch Schleife, Iteration)
Alternative Darstellung
d←1
n>9?
j
d←1
n
n>9
n ← n / 10
d←d+1
n ← n / 10
d←d+1
n < 10
d == Anzahl der Ziffer von n
n < 10
d == Anzahl der Ziffer von n
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
22
Anweisungen: Wiederholung
Wiederholung (auch Schleife, Iteration)
n←0
n←0
x>1?
j
x>1
n
x←x/2
n←n+1
x←x/2
n←n+1
x≤1
n = ⎣log2 x⎦
x≤1
n = ⎣log2 x⎦
Alternative Darstellung
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
23
Beispiel: Vertauschen zweier Variableninhalte
Swap (↨x, ↨y)
Schreibtischtest
x
3
2
h=x
x=y
y=h
y
2
3
h
3
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
24
Beispiel: Maximum dreier Zahlen bestimmen
1 2 3
Max (↓a, ↓ b, ↓ c, ↑max)
j
j
a>c?
max ← a
n
a>b?
n
j
c≥a>b
max ← c
max ← b
b>c?
a≤b
n
a≤b≤c
max ← c
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
25
Beispiel: Maximum dreier Zahlen bestimmen
3 2 1
Max (↓a, ↓ b, ↓ c, ↑max)
j
j
a>c?
max ← a
n
a>b?
c≥a>b
max ← c
n
j
max ← b
b>c?
a≤b
n
a≤b≤c
max ← c
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
26
Beispiel: Anzahl der Ziffern einer Dezimalzahl
ƒ
Zahl solange durch 10 dividieren, bis Zahl < 10
ƒ
Anzahl der Divisionen + 1 = Anzahl der Ziffern
Digits(↓n, ↑d)
Schreibtischtest
d←1
n>9
n
12345
d
1
1234
123
2
3
12
1
4
5
n ← n / 10
d←d+1
n < 10
d == Anzahl der Ziffer von n
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
27
Beispiel: Quadratwurzel von x berechnen
1.
Näherung:
Näherung:
-root
root←
←(a
x /+2root) / 2
-aa←
←xx//root
root
0
a1
√x
a2
root1
root2
SquareRoot (↓x, ↑root)
root ← x / 2
a ← x / root
x
Schreibtischtest
a * root == x
a ≠ root
a * root == x
root ← (root + a) / 2
a ← x / root
x
root
10
5
3.5
3.17857
3.16232
3.16228
a
2
2.85714
3.14607
3.16223
3.16228
a * root == x & a == root
⇒ root * root == x
Kommazahlen sind meist nicht exakt gleich, daher besser
|a - root| > 0.0000001
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
28
Beispiel: Euklidscher Algorithmus
Berechnet den größten gemeinsamen Teiler zweier Zahlen x und y
Beobachtung:
(ggt teilt x) & (ggt teilt y)
⇒ ggt teilt (x - y)
⇒ ggt teilt (x - q*y)
⇒ ggt teilt Rest von x/y (rest)
⇒ GGT(x, y) = GGT(y, rest)
GGT (↓x, ↓ y, ↑ggt)
rest ← Rest von x / y
rest ≠ 0
x←y
y ← rest
rest ← Rest von x / y
Schreibtischtest
rest = 0
ggt ← y
x
y
rest
28
20
8
20
8
4
8
4
0
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
29
Algorithmenschreibweisen
Ablaufdiagramm (schon bekannt)
3
Struktogramm
GGT (↓x, ↓ y, ↑ggt)
x<y?
ja
nein
x⇔y
rest ← Rest von x / y
+ erzwingen strukturiertes Programmieren
(ohne beliebige Sprünge)
- aufwendig zu zeichnen
schwer zu ändern
while rest ≠ 0
x←y
y ← rest
rest ← Rest von x / y
ggt ← y
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
30
Algorithmenschreibweisen: Stilisierte Prosa
Stilisierte Prosa
GGT (↓x, ↓ y, ↑ggt)
S1 Mache x ≥ y.
Wenn x < y ist, vertausche x und y
+ größtmögliche Freiheit in der
Formulierung
S2 Bilde Rest.
Dividiere x durch y und nenne den Rest rest
- schreibaufwendig
- unpräzise
- Ablaufstrukturen (Schleifen,
Verzweigungen) nicht sichtbar
S3 Ende?
Wenn rest null ist, gehe zu S5
S4 Ersetze.
Ersetze x durch y und y durch rest
Gehe nach S2
S5 Fertig.
Das Ergebnis ggt ist y
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
Algorithmenschreibweisen: Java
Java-Programm
+ vom Computer lesbar und
verarbeitbar
+ eindeutig und präzise
+ von Menschen lesbar
- exakt, ohne Freiheitsgrade
- aufwendig zu schreiben
public class GGTProgram {
public static void main(String[] args) {
static int GGTEuklid(int x, int y) {
int x;
int y;
int ggt;
int rest;
int ggt;
Out.print("Bitte x eingeben: ");
x = In.readInt();
Out.print("Bitte y eingeben: ");
y = In.readInt();
ggt = GGTEuklid(x, y);
Out.print("Der GGT von x und y ist: ");
Out.println(ggt);
// %-Operator bildet den Rest
rest = x % y;
while (rest != 0) {
x = y;
y = rest;
rest = x % y;
}
}
// rest == 0
ggt = y;
return ggt;
}
} // end GGTProgram
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
31
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
32
Algorithmenschreibweisen: Java + Prosa
Prosa + Java
ƒ Java-Kontrollstrukturen
ƒ mit Anweisungen in Prosa
int GGTEuklid(x, y) {
+ nahe einem Java-Programm
+ beliebige Freiheit bei der
Formulierung von Anweisungen
+ muss nicht syntaktisch korrekt
sondern nur verständlich sein
+ daraus kann schrittweise ein JavaProgramm entwickelt werden
rest = Rest von x/y
while (rest nicht 0 ist) ´
x=y
y = rest
rest = Rest von x/y
ggt = y
return ggt
}
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
33
Algorithmen und Programmierung
Programm
Ein für die Lösung einer bestimmten Aufgabe mit einer
Datenverarbeitungsanlage geeigneter Algorithmus
d.h.
ƒ Elementare Operationen sind die durch den Computer
ausführbaren Befehle
ƒ Programm muss in einer für den Computer lesbaren Form
definiert sein (==> Programmiersprache)
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
34
Höhere Programmiersprachen
ƒ
Höhere Programmiersprachen dienen der Formulierung von Programmen
ƒ
Sind für den Computer lesbar und verarbeitbar
ƒ können vom Computer gelesen werden
ƒ können vom Computer in ein ausführbares Programm übersetzt werden
(Compiler)
ƒ
für den Menschen wesentlich einfacher lesbar und schreibbar als
Maschinensprache
ƒ Programmieren wird wesentlich erleichtert
ƒ Programme können vom Experten gelesen und verstanden werden
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
35
Programmerstellung
Idee
Spezifikation
Aufgabenstellung
Algorithmus
Lösungsverfahren
Mensch
Programm
Compiler
Codiertes Lösungsverfahren
Maschinenprogramm
Lader
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
36
Geschichte der Programmiersprachen
Jahr
1957
1960
Sprache
Fortran
Algol-60
Cobol
Basic
APL
Lisp
PL/I
Algol-68
Pascal
Prolog
C
Modula-2
Ada
Smalltalk
C++
Oberon
Java
C#
1962
1965
1968
1971
1972
1973
1980
1983
1987
1995
2000
Bemerkung
technische Anwendungen
“Algol-Familie”
kaufmännische Anwendungen
Anfänger-Sprache
Vektoren und Matrizen
funktionale Sprache
Allzwecksprache
Nachfolger von Algol-60
Einfluß auf spätere Sprachen
Wissen und Schlußregeln
“Unix-Sprache”
Nachfolger von Pascal
Allzwecksprache; DoD
objektorientierte Sprache
objektorientierte Erweiterung von C
Weiterentwicklung von Modula-2
Weiterentwicklung von C++; WWW
Weiterentwicklung von Java durch Microsoft
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
37
Programmiersprache Java
ƒ
Java ist eine höhere, problemorientierte Programmiersprache, die laut Sun
durch folgende Eigenschaften charakterisiert ist:
ƒ Simple: einfacher als C++
ƒ Architecture-neutral: läuft auf Windows-Rechner als auch auf Unix/Linux, Mac
ƒ Object-oriented
ƒ Portable
ƒ Distributed
ƒ High-performance
ƒ Interpreted
ƒ Multithreaded
ƒ Robust
ƒ Secure
ƒ Dynamic
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
38
Java Virtual Machine
ƒ
Java-Programme werden nicht direkt auf dem Computer ausgeführt
sondern von einen speziellen Programm, nämlich der
Java Virtual Machine (JVM)
Vorteile:
ƒ
Java-Programme laufen „kontrolliert“ in der JVM ab
ƒ Erhöhte Sicherheit und Zuverlässigkeit
ƒ
Kann auf jede Plattformen portiert werden.
ƒ Vom Super Computer bis zu Handys
ƒ Von Unix bis Windows-CE
ƒ Selbes Programm läuft (mit Einschränkungen) auf alle diesen Plattformen ohne
nochmals übersetzt oder portiert zu werden, da sich die VM auf jeder Plattform
gleich verhält
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
39
Unterschied normale Prgrammausführung Ö Virtuelle Machine (VM)
normale Prgrammausführung
Ö
Virtuelle Machine
Application
I-B
er
JN
Systemlibraries
ei
ch
Application
Operating-System
Hardware
Virtual Machine
Systemlibraries
Operating-System
Hardware
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
40
Java Runtime Environment (JRE)
ƒ
Eine Plattform ist die Hard- und Softwareumgebung auf der ein Programm läuft.
ƒ
Die meisten Plattformen bestehen aus Hardware und Betriebssystem.
ƒ
Die Java-Plattform unterscheidet sich von den meisten anderen Plattformen dadurch,
das sie eine reine Software-Plattform ist, die für verschiedenste Hardware und
Betreibssysteme verfügbar ist.
ƒ
Die Java Runtime Environment besteht aus zwei Teilen:
• Die Java Virtual Machine (Java VM)
• Das Java Application Programming Interface (Java API)
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
41
Java Development Tookit (JDK)
== Programmwerkzeuge
zum Erstellen, Übersetzen und
Testen von Java-Programmen
ƒ
Ö javac
Java Compiler
ƒ Übersetzt den Quellcode in Java Byte-Code
ƒ
Ö jdb
Java Debugger
ƒ Tool zur Fehlersuche
ƒ
Ö javap
Java Disassembler
ƒ Erzeugt aus Byte-Code lesbaren Quellcode
ƒ
Weitere Tools
ƒ jar, javah, javadoc, javakey, serialver, ...
ƒ
Java Dokumentation (separates Download)
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
42
Erstellen und Ausführen von Java-Programmen
Beispielprogramm HelloWorld
Erstellen von Java-Programm
mit Editor
Erstellen von Programm
HelloWorld mit Editor
Quellcode (Sourcecode) in Java
Datei HelloWorld.java mit Java-Source
Java Compiler (javac)
javac HelloWorld.java
Java Zwischencode (Byte Code)
Datei HelloWorld.class mit Byte-Code
java HelloWorld
Java Runtime (java)
Ausführung von Programm HelloWorld
Programmausführung
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
43
Programm schreiben (Wordpad)
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
44
Programm kompilieren (javac)
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
45
© Hanspeter Mössenböck, Herbert Prähofer
46
Programm starten (java)
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
Java: Deklaration von Variablen
ƒ In Java müssen alle Variablen vor der Verwendung deklariert
werden
ƒ Deklaration von Variablen
ƒ Angabe des Datentyps
ƒ Angabe des Namens (eindeutig)
ƒ [Angabe eine Anfangswertes (optional)]
int i;
int j = 0, k;
boolean positive = false;
float x;
char ch = ' ';
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
47
Java: Zuweisungsoperation
Wichtig!
x = 1 + 2;
Zuweisung ungleich
Gleichheitsoperator
x = a + b;
(==)
x = x + b;
x = x + 1;
Weist einer Variable einen Wert zu.
ƒ
Der Wert der Variablen auf der rechten Seite geht dabei nicht verloren.
ƒ
Der Zuweisungsoperator ist nicht mit der Gleichheitsrelation der Mathematik zu
verwechseln.
ƒ
Die Hauptanwendung des Zuweisungsoperators liegt in der Zuweisung eines
Ergebnisses eines Ausdruckes an eine Variable.
Verschiedene Schreibweisen in unterschiedlichen PrgmSprachen
ƒ
m = n
C/C++, Java, FORTRAN, Basic, ...
ƒ
m <– n
APL
ƒ
m := n
Pascal, Algol, Modula-2
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
48
Java: Sequenz
int number;
number = readInt();
number = number + 1;
writeInt(number);
...
Folge von Anweisungen werden nacheinander
(sequentiell) ausgeführt
ƒ
ƒ
Ist nichts anderes spezifiziert, werden Anweisungen immer
nacheinander - man sagt sequentiell - ausgeführt
Während der Ausführung werden Werte von Variablen verändert
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
49
Java: Verzweigungen
Eine Verzweigung führt Anweisungen in
Abhängigkeit einer Bedingung aus.
Java
Bedingung
Einseitig:
wenn x < 0 ist, dann
x = -x
if (x < 0) {
x = -x
}
Anweisungen
Zweiseitig:
wenn x < y ist, dann
min = x, max = y
sonst
/* x >= y */
if (x < y) {
min = x; max = y;
} else { /* x >= y */
min = y; max = x;
}
min = y, max = x
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
50
Java: Schleifen
Schleifen führen Anweisungen in Abhängigkeit
einer Bedingung kein- oder mehrmals aus.
Beispiel: Berechnung der Fakultät
Abweiseschleife
Java
Bedingung
x = 3, i = 1, f = 1
solange i < x ist, wiederhole
i = i + 1, f = f *Anweisungen
i
x = 3; i = 1; f = 1;
while (i < x) {
i = i + 1; f = f * i;
}
Durchlaufschleife
x = 3, i = 1, f = 1;
wiederhole
f = f * i, i = i + 1
solange i <= x
x = 3; i = 1; f = 1;
do {
f = f * i; i = i + 1;
} while (i <= x);
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
51
Grundstruktur von Java-Programmen
Text muß in einer Datei namens
ProgramName.java stehen
class ProgramName {
public static void main (String[] arg) {
... // Deklarationen
... // Anweisungen
}
main-Methode stellt den Anfang
des Programms dar
}
Beispiel:
class Sample {
public static void main (String[] arg) {
Out.print("Geben Sie 2 Zahlen ein:");
int a = In.readInt();
int b = In.readInt();
Out.println("Summe = " + (a + b));
}
}
Text steht in Datei
Sample.java
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
52
Beispiel Java-Programm
public class GGTProgram {
public static void main(String[] args) {
int x;
int y;
int ggt;
Out.print("Bitte x eingeben: ");
x = In.readInt();
Out.print("Bitte y eingeben: ");
y = In.readInt();
ggt = GGTEuklid(x, y);
Out.print("Der GGT von x und y ist: ");
Out.println(ggt);
}
static int GGTEuklid(int x, int y) {
int rest;
int ggt;
// %-Operator bildet den Rest
rest = x % y;
while (rest != 0) {
x = y;
y = rest;
rest = x % y;
}
// rest == 0
ggt = y;
return ggt;
}
} // end GGTProgram
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
53
Java-Programm "Sum" (Sum.java)
public class Sum {
public static void main(String[] args) {
int sum = 0;
int number;
Out.print("Bitte Zahlen eingeben: ");
number = In.readInt();
while (number > 0) {
sum = sum + number;
number = In.readInt();
}
Out.print("Die Summe ist:");
Out.printLn(sum);
}
}
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
54
Schritte des Algorithmenentwurfs und der Programmierung
ƒ Problem erfassen und beschreiben
ƒ Lösungsidee erarbeiten und niederschreiben
ƒ Lösungsidee in einen schrittweisen Ablauf überführen
(= Algorithmus)
ƒ Algorithmus so weit verfeinern und konkretisieren, dass Umsetzung
in Java direkt möglich ist
ƒ Programmierung in Java
ƒ Überlegen von Testfällen (dabei alle möglichen Sonderfälle,
Grenzfälle betrachten)
ƒ Testen und Verbessern
ƒ Dokumentieren der Ergebnisse
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
55
Einige Hinweise
ƒ Es ist wichtig, klar und einfach zu denken
ƒ Hat man das Problem einmal richtig erfasst (niederschreiben), so ist
meist auch die Lösung klar.
ƒ Die besten Lösungen sind (fast immer) die einfachsten und kürzesten.
ƒ Sonderfälle und Grenzfälle betrachten (z.B. Division durch 0)
ƒ Fehler treten meist bei den Sonderfällen und Grenzfällen auf; an diese
denken und im Algorithmus vorsehen.
ƒ Der Mensch berücksichtigt Sonderfälle meist intuitiv; Intuition fehlt dem
Computer aber völlig.
ƒ
Java-Programme müssen absolut exakt, verständlich und übersichtlich sein
ƒ Keine Syntaxfehler
ƒ Klare Namensgebung
ƒ Genaue Konventionen für das Format und die Zeichensetzung
(Einrückungen, Leerzeichen etc.)
ƒ Kommentare für Verständnis wichtig
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (gtec)
© Hanspeter Mössenböck, Herbert Prähofer
56
Herunterladen