Praktikum
Entwicklung und Einsatz
von Geosoftware I
Sitzung 2
Programmieren und Typen
Sommersemester 2003
Lars Bernard
Organisation
• Infos unter:
http://ifgi.uni-muenster.de/~bernard/public/
GeosI/index.html
• Teilnehmer-Liste
Geosoftware I – Lars Bernard
Einführung:
Was bedeutet Programmieren?
• Eine mögliche Definition:
Erstellen einer Simulation
 Objektorientierung wurde mit der Sprache Simula
“erfunden” (1967) !
 Es geht nicht nur darum, dass das Programm läuft
• Simulation = ausführbares Modell
 Sie lernen hier, mit Informatikmethoden Modelle zu
bauen und sie auszuprobieren
Geosoftware I – Lars Bernard
Beispiele
• Wettervorhersage
• Roboter
• Fahrzeugnavigation
• Hydrologische Modelle
• etc.
Geosoftware I – Lars Bernard
Kern der Simulation: ein Modell
• ein Modell der Welt, nicht des Computers
 Folge: Sie sollten genau verstehen, was Sie wollen
 Lassen Sie sich vom Programmcode nicht den Blick
aufs Wesentliche nehmen
• Merke:
 “gute Programmierer programmieren einfache
Aufgaben;  divide & conquer !
 schlechte Programmierer versuchen, schwierige
Aufgaben zu programmieren”
Geosoftware I – Lars Bernard
Was ist ein Modell ?
• eine Abstraktion von der Welt
 Wichtiges hervorheben, Details weglassen
 klassifizieren und verallgemeinern
• in einer Sprache beschrieben
 welche Sprachen zur Modellierung kennen Sie?
 welche Sprachmittel bieten diese?
• bestehend aus Objekten und Operationen
 Objektorientierung: beide zusammen betrachten.
Geosoftware I – Lars Bernard
Modelle der Geoinformatik
• 3 Komponenten:
 Raumbezug
 Zeitbezug
 Thematik
• Besonderheiten:
 wir können nicht einfach festlegen, wie die Welt
funktionieren soll
 Geometrie
Geosoftware I – Lars Bernard
Werkzeuge
• Ihr Kopf
• Papier und Bleistift
• Java als moderne Programmiersprache
Geosoftware I – Lars Bernard
Was ist Java?
• eine Programmiersprache
• modern, d.h. vergleichsweise “neu” (vgl.
Fortran, Pascal, C, Basic, …..)
• eine wichtige Programmiersprache für
verteilte Anwendungen und das
World Wide Web (WWW)
Geosoftware I – Lars Bernard
Was ist Java ? (2)
• sehr stark an C++ angelehnt
• objektorientiert
• “einfach”, “schnell”, “sicher”
• andere Programmier(sprachen)kenntnisse
sind hilfreich
Geosoftware I – Lars Bernard
Was macht man mit Java ?
• Programmieren!
• Anwendungen schreiben!
 alle Arten von Anwendungen, die man mittels
“klassischer” Sprachen schreiben kann
 insbesondere Anwendungen, die mit anderen
Computern via Internet kommunizieren können
• Einbindung von Grafiken, Webseiten,
interaktiven Fenstern, benutzerfreundlichen
Oberflächen, ...
Geosoftware I – Lars Bernard
Compiler & Interpreter
• Compiler = “Übersetzer”: übersetzt
(kompiliert) das Programm in
Maschinensprache
• Compiler liest und kompiliert gesamtes
Programm ==> ausführbares Programm
• Interpreter liest ein Programm Zeile für Zeile
und führt jede Zeile gleich aus.
Geosoftware I – Lars Bernard
Java Compiler und Interpreter
• Java Quellcode wird mittels JAVAC kompiliert (in
speziellen Bytecode)
• der Bytecode wird während des Programmablaufs
in Maschinensprache übersetzt (mittels JAVA)
• Vorteile sind u.a.:
 der vorkompilierte Code ist Plattform-unabhängig! (Internet!)
 Überwachung der Programmausführung, z. B. bei
Speicherzugriffen, Datenmanipulationen (Datenaustausch via
Internet)
Geosoftware I – Lars Bernard
Geosoftware I – Lars Bernard
Geosoftware I – Lars Bernard
Literatur-Hinweis
zur Seminar Homepage ...
Geosoftware I – Lars Bernard
Typen - Ziele
• Begriff (Daten-)Typ
 Zweck von Typen
 Beschreibung von Typen
• Elementare Datentypen in Java
 Deklaration
 Bereiche
 Operatoren
 Typumwandlung
