Inf_Java

Werbung
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
Herunterladen