Softwareentwicklung 1 - SSW

Werbung
Softwareentwicklung 1
D H
Dr.
Herbert
b tP
Prähofer
äh f
Institut für Systemsoftware
Johannes Kepler Universität Linz
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (UZR)
© Systemsoftware, JKU Linz
1
Vortragender
Dr. Herbert Praehofer
Institute for System Software
Johannes Kepler University
Altenbergerstrasse 69
A-4040 Linz / Austria
Tel.: ++43 (732) 2468 7132
Fax.: ++43 (732) 2468 7138
EMail: [email protected]
http: www.ssw.uni-linz.ac.at
Raum: HF 306 (Hochschulfondgebäude 3. Stock)
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (UZR)
© Systemsoftware, JKU Linz
2
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 (UZR)
© Systemsoftware, JKU Linz
3
Motivation programmieren zu lernen
ƒ
Software erstellen können
ƒ Grundlagen der Programmierung verstehen
ƒ Java
J
kennen
k
ƒ 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 (UZR)
© Systemsoftware, JKU Linz
4
Organisation der LVA Softwareentwicklung 1
ƒ
Vorlesung
ƒ Stoff wird theoretisch vorgetragen
ƒ Mit eingebauten Programmierbeispielen
ƒ
Übu g
Übung
ƒ Stoff wird geübt
ƒ Programmieraufgaben sind wöchentlich zu programmieren
ƒ 2 Unterrichtsstunden für
ƒ Wiederholung
ƒ Praktische
P kti h B
Beispiele
i i l
ƒ Besprechung der Programmieraufgaben
ƒ Übungsleiter:
g
Hr. DI Peter Hamader
Programmieren
g
ist eine Fähigkeit,
g
,
die nur mit viel Übung erlernt werden kann!!
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (UZR)
© Systemsoftware, JKU Linz
5
Webpage der LVA
http://www.ssw.uni-linz.ac.at/Teaching/Lectures/UZR/SWE1/2009W/index.html
ƒ Alle wichtigen Infos wie
ƒ Termine
ƒ Unterlagen
ƒ Studienmaterial
St di
t i l
findet man auf dieser Seite
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (UZR)
© Systemsoftware, JKU Linz
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 (UZR)
© Systemsoftware, JKU Linz
7
Einheit 1:
Grundlagen der Programmierung
Programmierung und Ausführung von Programmen
Algorithmen und Algorithmendarstellung
g
p
und Java
Programmiersprachen
Das Java-Entwicklungssystem
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (UZR)
© Systemsoftware, JKU Linz
8
Worum geht es?
Programmieren
Problem so exakt beschreiben,, dass es ein Computer
p
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 (UZR)
© Systemsoftware, JKU Linz
9
Von-Neumann Architektur eines Computers
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (UZR)
aus: A. Ferscha, Skriptum Softwareentwicklung 1, JKU Linz
© Systemsoftware, JKU Linz
10
Wiederholung von der VL: RISC-Programm
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
aus: A. 1Ferscha,
Softwareentwicklung
(UZR)
Skriptum
Softwareentwicklung
1, JKU Linz
© Systemsoftware,
JKU Linz
11
Verarbeitungseinheit
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung
1 (UZR)
aus: A. Ferscha,
© Systemsoftware,
JKU Linz
Skriptum
Softwareentwicklung
1, JKU Linz
12
Typische Befehle
ƒ load:
Laden von Daten aus Hauptspeicher
ƒ store:
Schreiben von Daten in Hauptspeicher
p p
ƒ move:
Speicheroperationen
ƒ add,
add sub
sub, mult
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 (UZR)
© Systemsoftware, JKU Linz
13
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
Charakterisiert durch
ƒ Name oder Bezeichner
Beispiel: byte
b t x = 10
Adresse
Wert
99
ƒ Wert
100
ƒ Adresse
Ad
(im
(i H
Hauptspeicher)
t
i h )
101
10
x
(byte)
ƒ Datentyp
Datentyp
ƒ int,
int char,
char byte,
byte float
float, ...
Name
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (UZR)
© Systemsoftware, JKU Linz
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
true,
ƒ float
3.14159265259
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (UZR)
© Systemsoftware, JKU Linz
16
Algorithmus
Ein Algorithmus ist ein endliches, schrittweises Verfahren zur
Berechnung gesuchter aus gegebenen Größen, in dem jeder
S h itt aus einer
Schritt
i
A
Anzahl
hl eindeutig
i d ti ausführbarer
füh b
O
Operationen
ti
und
d
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 (UZR)
© Systemsoftware, JKU Linz
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 (UZR)
© Systemsoftware, JKU Linz
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
3.2
Diese Formulierung ist einem Computerprogramm
schon sehr nahe.
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (UZR)
© Systemsoftware, JKU Linz
19
Anweisungen: Wertzuweisung und Sequenz
Wertzuweisung
x ← x+1
Variable
1. werte
1
t A
Ausdruck
d k aus
2. weise seinen Wert der Variablen zu
Ausdruck
Anweisungsfolge (auch Sequenz)
"Ablaufdiagramm"
x←3
y←4
z←x+y
Assertion
x == 3,
3 y == 44, z == 7
Assertion (Zusicherung)
Aussage über den Zustand des Algorithmus
an einer bestimmten Stelle
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (UZR)
© Systemsoftware, JKU Linz
20
Anweisungen: Verzweigung
Auswahl (auch Verzweigung, Abfrage, Selektion)
j
min ← x
x<y?
n
x≥y
min ← y
min == Minimum von x und y
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (UZR)
© Systemsoftware, JKU Linz
21
Anweisungen: Wiederholung
Wiederholung (auch Schleife, Iteration)
Alternative Darstellung
sum ← 0
zahl ← 1
sum ← 0
zahl ← 1
zahl <= n ? nein
ja
zahl <= n
sum ← sum + zahl
zahl ← zahl + 1
sum ← sum + zahl
zahl ← zahl + 1
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (UZR)
© Systemsoftware, JKU Linz
22
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 (UZR)
© Systemsoftware, JKU Linz
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
b>c?
max ← b
a≤b
n
a≤b≤c
max ← c
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (UZR)
© Systemsoftware, JKU Linz
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
b>c?
max ← b
a≤b
n
a≤b≤c
max ← c
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (UZR)
© Systemsoftware, JKU Linz
26
Beispiel: Summe
ƒ
Summe von 1 bis n
Sum(↓n, ↑sum)
Schreibtischtest (n = 5)
sum ← 0
zahl ← 1
zahl <= n
sum ← sum + zahl
zahl ← zahl + 1
0
sum
0
zahl
1
1
1
2
2
3
3
3
4
5
6
10
15
4
5
6
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (UZR)
© Systemsoftware, JKU Linz
27
Algorithmen und Programmierung
Programm
Ein für die Lösung
g einer bestimmten Aufgabe
g
mit einer
Datenverarbeitungsanlage geeigneter Algorithmus
d.h.
ƒ Elementare Operationen
p
sind die durch den Computer
p
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 (UZR)
© Systemsoftware, JKU Linz
35
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
p
in ein ausführbares Programm
g
übersetzt werden
ƒ können vom Computer
(Compiler)
ƒ
für den Menschen wesentlich einfacher lesbar und schreibbar als
Maschinensprache
ƒ Programmieren
P
i
wird
i d wesentlich
li h erleichtert
l i h
ƒ Programme können vom Experten gelesen und verstanden werden
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (UZR)
© Systemsoftware, JKU Linz
36
Programmerstellung
Idee
Spezifikation
Aufgabenstellung
Algorithmus
Lösungsverfahren
Mensch
Programm
Compiler
Codiertes Lösungsverfahren
Maschinenprogramm
L d
Lader
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (UZR)
© Systemsoftware, JKU Linz
37
Geschichte der Programmiersprachen
Jahr
1957
1960
Sprache
Fortran
Algol-60
g
Cobol
Basic
APL
Lisp
PL/I
Algol-68
Pascal
Prolog
C
Modula-2
Ada
S llt lk
Smalltalk
C++
Oberon
Java
C#
1962
1965
1968
1971
1972
1973
1980
1983
1987
1995
2000
Bemerkung
technische Anwendungen
“Algol-Familie”
g
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
Unix-Sprache
Sprache”
Nachfolger von Pascal
Allzwecksprache; DoD
objektorientierte
bj kt i ti t Sprache
S
h
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 (UZR)
© Systemsoftware, JKU Linz
38
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
High performance
ƒ Interpreted
ƒ Multithreaded
ƒ Robust
ƒ Secure
ƒ Dynamic
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (UZR)
© Systemsoftware, JKU Linz
39
Java Development Kit installieren
http://java.sun.com/javase/downloads/
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Java Runtime Environment (JRE)
•
Die Java Virtual Machine (Java VM)
•
Das Java Application Programming Interface (Java API)
Java Virtual Machine (JVM)
ƒ
Java-Programme nicht direkt auf dem Computer ausgeführt
ƒ
sondern durch java
java-Programm
Programm
Vorteile:
ƒ Java-Programme laufen „kontrolliert“ in der JVM ab (erhöhte Sicherheit und
Z
Zuverlässigkeit)
lä i k it)
ƒ Kann auf jede Plattformen portiert werden.
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (UZR)
© Systemsoftware, JKU Linz
41
Java Development Tookit (JDK)
== Programmwerkzeuge
zum Erstellen, Übersetzen und
Testen von Java-Programmen
ƒ
Öj
javac
Java Compiler
p
ƒ Ü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,
jar javah,
javah javadoc,
javadoc javakey,
javakey serialver,
serialver ...
ƒ
Java Dokumentation (separates Download)
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (UZR)
© Systemsoftware, JKU Linz
42
Java Development Kit (JDK)
Erstellen und Ausführen von Java-Programmen.
Beispielprogramm HelloWorld
Erstellen von Java-Programm
mit
it Edit
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)
Java Runtime (java)
Softwareentwicklung 1 (UZR)
JOHANNES KEPLER UNIVERSITY LINZ
java HelloWorld
Ausführung von Programm HelloWorld
Programmausführung
Research and teaching network
Datei HelloWorld.class mit Byte-Code
© Systemsoftware, JKU Linz
43
Java Dokumentation installieren
http://java.sun.com/javase/downloads/
C \P
C:\Program
Files\Java\jdk1.6.0_16\docs\index.html
Fil \J
\jdk1 6 0 16\d
\i d ht l
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Java Development Kit probieren
findet javac.exe nicht, weil JDK nicht im PATH
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Java Development Kit probieren
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Java Development Kit verwenden
Übersetzen
Ausführen
47
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Daten einlesen und ausgeben
B t
Bytecode
d
Dokumentation
Quelltext
Out.print(5)
Out.println("GdP")
Out.println("Hello World!");
In.readInt()
In.readWord()
In.readString()
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Text-Editor Notepad++
http://notepad-plus.sourceforge.net/
49
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Schritte des Algorithmenentwurfs und der Programmierung
ƒ Problem erfassen und beschreiben
ƒ Lösungsidee
Lö
id erarbeiten
b it und
d niederschreiben
i d
h ib
ƒ Lösungsidee in einen schrittweisen Ablauf überführen
(= Algorithmus)
ƒ Algorithmus so weit verfeinern und konkretisieren, dass Umsetzung
in Java direkt möglich
g
ist
ƒ Programmierung in Java
ƒ Überlegen von Testfällen (dabei alle möglichen Sonderfälle
Sonderfälle,
Grenzfälle betrachten)
ƒ Testen und Verbessern
ƒ Dokumentieren der Ergebnisse
JOHANNES KEPLER UNIVERSITY LINZ
Research and teaching network
Softwareentwicklung 1 (UZR)
© Systemsoftware, JKU Linz
61
Zugehörige Unterlagen
Herunterladen