Informatik Sommercamp 2012 Java programmieren Rechnerbedienung <weiter>
Informatik Sommercamp 2012 1. Imperative Programmierung 2. Objektorientierung 3. Eclipse 4. Debugger Crash-Kurs Uni Vorgehensweise: bisschen Theorie vorher Aber: interessieren uns nur für das, was wir brauchen
Imperative Programmierung von Neumann Modell Zustand Programmzähler Variablen Arithmetik Theorie-Teil: bisschen Historie Vorstellung, wie der Rechner funktioniert
von Neumann Modell John von Neumann *1903 †1957 Mengenlehre Quantenmechanik Funktionsanalysis Spieltheorie Manhattan-Projekt Rechnerarchitektur von Neumann in Grundlagenvorlesungen einen der ersten Computer gebaut Spieltheorie: mehrere Agenten wollen gewinnen Manhattan-Projekt: Schockwellen keine Atombomben, sondern Rechnerarchitektur
von Neumann Modell teilw. noch heute gültiges Rechnermodell Programmzähler Zustand Rechenwerk (Arithmetik) Speicher Programmzähler: Versch. Schemata: Gemeinsamkeiten Programme sind Daten (Maschinencode) Zeiger auf nächsten Befehl Batch-Ausführung (nacheinander) <weiter> Programm und Daten
von Neumann Modell teilw. noch heute gültiges Rechnermodell Programmzähler Zustand Rechenwerk (Arithmetik) Speicher
Imperative Programmierung Verzweigung if (b : boolean) s1; else s2; Entscheidungen!
von Neumann Modell teilw. noch heute gültiges Rechnermodell Programmzähler Zustand Rechenwerk (Arithmetik) Speicher Programme und Daten am Zustand herumgebaut gemeinsamer Bus – intern keine Unterscheidung Wichtig: Zustandsübergänge
von Neumann Modell teilw. noch heute gültiges Rechnermodell Programmzähler Zustand Rechenwerk (Arithmetik) Speicher Beispiel: grüner Kommentar
von Neumann Modell teilw. noch heute gültiges Rechnermodell Programmzähler Zustand Rechenwerk (Arithmetik) Speicher Arithmetik: ...haben wir jetzt schon Speicher: …müssen wir uns nicht kümmern
Imperative Programmierung Funktionen: Sichtbarkeit Funktionen: <weiter>
Imperative Programmierung Funktionen: Sichtbarkeit: private, protected private Funktionen: selber definiert Modularität, Übersicht Funktionen: zwei für uns hier relevante Sichtbarkeiten Modularität, Übersicht, Code wiederverwenden
Imperative Programmierung Funktionen: Sichtbarkeit: private, protected private Funktionen: selber definiert Modularität, Übersicht protected (hier): ererbt werden vom Framework aufgerufen
Imperative Programmierung Funktionen: Sichtbarkeit: private, protected private Funktionen: selber definiert Modularität, Übersicht protected: ererbt werden vom Framework aufgerufen Parameter und Rückgabewerte Parameter und Rückgabewerte: Nicht verwirren lassen! Rückgabewert Parameter Soviel (Module gab's auch) bis in die 70er Jahre Wir brauchen das, aber noch mehr. <weiter> Objektorientierung
Objektorientierung T. Rentsch (1982): »My guess is that object-oriented programming will be in the 1980s what structured programming was in the 1970s. Everyone will be in favour of it. Every manufacturer will promote his products as supporting it. Every manager will pay lip service to it. Every programmer will practice it (differently). And no one will know just what it is.« D. Robson (1981): »Many people who have no idea how a computer works find the idea of object oriented systems quite natural. In contrast, many people who have expierence with computers initially think there is something strange about object-oriented systems.«
Objektorientierung Wozu soll das gut sein?
Objektorientierung Wozu soll das gut sein? Modularität, Übersicht
Objektorientierung Wozu soll das gut sein? Modularität, Übersicht Kohäsion und Kopplung
Objektorientierung Wozu soll das gut sein? Modularität, Übersicht Kohäsion und Kopplung Wiederverwendbarkeit von Programmcode
Objektorientierung Wozu soll das gut sein? Modularität, Übersicht Kohäsion und Kopplung Wiederverwendbarkeit von Programmcode dominante Dekomposition von Funktionalität
Objektorientierung Was bedeutet das für uns?
Objektorientierung Was bedeutet das für uns? das jRobots-Framework ist objektorientiert
Objektorientierung Was bedeutet das für uns? das jRobots-Framework ist objektorientiert die Entwicklung von Bots ist das eher nicht (bitte nach Möglichkeit nur eine Klasse bauen)
Objektorientierung Was bedeutet das für uns? das jRobots-Framework ist objektorientiert die Entwicklung von Bots ist das eher nicht (bitte nach Möglichkeit nur eine Klasse bauen) aber: wir müssen Framework-Funktionen verwenden
Objekte Attribute Methoden Objektorientierung Objekte Attribute Methoden - Objekte - Attribute - Methoden <weiter> Dazu in CIP-Pool wir machen das als praktischen Teil
Praktischer Teil Rest der Einführung mit JRobots und zuerst: Framework installieren Anleitung unter: www.fim.uni-passau.de/~simbuerg/jRobots Erstmal Passwort austeilen - Frage: Linux schon benutzt? (hier nicht abgedeckt) - Vorgehensweise: - Browser starten - herunterladen - Eclipse starten (mit Konsole) - … - jRobots starten: EmptyBot gegen anderen einfach ausprobieren <weiter> Eclipse Entwicklungsumgebung: was man sieht
Eclipse Java Perspective
Eclipse Open Source Entwicklungsumgebung neben Java auch C++, Python, PHP, UML, … Views (Drag&Drop) Plug-In-Architektur selbst in Java, aber nicht plattformunabhängig Features: (Syntaxhervorhebung), Codevervollständigung, Folding, Formatting, Access- Highlighting, Views (Package-Explorer, Outline, Console, JavaDoc, Call Hierarchy, Tasks, ...), Perspectives (Java, Debug, ...), ...
Objekte Attribute Methoden Objektorientierung Objekte Attribute Methoden wir machen das als praktischen Teil
Objekte Vererbungsbeziehung
Objekte Code im erbenden Bot
<<instanceOf>> Objekte Klasse != Instanz <<instanceOf>> EmptyBot@1c3508c0
Attribute/ Methoden Attribute und Methoden: Programmiert mal!
step over / step into / step out Debugger Run Configuration Debug Perspective Breakpoints Variable View step over / step into / step out (Hot Code Replace)