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