Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Programmieren mit JAVA

Ähnliche Präsentationen


Präsentation zum Thema: "Programmieren mit JAVA"—  Präsentation transkript:

1 Programmieren mit JAVA

2 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.

3 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.

4 JAVA? Was ist das Besondere an Java? Plattformunabhängigkeit
hohe Stabilität und Sicherheit hohe Performance in der Laufzeit Java-Quelltexte (die .java-Dateien) werden zunächst in plattformunabhängigen Byte-Code übersetzt (die .class-Dateien), der dann auf einer Virtual Machine interpretiert wird. Die Virtual Machine ist ein Programm, welches auf der Zielplattform installiert ist und den Java-Byte-Code Schritt für Schritt ausführt. Erklärtes Designziel der Java-Entwickler ist Sicherheit und Stabilität. Java ermöglicht es, über das World Wide Web geladene Programme (Applets) in einer abgeschlossenen Umgebung (der sogenannten "Sandbox") laufen zu lassen, wo sie keinerlei Schaden anrichten können. Wesentliche Schutzfaktoren: - keine Pointer - keinerlei Zugriff auf physische oder virtuelle Speicheradressen - restriktiver Zugriff auf das lokale Dateisystem Java kann durchaus als "multi-funktionale" Programmiersprache eingesetzt werden. Highlights sind dabei besonders die standardmässig mitgelieferten Klassenbibliotheken: Bibliotheken für fensterorientierte Benutzeroberflächen Unterstützung zur Decodierung vom Bildformaten (GIF/JPEG) und von Soundfiles Unterstützung von Netzwerk- und Internet-Diensten Datenbank-Anbindungen Die "Just-in-time" Compiler Technologie wird in Zukunft eine massive Performance Steigerung bis zur Geschwindigkeit von compilierten C-Programmen ermöglichen. 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)

5 JAVA? Wie geht es weiter mit Java? Java contra Windows
kostenlose Entwicklungsumgebung sehr viel Unterstützung im Internet Java ist zum de facto Standard für Web-basierte Software geworden. Dieser Herrschaftsanspruch von Sun's Programmiersprache gerät aber verständlicherweise von Microsoft unter Beschuss. Für Bill Gates, Präsident von Microsoft, ist Java zwar eine momentan wichtige Programmiersprache, aber auch nur eine Programmiersprache. Scott McNealy, Präsident von Sun, dagegen versteht Java als wesentlich mehr. Er und seine Partner, wie etwa Netscape, vertreten die Meinung dass die Java Virtual Machine quasi ein Mini-Betriebssystem darstelle und damit Entwickler davon befreie, Software für ein konkretes Betriebssystem entwicklen zu müssen. Sun stellt das JDK mit Compiler, Virtual Machine und umfassenden Klassenbibliotheken auf seiner Website kostenlos zur Verfügung. Als professionellerer Programmierer ist man allerdings mit einem der kommerziellen Produkte, wie etwa Symantec's Visual Café Pro oder Microsoft's Visual J++ besser bedient und geniesst den gewohnten Komfort moderner Entwicklungswerkzeuge.

6 Sequentiell - Objektorientierte Sprachen
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

7 Sequentiell - Objektorientierte Sprachen
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

8 Applikationen - Applets
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 Web-Browser ausgeführt (interpretiert) haben sehr beschränkte Zugriffsrechte ("Sandbox") sind Objekte aus der Unterklasse von Applet brauchen eine paint Methode

9 Beispiel: Applikation - Applet
class HelloJava { public static void main (String args[]) { System.out.println("Hello Java!"); } import java.awt.*; public class HelloJava extends java.applet.Applet { public void paint(Graphics g) { g.drawString("Hello Java!",5,25); } } Definition einer neuen Klasse mit Namen HelloJava Aufruf der main-Methode arg ist der Name eines Zeichenkettenarrays, das eine Argumentenliste enthält und Java immer zur Verfügung steht. Innerhalb der main-Methode können Argumente beliebig behandelt werden. (Argumente immer als Zeichenkette übergeben, Argumentindex in Java beginnt im Gegensatz zu C mit 0!) Applet komplizierter, Java Anwendung benötigt immer nur eine main-Methode, Applets benötigen zwar keine main-Methode, dafür bei gleicher Funktionalität mindestens vier andere Methoden: - init-Methode public void init( ) {...} - start-Methode public void start( ) {...} - stop-Methode public void stop( ) {...} und die - destroy-Methode public void destroy( ) {...} diese Methoden sind in unserem Applet noch nicht direkt implementiert. Das Applet erbt diese Methoden von der Mutter aller Applets mit der Syntax extends java.applet.Applet Grund für die Kopliziertheit ist, das ein Applet in einem Container abläuft und mit diesem kooperieren muss, Es muss also die Ausgabemöglichkeiten des Cont. nutzen. Deshalb ist das Applet als Instanz einer Klasse erstellt, dessen Funktionen wir nutzen (malen statt schreiben)

10 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!

11 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“

12 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.

13 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 - ...

14 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.

15 Übung 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

16 weitere Begriffe der OOP
Metaklasse, Abstrakte Klasse, Vererbung, Überschreiben, Polymorphismus, Binden, ... das nächste Mal...

17 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;

18 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?”);

19 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?”);

20 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.”);

21 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?”);

22 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(); }

23 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 <= ?“One bit ... and another one ...” : “Just slippy.” System.out.println (message);

24 Verzweigung Der Bedingungsoperator
Die allgemeine Syntax lautet: test ? true result : false result

25 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 colors.”); else (if colorDepth == 256 ) System.out.println (“Standard VGA Graphics is not supported. You need at least colors.”); else (if colorDepth == ) System.out.println (“Your color depth is just adequate, but true color would be much better.”); else (if colorDepth == ) System.out.println (“Ok, you fullfill all the color requirements.”);

26 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 colors.”); break; case 256: System.out.println (“Standard VGA Graphics is not supported. You need at least colors.”); break; case 65536: System.out.println (“Your color depth is just adequate, but true color would be much better.”); break; case : System.out.println (“Ok, you fullfill all the color requirements.”); }

27 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

28 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”);

29 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

30 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 ++; }

31 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 }

32 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))

33 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); }

34 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)

35 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 ppt "Programmieren mit JAVA"

Ähnliche Präsentationen


Google-Anzeigen