Geosoftware I – Lars Bernard
Was ist ein Typ ?
• Welche Typen kennen Sie?
Integer, Boolean, Character, String, etc.
• Was bezeichnen diese Namen?
Mengen von Werten (“Wertebereich”)
• Boolean = { True, False }
• Integer = { x | minInt  x  maxInt}
• Wie baut man eigene Typen?
Mit Typkonstruktoren wie array, list, class etc.
Geosoftware I – Lars Bernard
Wozu braucht man Typen ?
• Hauptzweck: Fehler vermeiden
z.B. c := a + b (wo a = 5 und b = True)
• Speicherverwaltung
Typen übersetzen die Daten der Benutzer in den
internen Binärcode
• Modularisierung
Programme bauen auf Typen auf (Zahlen, Punkte,…)
Dies sorgt für Wiederverwendbarkeit!
Geosoftware I – Lars Bernard
Wie beschreibt man Typen ?
• Durch eine Implementierung
class Point
{
//*...*//
};
• Durch die zulässigen Operationen
(Operatoren und Methoden)
Integer: +, -, *, (div)
Punkt: new Point(5.0, 4.0), getX(), getY()
• Signaturen von Operationen
+
:: Integer, Integer -> Integer
getX
:: Point -> Double
Geosoftware I – Lars Bernard
Elementare Datentypen in Java
• Variablen werden als Elemente eines Typs
deklariert
int a, b, c;
a = 5; b = 2;
c = a + b;
int number_;
Geosoftware I – Lars Bernard
Java - Deklaration und Initialisierung
• int a;
• Im Speicher wird ein Bereich für a reserviert
und der Inhalt dieses Bereichs im weiteren
als ganzzahliger Wert von a interpretiert.
• Dann kann a ein Wert zugewiesen werden:
a = 5;
Geosoftware I – Lars Bernard
Java - Deklaration und Initialisierung
• In Java kann nur auf den Wert der Variablen
zugegriffen werden (nicht auf die Adresse)
• Deklaration und Zuweisung/Initialisierung
können in einer Anweisung erfolgen:
int a = 5;
• Werte können explizit als Konstante
deklariert werden:
final int a = 5;
Geosoftware I – Lars Bernard
Elementare Datentypen in Java
Typ
Beispiele
Wertemenge
short
int
3, -3, 0x3FF
(hexadezimal),
0377 (octal)
-215 ... 215-1
long
3l, 30000000000L
-263 ... 263-1
float
double
3.1415, 1e20,
1e-10, -1E10
byte
char
'A', 'a',
boolean
true, false
-231 ... 231-1
6-stellige Mantisse,
2-stelliger Exponent.
16-stellige Mantisse,
3-stelliger Exponent.
0... 28-1 = 255
Zwei byte-Character in
Unicode.
Wahr oder falsch.
Geosoftware I – Lars Bernard
Java - Operatoren
• Operatoren dienen der Veränderung und
Verknüpfung von Variablen
 arithmetische Operatoren, z.B:
Add: + Subtr: - Mult: * Div: / Incr: ++
 logische Operatoren:
Und: && Oder: || Ungleich: !=
Gleich: ==
 Zugriffsoperatoren:
Indexzugriff: []
 ...
Geosoftware I – Lars Bernard
Java - Typumwandlung (casting)
• Implizite Typumwandlung (vom niedrigeren zum
höheren Typ):
int a = 5;
double x;
x = a; // => x == 5.0
• Explizite Typumwandlung (vom höheren zum
niedrigeren Typ):
int a;
double x = 5.0;
a = x; // => warning or error
a = (int)X; // => ok
Geosoftware I – Lars Bernard
Java - Typumwandlung
• Bereichsüberschreitung:
int a
int b
short
s = a
= 31 000; // 4 byte = 32 bit
= 31 000;
s;
// 2 byte = 16 bit
+ b; // => s < 0 => overflow
• Implizite Typumwandlung in arithmetischen
Ausdrücken:
int a = 1; int b = 2;
double x;
x = a / b; // => x = 0
x = a / (double)b; // => x = 0.5
Geosoftware I – Lars Bernard
Zusammenfassung
• Typen sind ein Konzept der
Programmierung
• Ausblick:
 Klassen sind die objekt-orientierte Form
der Erzeugung von Typen durch Benutzer
 Listen zur Mengen-Verwaltung
Geosoftware I – Lars Bernard
Und jetzt probieren …
class Number {
Number(int numberIn) {
number_ = numberIn;
}
int getNumber() {
return number_;
}
int number_;
}
class HelloNumber {
public static void main(String[] args){
/* 1. Numbers as basic typs */
int Number1 = 1;
int Number2, Number3;
Number2 = 4;
Number3 = 10;
Number1 = Number2 + Number3;
System.out.println("Hello to basic number 1: "+ Number1) ;
System.out.println("Hello to a basic number 2 + number 3: "+ Number2 + "
" + Number3) ;
/* 2. Numbers as Objects */
Number myNumberObject;
myNumberObject = new Number(4);
System.out.println("Hello to a number object: "+ myNumberObject.getNumber());
}
}
Geosoftware I – Lars Bernard
Aufgabe 1 und 2
• Jetzt lesen, beginnen und dazu fragen ;-)
• die HA via e-mail an:
Lars Bernard ([email protected])
jeweils bis Montag 12.00 st
Geosoftware I – Lars Bernard

Sitzung 2