Sommersemester 2003 Lars Bernard 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
Hydrologische Modelle etc. 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
eine Abstraktion von der Welt 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
Java als moderne Programmiersprache Werkzeuge Ihr Kopf Papier und Bleistift Java als moderne Programmiersprache Geosoftware I – Lars Bernard
eine Programmiersprache 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
sehr stark an C++ angelehnt objektorientiert Was ist Java ? (2) sehr stark an C++ angelehnt objektorientiert “einfach”, “schnell”, “sicher” andere Programmier(sprachen)kenntnisse sind hilfreich Geosoftware I – Lars Bernard
Anwendungen schreiben! 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
zur Seminar Homepage ... Literatur-Hinweis Geosoftware I – Lars Bernard
Elementare Datentypen in Java Typen - Ziele Begriff (Daten-)Typ Zweck von Typen Beschreibung von Typen Elementare Datentypen in Java Deklaration Bereiche Operatoren Typumwandlung Geosoftware I – Lars Bernard
Welche Typen kennen Sie? Was bezeichnen diese Namen? 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
Hauptzweck: Fehler vermeiden 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 Geosoftware I – Lars Bernard
Operatoren dienen der Veränderung und Verknüpfung von Variablen 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 = 31 000; // 4 byte = 32 bit int b = 31 000; short s; // 2 byte = 16 bit s = a + 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
Typen sind ein Konzept der Programmierung Ausblick: 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) { } 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
Jetzt lesen, beginnen und dazu fragen ;-) die HA via e-mail an: Aufgabe 1 und 2 Jetzt lesen, beginnen und dazu fragen ;-) die HA via e-mail an: Lars Bernard (bernard@uni-muenster.de) jeweils bis Montag 12.00 st Geosoftware I – Lars Bernard