Lektion1

Werbung
Programmieren mit JAVA
JAVA?
Um herauszufinden ob diese Programmiersprache
für Sie geeignet ist, zeigen Sie bitte auf das Bild,
welches Ihre gegenwärtigen Interessen am besten
wiederspiegelt!
"Java ist ein Begriff, der für viele verschiedene Dinge steht ...“
Scott McNealy, President Sun Microsystems Inc.
JAVA?
• Zwischen 1990 und 1993 arbeitete James Gosling mit
Anderen bei Sun Microsystems an einem Softwarekonzept
für Steuergeräte und interaktives TV. Dabei entwickelten
sie eine einfache objekt-orientierte Programmiersprache
• Um 1993 erkannte man bei Sun, dass interaktives TV
"OUT" und dafür das Internet "IN" war. Man beschloss die
Plattformunabhängigkeit der Sprache mit dem vollständig in
Java programmierten Webbrowser "HotJava" zu
demonstrieren.
• Der Durchbruch gelang allerdings erst 1995, als Netscape
die Java-Technologie in ihren Browser aufnahm und
weltweit verbreitete.
JAVA?
Was ist das Besondere an Java?
• Plattformunabhängigkeit
• hohe Stabilität und Sicherheit
• hohe Performance in der Laufzeit
Java: eine einfache, objektorientierte, dezentrale, interpretierte, stabil
laufende, sichere, architekturneutrale, portierbare und dynamische
Sprache, die Höchstgeschwindigkeitsanwendungen und Multithreading
unterstützt. (offizielle Definition von Sun)
JAVA?
Wie geht es weiter mit Java?
• Java contra Windows
• kostenlose Entwicklungsumgebung
• sehr viel Unterstützung im Internet
Sequentiell - Objektorientierte
Sprachen
sequentiell
• Ein herkömmliches Programm besteht aus einer Menge von
Unterprogrammen, welche auf verschiedenste Weise Eingabedaten
bearbeiten und verändern.
• Die Daten werden direkt (oder mittels Pointern und globalen
Variablen) von Unterprogramm zu Unterprogramm weitergereicht und
verändert.
• Man kann sich den Ablauf eines sequentiellen Programms als eine
Art Fliessbandarbeit vorstellen.
• Beispiele: C, Cobol, Basic, Pascal
Sequentiell - Objektorientierte
Sprachen
objektorientiert
• Ein objekt-orientiertes Programm besteht aus einer
strukturierten Menge von Objekten. Jedes Objekt stellt eine
abgeschlossene, autonome Einheit von Daten und
Algorithmen dar.
• Man kann sich den Ablauf eines objekt-orientierten
Programm als eine Art Teamwork von Objekten vorstellen.
• Objekt-orientierte Techniken bringen insbesondere Vorteile
für die Implementation von modernen fensterorientierten
Anwendungen.
• Sie erlauben z. B. auf einfache Weise das quasiparallele Verwalten
von verschiedenen gleichzeitig existierenden Objekten auf dem
Bildschirm (Buttons, Fenster, Bilder, ...)
• Beispiele: Java, C++, Smalltalk
Applikationen - Applets
Applikationen
• sind selbständig lauffähige
"stand-alone"
Anwendungsprogramme
• benötigen zu Ausführung eine
auf dem Zielsystem installierte
Virtual Machine.
• haben vollen Zugriff auf das
Filesystem
• sind Objekte aus der
Unterklasse von Object
• brauchen (in Analogie zu C)
eine main-Methode
Applets
• werden von einer .HTML-Datei
aus aufgerufen
• werden von einem WebBrowser ausgeführt
(interpretiert)
• haben sehr beschränkte
Zugriffsrechte ("Sandbox")
• sind Objekte aus der
Unterklasse von Applet
• brauchen eine paint Methode
Beispiel: Applikation - Applet
class HelloJava {
public static void main
(String args[]) {
import java.awt.*;
public class HelloJava
extends java.applet.Applet
{
public void
paint(Graphics g) {
System.out.println("Hello
Java!");
g.drawString("Hello
Java!",5,25);
}
}
}
}
Objektorientierung?
... es gilt als erstes festzuhalten, dass nicht die
Eigenschaften einer Programmiersprache in
der Regel Objektorientiertheit ausmachen,
sondern der Denkansatz für die Lösung
einer zu programmierenden Aufgabe!
Objektorientierung?
... Kennzeichnend ist die Aufhebung der
Trennung von Datenebene und
Anweisungsebene.
...Zusammengehörende Anweisungen und
Daten bilden eine zusammengehörende,
abgeschlossene und eigenständige Einheit.
...Man nennt diese Einheit: „Objekte“
Objekte
Objekte bestehen aus:
• Daten (Instanz-Variablen oder Attributen)
Die Beschreibung eines konkreten Objekts. (z.B.
ein Haushalt-Roboter in Position und Zustand der
Sensoren)
• Programmen (Methoden)
Was kann man alles mit dem Objekt machen?
(move, setPos, getSensors, ...)
• Die Summe aller Attribute und Methoden bilden
zusammen die Eigenschaften des Objekts.
Klassen
• Eine Art Bauplan, der die Eigenschaften und das
Verhalten von Objekten eines bestimmten Typs
beschreibt. Das Programmstück Robot beschreibt z.B. die
Klasse "Robot“ als Maschinen mit Position und Sensoren,
die sich bewegen können.
• Die Attribute der Objekte werden in der Klasse
gesammelt und zur späteren Erzeugung neuer Objekte
verwendet.
• Ein Objekt ist eine Instanz seiner Klasse
• Bsp. Saxophon - Holzblasinstrument Blasinstrument - Musikinstrument Musik erzeugende Dinge - ...
Klassenhierarchie
• Alle Klassen sind hierarchisch aufgebaut. Jede Klasse
erweitert dabei die Eigenschaften (Attribute und
Methoden) ihrer Oberklasse um eine klar abgegrenzte
Funktionalität.
• Ein Objekt verfügt nun also über alle Eigenschaften,
die in seinem eigenen Klassencode und im Code seiner
Oberklassen definiert worden sind.
• Ein wichtiger Spezialfall ist dabei, dass Klassen
Methoden ihrer Oberklassen auch durch eine neue
Implementation ersetzen können. Man sagt dann, eine
Klasse überschreibt die Methode ihrer Oberklasse.
Übung
Computer Klasse
• Verwenden Sie die Begriffe Klasse, Instanz,
Objekt, Attribut und Methode zur Beschreibung
der Grafik!
• Finden Sie Beispiele für eine Superklasse und
mehrere Unter(Sub)klassen
weitere Begriffe der OOP
• Metaklasse, Abstrakte Klasse, Vererbung,
Überschreiben, Polymorphismus, Binden, ...
das nächste Mal...
Literaturhinweise
•
•
•
•
Ralph Steyer "Java 1.2", Markt & Technik, 1998
Arbeitshefte Informatik "Java", Klett, 1999
Java 1.2 Schnellübersicht, Markt & Technik, 1998
O'Niel Annand Valentin Som "Java - plattformunabhängig
programmieren", BHV, 1997
• Misgeld, Gruber "Einstieg in Java", Carl Hanser Verlag,
1996
• java.sun.com; www.javasoft.com; www.gamelan.com
http://www.zitadelle.juel.nw.schule.de/if/java/java.html
http://www.rittershofer.de/info/java/java.htm
http://java.cs.uni-magdeburg.de/dokus/Tutorial/javabuchgk/
http://www.dd.shuttle.de/dd/srz/java/javaprj.htm
Verzweigung
if ... else Anweisungen
• Wie in den meisten Programmiersprachen üblich,
bietet Ihnen die if Anweisung die Möglichkeit,
innerhalb Ihres Programms Entscheidungen zu
treffen.
if (cpuSpeed < 500)
System.out.println(“Are things a bit slow?”);
Verzweigung
if ... else Anweisungen
• Innerhalb der if Anweisung können Sie auch mehr
als eine Test Bedingung angeben, z.B.:
if ((cpuSpeed < 500) && (memorySize < 64))
System.out.println(“What’s the name of this computer? Snail? Or
earthworm?”);
Verzweigung
if ... else Anweisungen
• Mit Hilfe der else Anweisung kann auch auf den
zweiten Fall, dass nämlich die Bedingung nicht
erfüllt ist, reagiert werden.
if (cpuSpeed < 500)
System.out.println(“Perhaps you should bye a faster cpu or overclock
your existing one?”);
else
System.out.println(“Cpu’s can’t never be fast enough but in this case
we turn a blind eye.”);
Verzweigung
if ... else Anweisungen
• Sie können auch mehrere else Klauseln
verwenden:
if (cpuSpeed <= 100)
System.out.println(“Sorry for the delay, but with your cpu it needs
some time to print this message out.”);
else if (cpuSpeed <= 500)
System.out.println(“Ok, let’s rock.”);
else
System.out.println(“Ooups, already finished. What the bloody hell was
that?”);
Verzweigung
Blockanweisungen
• Eine Folge von Anweisungen kann zu einem
Anweisungsblock zusammengefasst werden.
• Dieser Block verhält sich dann wie eine einzelne
Anweisung.
if (day == “Sunday”)
tidyUpComputer ();
if (day == “Sunday”) {
clearTempDirectory();
makeBackup ();
scanDisk();
}
Verzweigung
Der Bedingungsoperator
• Der Bedingungs Operator bietet eine Abkürzung
für mehrere if ... else Anweisungen.
if (modemSpeed <= 28800)
message = “One bit ... and
another one ...”;
else
message = “Just slippy.”;
System.out.println (message);
string message = modemSpeed <=
28800 ?“One bit ... and another one ...”
: “Just slippy.”
System.out.println (message);
Verzweigung
Der Bedingungsoperator
• Die allgemeine Syntax lautet:
test ? true result : false result
Verzweigung
Die switch Anweisung
• Das switch ... case Konstrukt erlaubt eine kürzere
Schreibweise für mehrere if ... else Anweisungen.
if ( colorDepth == 16 )
System.out.println (“EGA Graphics is not supported. You need at least
65536 colors.”);
else (if colorDepth == 256 )
System.out.println (“Standard VGA Graphics is not supported. You
need at least 65536 colors.”);
else (if colorDepth == 65536 )
System.out.println (“Your color depth is just adequate, but true color
would be much better.”);
else (if colorDepth == 16777216 )
System.out.println (“Ok, you fullfill all the color requirements.”);
Verzweigung
Die switch Anweisung
• Dies kann durch folgenden, wesentlich
übersichtlicheren Programmkode ersetzt werden:
switch (colorDepth) {
case 16:
System.out.println (“EGA Graphics is not supported.
You need at least 65536 colors.”); break;
case 256:
System.out.println (“Standard VGA Graphics is not
supported. You need at least 65536 colors.”);
break;
case 65536: System.out.println (“Your color depth is just adequate,
but true color would be much better.”);
break;
case 16777216:
System.out.println (“Ok, you fullfill all the
color requirements.”);
}
Verzweigung
Die switch Anweisung
• Beachten Sie, dass sich am Ende einer jeden case
Klausel eine break Anweisung befindet. Werden
die break Anweisungen nicht eingefügt und die
Farbtiefe beträgt 16, dann werden alle vier
Meldungen ausgegeben. Die break Anweisung
stellt sicher, dass das Programm die switch
Anweisung verlässt, wenn eine erfüllte Bedingung
gefunden wurde
Verzweigung
Die switch Anweisung
• Sie können am Ende (vor der schließenden }
Klammer) noch eine default Klausel angeben.
Diese wird ausgeführt, wenn keine der case
Bedingungen erfüllt ist:
default: System.out.println (“Unknown color depth”);
Schleifen
• Schleifen erlauben es, einen Block mit
Programmkode mehrere Male zu wiederholen. In
Java gibt es drei Arten von Schleifen:
 while Schleifen
 do ... while Schleifen
 for Schleifen
while Schleifen
• while Schleifen bestehen aus zwei Teilen, dem
Schleifenkörper und einer vorangestellten
Bedingung. Solange die Bedingung erfüllt ist,
wird der Schleifenkörper ausgeführt.
count = 0;
while (count < 10) {
System.out.println (“count is ” + count);
count ++;
}
while Schleifen
• Der while Ausdruck kann auch mehrere
Testbedingungen enthalten, wie z.B.:
count = 0;
theend = false;
while ((count < 10) && (theend == false)) {
System.out.println (“count is ” + count);
count ++;
theend = instream.read();
// read a character
}
do ... while Schleifen
• Dem Schleifenkörper wird die do Anweisung und
eine öffnende Klammer vorangestellt. Die while
Anweisung folgt der schließenden Klammer am
Ende des Anweisungsblocks.
count = 0;
theend = false;
do {
System.out.println (“count is ” + count);
count ++;
theend = instream.read();
// read a character
} while ((count < 10) && (theend == false))
for Schleifen
• Die for Schleifen bieten einen einfachen Weg, das
Erhöhen bzw. Verringern eines Wertes zu
realisieren. Die for Schleife besteht aus drei in
runden Klammern eingeschlossenen
Komponenten, gefolgt vom Schleifenkörper.
for (count = 0; count < 10; count ++) {
System.out.println (“count is ” + count);
}
Schleifen verlassen
• Unter Benutzung der Anweisungen break und
continue können Sie eine Schleife verlassen, bevor
sie vollständig durchlaufen wurde (z.B. wenn ein
Fehler aufgetreten ist und es keine Möglichkeit
der Fortsetzung gibt).
count = 0;
do {
newchar = instream.read ();
// read a character
if (newchar == ‚\n‘) break;
System.out.println (“count is ” + count);
count ++;
} while (count < 10)
Schleifen verlassen
• Wird anstatt der break Anweisung continue
verwendet, so ignoriert das Programm den Rest
der Anweisungen im Schleifenkörper und geht
sofort wieder an den Beginn der Schleife.
endOfLoop:
for (c1=0; c1<10; c1++) {
for (c2=0; c2<50; c2++) {
newchar = instream.read ();
// read a character
if (newchar == ‚\0‘) break enfOfLoop;
System.out.println (newchar); }
System.out.println (“\n”); }
System.out.println (“The end”);
Herunterladen