Praktikum Entwicklung und Einsatz
von Geosoftware I-
Sitzung 2Programmieren und Typen
Sommersemester 2003
Lars Bernard
Geosoftware I – 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 vermeidenz.B. c := a + b (wo a = 5 und b = True)
• SpeicherverwaltungTypen übersetzen die Daten der Benutzer in den internen Binärcode
• ModularisierungProgramme bauen auf Typen auf (Zahlen, Punkte,…)
Dies sorgt für Wiederverwendbarkeit!
Geosoftware I – Lars Bernard
Wie beschreibt man Typen ?
• Durch eine Implementierungclass 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
deklariertint 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 Wertemengeshort -215 ... 215-1
int3, -3, 0x3FF(hexadezimal),0377 (octal)
-231 ... 231-1
long 3l, -30000000000L
-263 ... 263-1
float 6-stellige Mantisse,2-stelliger Exponent.
double3.1415, 1e20,1e-10, -1E10 16-stellige Mantisse,
3-stelliger Exponent.byte 0... 28-1 = 255
char 'A', 'a', Zwei byte-Character inUnicode.
boolean true, false 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 errora = (int)X; // => ok
Geosoftware I – Lars Bernard
Java - Typumwandlung
• Bereichsüberschreitung:
int a = 31 000; // 4 byte = 32 bitint b = 31 000; short s; // 2 byte = 16 bits = a + b; // => s < 0 => overflow
• Implizite Typumwandlung in arithmetischen
Ausdrücken:
int a = 1; int b = 2;
double x;x = a / b; // => x = 0x = 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