Grobe Übersicht (vorläufig) Objektorientierte Programmierung (OOP) mit Java Computer Algebra System (CAS) Maple Internet (Grundlagen, Dienste, eigene Angebote) Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 1 / 29.08.2006 OOP: Objektorientierung und Modell Damit die Informatik reale Probleme lösen kann, muss die Wirklichkeit zunächst computerverständlich beschrieben werden: Man muss ein Modell der Wirklichkeit entwickeln. Durch Abstraktion werden die wesentlichen Eigenschaften und Funktionen eines realen Objekts erfasst und gegen andere Objekte abgegrenzt: objektorientierte Analyse (OOA). Kern der objektorientierten Programmierung (OOP) ist die Modellierung von Abstraktionen unter Verwendung von Objekten und Klassen. Das Hauptschwierigkeit ist es dabei, die dem Problem angemessenen Abstraktionen, sprich Klassen und Objekte zu finden. Quelle vieler Folien: Wilcek: Schule und Informatik 2004 Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 2 / 29.08.2006 Objektorientierung und Java Die Umsetzung von OOP kann mit zahllosen Programmiersprachen (C, Java, Delphi, …) oder SoftwareWerkzeugen erfolgen. Die erste objektorientierte Computersprache war SIMULA-67, entwickelt 1967. Wir werden Java verwenden. Ziel ist es mit Java, das OOP-Konzept zu konkretisieren und zu veranschaulich. es geht nicht um Programmier-Virtuosität Nebeneffekt: Förderung von genauem Denken und präzisem Arbeiten. Quelle vieler Folien: Wilcek: Schule und Informatik 2004 Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 3 / 29.08.2006 Objektorientierung Die zentralen Begriffe sind hier Objekt und Klasse. Eine Klasse beschreibt eine Kategorie von Objekten. Eine Klasse dient als Bauplan, Vorlage, Leitfaden oder eine Schablone für die Erzeugung neuer Objekte. Eine Klasse definiert die Eigenschaften und Verhaltensweisen eines Objekts. Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 4 / 29.08.2006 Objektorientierung Beispiel: Kaffeemaschine Quelle: Wilcek: Schule und Informatik 2004 und Bock; Schäfer: JavaEinführung. Uni Leipzig Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 5 / 29.08.2006 Kaffeemaschine: Funktion Wasser hinzufügen Füllstand kontrollieren Kaffee für eine Tasse erzeugen Kaffeebohnen hinzufügen Füllstand kontrollieren Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 6 / 29.08.2006 Kaffeemaschine: Zustandswerte Füllstand Wasser Füllstand Kaffeebohnen Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 7 / 29.08.2006 Funktion und Zustand unterstützte Funktionen Füllen mit Kaffeebohnen Kontrollieren des Bohnenvorrats Füllen mit Wasser Kontrollieren des Wasserstands Kaffee für eine Tasse erzeugen Interne Werte, die den Zustand definieren Wasserstand Bohnenvorrat Zusammenhang zwischen Funktionen und Zuständen Kaffe kann nur bei ausreichender Menge Wasser und Kaffeebohnen erzeugt werden Wasser kann nicht nachgefüllt werden, wenn Reservoir voll Bohnen können nicht nachgefüllt werden, wenn Reservoir voll Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 8 / 29.08.2006 Innerhalb der Kaffeemaschine Wie wird aus Wasser und Kaffeebohnen Kaffee? Die technische Realisierung interessiert bei der objektorientierten Betrachtungsweise nicht. Für die breite und einfache Nutzung von Geräten und Konzepten ist es wichtig, dass der Nutzer wenig bis nichts über die interne Realisierung wissen muss. Diese schlichte Erfahrung ist der Grundgedanke objektorientierter Analyse und Programmierung. Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 9 / 29.08.2006 Von der Kaffeemaschine zu … Ein Objekt ist eine handlungsfähige Einheit bestehend aus von außen nicht erkennbarem Zustand, von außen nicht sichtbaren Funktionen, von außen sichtbaren Funktionen (Methoden), die das extern sichtbare Objektverhalten bestimmen. Ein Attribut ist ein „Behälter“ für einen Wert, der den inneren Zustand mitbestimmt. Eine Methode ist eine von außen sichtbare Funktion eines Objekts. Die Menge aller Methoden bilden die Schnittstelle eines Objekts. Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 10 / 29.08.2006 Klasse und Objekt Eine Klasse ist eine Definition, die eine Menge gleichartiger Objekte beschreibt, sie umfasst die gemeinsamen Attribute und Methoden der Objekte. Ein Objekt ist ein Exemplar (Instanz), einer Klasse, hat Eigenschaften und Methoden, die in der Klasse festgelegt worden sind, wird bei Bedarf aus der Klasse abgeleitet. Nochmals: Eine Klasse ist eine Schablone für die Erzeugung neuer Objekte. Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 11 / 29.08.2006 Klassen und Objekte Eigenschaften eines Objektes einer Klasse werden Attribute genannt und werden in Java durch Felder definiert. Ein Feld in einer Klassendefinition ist eine Variable, die einen Wert speichern kann, der eine Eigenschaft des Objekts repräsentiert. Das Verhalten eines Objektes einer Klasse wird durch Operationen definiert. Operationen werden Java mit Hilfe von Methoden definiert. Felder und Methoden in der Definition einer Klasse werden zusammen als member der Klasse bezeichnet. Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 12 / 29.08.2006 Vertrag bzw. Implementierung Der Vertrag (contract) definiert, welche Services von einer Klasse zur Verfügung gestellt werden. Die Implementierung definiert, wie diese Services von der Klasse zur Verfügung gestellt werden. Andere Objekte müssen lediglich die Verträge kennen, um zu wissen, auf welche Services der anderen Objekte und auf welche Weise zugegriffen werden kann. Andere Objekte hat es nicht zu interessieren, wie der Service eines anderen Objekts im Detail funktioniert bzw. welche Implementierung hinter einem Service steckt. Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 13 / 29.08.2006 Unified Modeling Language (UML) Darstellung einer Klasse in UML Kaffeemaschine wasserstand bohnenvorrat herstellername seriennummer zeigeBohnenvorrat() zeigeWasserstand() fuelleBohnen() fuelleWasser() erzeugeTasseKaffee() zeigeHerstellername() zeigeSeriennummer() Kurzform Kaffeemaschine Felder Klasse members Methoden Klasse Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 14 / 29.08.2006 Instantiierung Instantiierung nennt man den Prozess, bei dem aus einer Klasse ein Objekt erzeugt wird. Ein Objekt ist immer eine Instanz einer Klasse. Das Objekt wird nach dem „Bauplan“ erzeugt, den die Klasse definiert. Ein Objekt hat eine Lebensdauer, es muss immer erzeugt werden, bevor es im Programm benutzt werden kann. Spätestens am Programmende wird das Objekt zerstört. Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 15 / 29.08.2006 Klassen und Objektdiagramm Kaffeemaschine Jura S50: Kaffeemaschine wasserstand bohnenvorrat wasserstand: 4 bohnenvorrat: 22 herstellername: Jura m1: Kaffeemaschine seriennummer: Wasserstand: 8 bohnenvorrat: 5 herstellername: masch3: Bosch Kaffeemaschine seriennummer: Wasserstand: 11 bohnenvorrat: 8 herstellername: Bosch seriennummer: S11753 herstellername seriennummer zeigeBohnenvorrat() zeigeWasserstand() fuelleBohnen() fuelleWasser() erzeugeTasseKaffee() zeigeHerstellername() zeigeSeriennummer() Klasse Datenverarbeitung Jahrgangsstufe I Objekte (Instanzen der Klasse) Sozialpädagogisches Gymnasium Maurer / Folie 16 / 29.08.2006 Instance members Jedes Objekt hat seine eigene Kopie der Felder, die in der Klasse definiert worden sind. Die Felder eines Objekts werden auch Instanz-Variablen genannt. Die Methoden eines Objekts werden Instanz-Methoden. Jedes Objekt besitzt seine eigenen Instanz-Methoden. Wichtig: Die Implementierung der Methoden wird von allen Objekten einer Klasse geteilt und ist in der Klasse definiert. Instanz-Variablen und Instanz-Methoden werden als „instance members“ bezeichnet. Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 17 / 29.08.2006 Static members In manchen Fällen sollten „members“ nicht zu einem einzelnen Objekt, sondern zur Klasse gehören. Beispiel: Zähler für die bisher erzeugten Objekte. Eine Klasse kann statische („static“) Variablen besitzen. Eine Klasse kann statische („static“) Methoden besitzen. Statische Variablen und statische Methoden heißen „static members“. Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 18 / 29.08.2006 Klassendiagramm mit „static members“ Kaffeemaschine wasserstand bohnenvorrat herstellername seriennummer zaehler zeigeBohnenvorrat() zeigeWasserstand() fuelleBohnen() fuelleWasser() erzeugeTasseKaffee() zeigeHerstellername() zeigeSeriennummer() zeigeZaehler() Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 19 / 29.08.2006 members Klasse: Kaffemaschine Attribute Verhalten Instanz-Variable wasserstand bohnenvorrat herstellername seriennummer Statische Variablen Instanz-Methoden zeigeBohnenvorrat() zeigeWasserstand() fuelleBohnen() fuelleWasser() erzeugeTasseKaffee() zeigeHerstellername() zeigeSeriennummer() Statische Methoden Objekte Klasse Datenverarbeitung Jahrgangsstufe I zaehler Felder members zeigeZaehler() Methoden Sozialpädagogisches Gymnasium Maurer / Folie 20 / 29.08.2006 Java Und nun zu Java Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 21 / 29.08.2006 Entwicklung von Java 1991 wurde eine Programmiersprache „oak“ entwickelt, die elektronische Geräte (Videorekorder, Telefone, etc.) miteinander kommunizieren lassen sollte. Das Projekte scheiterte. Mit „oak“ ließen sich aber sehr gut Multimedea-Anwendungen für das Internet entwickeln. 1995 muss „oak“ aus patentrechtlichen Gründen umbenannt werden. Bei der Abstimmung setzt sich Java gegen Silk und DNA durch. Der in den USA beliebte „Peet´s Java-Kaffee“ soll Pate gestanden haben. Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 22 / 29.08.2006 Java Einige Eigenschaften von Java: Java ist objektorientiert verteilt (Internetangepasste Programmiersprache) einfach (Zeiger-Zugriffe und andere raffinierten Programmiertricks sind nicht möglich) multithreaded (es können mehrere Prozesse parallel laufen) sicher (viele gefährlichen Aktionen sind in Java-Programmen nicht zugelassen) plattformunabhängig (läuft auf Windows, Unix, Mac, usw.), Näheres siehe Folie 28 f. Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 23 / 29.08.2006 Applet und Applikation Java-Applet in Web-Seiten eingebettet, wird von Web-Browsern ausgeführt, aus Sicherheitsgründen eingeschränkte Rechte. Java-Applikation wird als Windows-Anwendung gestartet (oder von Kommandozeile aus), wird auf Client oder Server ausgeführt, volle Rechte einer eigenständigen Anwendung Programmierung Applets und Applikationen sehr ähnlich Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 24 / 29.08.2006 Java-Applet Beschränkung der Rechte (Sandkasten-Prinzip: nur ungefährliches „Spielzeug“ zugelassen) nicht lesend oder schreibend auf Dateien des lokalen Rechners zugreifen, keine Programme starten, keine Bibliotheken laden, keine Verbindungen zu einem anderen Rechner (mit Ausnahme des Rechners, von dem das Applet geladen wurde) aufnehmen, keine System-Eigenschaften des lokalen Rechners auslesen, keine Top-Level-Fenster ohne Warnhinweise erzeugen, die virtuelle Maschine (JVM) nicht beenden. Ratz: Grundkurs Programmieren in Java. Band 2. München 2003, S. 283 Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 25 / 29.08.2006 Java mit Eclipse Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 26 / 29.08.2006 Java mit Eclipse Es folgt ein erstes Programm: Hello World! Daran wird erläutert, wie die Plattformunabhängigkeit der Java-Programme zustande kommt. Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 27 / 29.08.2006 Hello World: 1. Programmierung Programmierer schreibt Quelltext (Hello.java): Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 28 / 29.08.2006 Hello World: 2. Kompilierung Compiler übersetzt den Quelltext in Bytecode (Hello.java): Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 29 / 29.08.2006 Hello World: 3. Ausführung Java Virtual Maschine (JVM) interpretiert Bytecode und führt ihn aus Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 30 / 29.08.2006 Plattformunabhängigkeit Der Bytecode ist plattformunabhängig. JVM existieren für verschiedene Plattformen, damit ist der Bytecode auf verschiedenen Plattformen ausführbar. Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 31 / 29.08.2006 Geiergrafik Wir werden jetzt die Klasse Geier verwenden, um einfache Grafiken zu erstellen. Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 32 / 29.08.2006 Geiergrafik: Zeichenfeld Das Zeichenfeld besteht aus Bildpunkten (Pixel), die über xy-Koordinaten angesprochen werden können. Allerdings ist werden die y-Koordinaten wie bei der Zeilenzählung nach unten gezählt. 0,0 0,600 0,300 50,300 600,300 300,450 0,600 Datenverarbeitung Jahrgangsstufe I 600,600 Sozialpädagogisches Gymnasium Maurer / Folie 33 / 29.08.2006 Geiergrafik: Grundstruktur Grundstruktur import java.awt.*; import java.applet.*; Objekt vom Typ Geier wird definiert und initialisiert. public class Muster extends Applet { Geier testGeier; public void paint(Graphics screen){ testGeier = new Geier(10,10,0,screen); // Hier folgen die Zeichenanweisungen. } } Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Es handelt sich um ein Applet, keine Anwendung. Erzeugung eines Zeichenfelds. Kommentarzeilen werden durch // eingeleitet. Maurer / Folie 34 / 29.08.2006 Geiergrafik: Konstruktor Konstruktor: Erzeugung eines Objekts der Geier-Klasse Geier dreieck = new Geier(screen); Start in (0 ,0) mit Blick nach rechts Geier dreieck = new Geier(300,300,0, screen); Start in (300 ,300) mit Blick nach rechts Geier dreieck = new Geier(300,300,90, screen); Start in (300 ,300) mit Blick nach oben Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 35 / 29.08.2006 Geiergrafik: Methoden 1 Methoden (Werkzeuge) der Klasse Geier: lt(winkel); Dreh Dich um soviel Grad, wie Winkel angibt, nach links. (left turn). {winkel vom Typ double} Z.B.: lt(120); rt(winkel); Dreh Dich um soviel Grad, wie Winkel angibt, nach rechts. (right turn). {winkel vom Typ double } Z.B.: rt(120); fd(strecke); Bewege Dich soviel Schritte in Pfeilrichtung, wie Strecke angibt. (forward) {strecke vom Typ double} Z.B.: fd(200); fd(-200); Bewege Dich entgegen der Pfeilrichtung. pd(); Zeichne bei den folgenden Befehlen Deine Spur auf den Schirm. (Pen down) pu(); Zeichne bei den folgenden Befehlen Deine Spur nicht auf den Schirm. (Pen up) Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 36 / 29.08.2006 Geiergrafik: Methoden 2 setColor(farbe); Zeichne bei den folgenden Befehlen Deine Spur in der Farbe farbe. {farbe vom Typ Color} Die möglichen Farben befinden sich in der Klasse Color (was das heiß später). Jedenfalls werden sie mit Color.Farbname aufgerufen: Color.black Color.blue Color.cyan Color.darkGray Color.gray Color.green Color.lightGray Color.magenta Color.orange Color.pink Color.red Color.white Color.yellow Z. B.: farbeNeu(Color.red); goTo(x,y,winkel); Bewege den Geier an die Position (x,y) mit dem Blick in Richtung winkel ohne eine Spur zu hinterlassen. {x,y vom Typ int} Von der Bildschirmmitte aus x Pixel nach rechts oder links, je nach Vorzeichen, y Pixel nach oben oder unten. writeString (text); Schreibe an der aktuellen GeierPosition x,y den Text text. {Text vom Typ String, x,y vom Typ int } Z. B.: WriteString("Stern"); Der Text muss in Anführungszeichen geschrieben werden! writeStringXY (text,x,y); Schreibe an der Position x,y den Text text. {Text vom Typ String, x,y vom Typ int } Z. B.:WriteStringXY("Stern",20,200); Der Text muss in Anführungszeichen geschrieben werden! Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 37 / 29.08.2006 Java Eclipse ist eine schlichte Entwicklungsumgebung für JavaProgramme. Eine Klasse ist Datenverarbeitung Jahrgangsstufe I Sozialpädagogisches Gymnasium Maurer / Folie 38 / 29.08.2006