Upload
jyothi-malapati-malapati
View
214
Download
1
Tags:
Embed Size (px)
DESCRIPTION
April2002 © 2002 MobilCom Multimedia GmbH All rights reserved. No part of this document may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photography, recording, or any information storage and retrieval system, without permission from MobilCom Multimedia GmbH. Inhalte Seite 2©MobilComMultimediaGmbH09.07.2002 Programmierer sind wie Köche Was istProgrammierung? Programme sind Kochrezepte Seite 3©MobilComMultimediaGmbH09.07.2002
Citation preview
© 2002 MobilCom Multimedia GmbHAll rights reserved. No part of this document may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photography, recording, or any information storage and retrieval system, without permission from MobilCom Multimedia GmbH.
Java for Newbies
April 2002
Seite 2© MobilCom Multimedia GmbH 09.07.2002
Inhalte� Historisches zu Computersprachen� Was ist ein Compiler/Interpreter?� Java Virtual Machine� Variablentypen � Simple Kontrollstrukturen ( for, while,if, switch)� Ausnahmebehandlung� Was heißt Objektorientierte (OO) Programmierung?� Klassenkonzept� Vererbung� Polymorphie� Was ist eine GUI ( Vergleich AWT und Swing)� Zugriff auf Dateien ( lesen und schreiben)� Schnittstelle zur Datenbank, JDBC Treiber� Threads
Seite 3© MobilCom Multimedia GmbH 09.07.2002
Was ist Programmierung?
Programmierer sind wie Köche
Programme sind Kochrezepte
Ausführen bedeutet, das Rezept zu testen
Seite 4© MobilCom Multimedia GmbH 09.07.2002
Was ist ein Programm?�Die in der eigenen Sprache aufgesetzten
Befehlsfolgen nennt man auch Algorithmus.�Die in einer Programmiersprache formulierte
Version dieser Algorithmen wird Quellcode oder Quelltext genannt.
�Erst der vom Compiler (Übersetzer) erzeugte Maschinencode heißt dann (ausführbares) Programm.
�Oftmals wird aber in allen drei Fällen einfach nurvom Programm gesprochen.
Seite 5© MobilCom Multimedia GmbH 09.07.2002
Wie werden Programme erstellt?�Problem, Aufgabe soll mittels Rechner gelöst
werden�Erstellung des Algorithmus�Quellcode: Formulierung der Algorithmen in
Programmiersprache�Übersetzung (Compilierung) des Quellcodes in
Maschinensprache�Ausführbares Programm in Hauptspeicher laden
und ausführen
Seite 6© MobilCom Multimedia GmbH 09.07.2002
Von Compilern und InterpreternZwei Möglichkeiten, ein Programm zu übersetzen:
� Ein in Form einer Programmiersprache geschriebenes Programm (Quellcode) wird als Ganzes übersetzt, so dassdanach eine ausführbare Programmdatei entsteht. Diese Art der Übersetzung nennt man Compilieren. Das Programm dazu heißt Compiler.
� Oder direkt bei der Ausführung des Programms werden Zeilefür Zeile Quelltext eingelesen, übersetzt und ausgeführt. Dieses spezielle Programm heißt Interpreter; es liegt keine ausführbare Datei vor, nur der Quellcode.
Seite 7© MobilCom Multimedia GmbH 09.07.2002
Wo steht Java?� Nachteiler der Interpreter gegenüber Compilern
� Die Programme müssen im Quelltext verkauft werden und damit können Algorithmen und Teile des Programms unautorisiert genutztwerden.
� Da die Erzeugung des Maschinencodes erst während der Laufzeit geschieht, sind diese Programme wesentlich langsamer als kompilierte.
� Java ist beides � JAVAC ist er Compiler – er übersetzt nicht in Maschinencode
sondern in Bytecode (.class).� JAVA, wie die Sprache selbst, heißt der Interpreter, mit dem das
Programm (Bytecode in Maschinencode) ausgeführt wird.
Seite 8© MobilCom Multimedia GmbH 09.07.2002
Woher nehmen?�Java wurde von Sun entwickelt und dort kann man sich
den Compiler besorgen! Der JDK kann frei aus dem Internet geladen werden www.java.sun.com/products
�Es gibt komplette Entwicklungsumgebungen (IDE)�Visual J++�Borland Java-Addon�JBuilder�Visual Cafe�Visual Age�Forte
Seite 9© MobilCom Multimedia GmbH 09.07.2002
Java Virtual Machine�Zwischen dem Prozessor und dem vom Compiler
erzeugten Byte Code steht die VM�Byte code Verifier�Class Loaders�Garbage Collection�Security Manager
Seite 10© MobilCom Multimedia GmbH 09.07.2002
Java Virtual Machine
Zusammenhang zwischen VM, realen Rechnern und Code
Seite 11© MobilCom Multimedia GmbH 09.07.2002
Die erste Java-Applikation
UltimateQuestion// Unser erstes Programm: Dateiname UltimateQuestion.javaclass UltimateQuestion{
public static void main( String args[]){
String secondLine = “life, the universe and everything?“;System.out.println();System.out.println( “What is the answer to “);System.out.println(secondLine);
} // End main} // end ultimateQuestion
Seite 12© MobilCom Multimedia GmbH 09.07.2002
Die erste Java-Applikation in Bytecode
UltimateQuestion
Seite 13© MobilCom Multimedia GmbH 09.07.2002
Compiler und Interpreter Aufruf
Aufruf mit der Kommandozeile
Seite 14© MobilCom Multimedia GmbH 09.07.2002
Pfade setzen
BenutzervariablenSystemvariablen
Diese Pfade werden von den entsprechenden Programmen benutztBei einer Entwicklungsumgebung können sie auch dort gesetzt werden
Seite 15© MobilCom Multimedia GmbH 09.07.2002
Analyse 1- Kommentare
//***************************************************************************/*** Main application of the MCBS for customer service sectors.* @author achim* @author last modification $Author$* @version $Revision$ of $Date$*/
public class Service extends McGuiApp{
// Class Initializationstatic{
McApp.addResource((McResource) ResourceBundle.getBundle("mcbs.resource.McServiceResource"));McApp.addResource((McResource) ResourceBundle.getBundle("mcbs.resource.McStockResource"));
...}
Kommentare dienen als Gedächtnisstütze des Programmierers
Seite 16© MobilCom Multimedia GmbH 09.07.2002
Analyse 1- Kommentare 2Als Java Doc sieht das so aus
Seite 17© MobilCom Multimedia GmbH 09.07.2002
Analyse 2 – Konventionen 1
// Unser erstes Programm: Dateiname UltimateQuestion.javaclass UltimateQuestion{ ...} // end ultimateQuestion
� Java ist streng typisiert, d. h. besteht nur aus Klassen� class ... Bezeichnet diejenigen Objekte, die in Java interagieren� Eine Klasse hat einen Namen – hier UltimateQuestion� Klassen Anfang und Ende sind mir { } gekennzeichnet� Jedes Programm muss eine Klasse sein
� Namenskonvention� Erlaubt sind als Bezeichner alle einfachen Buchstaben, alle Zahlen,
Unterstriche und $ - allerdings KEINE Schlüsselwörter� Java ist case-sensitive
Seite 18© MobilCom Multimedia GmbH 09.07.2002
Analyse 3 – Konventionen 2
�Semikolon� Jede Kommandozeile schließt mit einem Semikolon ; ab
�Klammerung� Geschweifte Klammer { } bei funktionalen Blöcken wie
Klassen, Methoden, Kontrollstrukturen� Eckige Klammer [ ] bei Arrays� Runde Klammer ( ) bei Parameterlisten und Bedingungen
von Kontrollstrukturen
Seite 19© MobilCom Multimedia GmbH 09.07.2002
Analyse 4 – Die Methode main
public class UltimateQuestion{
public static void main( String args[]){
...} // End main
} // end ultimateQuestion
� Die Methode Main – der Beginn einer jeden Java-Applikation� Der Funktionskopf dieser Funktion ist fest vorgegeben� Jedes Javaprogramm beginnt mit einer Hauptklasse, in der die
Methode main() definiert wird� Die Ausführung der Applikation beginnt mit der ersten Anweisung im
Funktionsrumpf von main()
Seite 20© MobilCom Multimedia GmbH 09.07.2002
Analyse 5 - Datentypen und Variablen 1
public static void main( String args[]){
String secondLine = “life, the universe and everything?“;System.out.println();System.out.println( “What is the answer to “);System.out.println(secondLine);
} // End main
� Datentypen und Variablen� Datentypen geben an, von welcher Art ein Objekt ist
�Hier ist das Objekt secondLine vom Typ String� Variablen müssen vor ihrer Verwendung deklariert und initialisiert werden
�Typ Bezeichner;�Bezeichner = Wert;
� Das geht auch zusammen: Typ Bezeichner = Wert;
Seite 21© MobilCom Multimedia GmbH 09.07.2002
Variablen �Variablen
� Instanzvariablen�Werden zusammen mit einer Instanz angelegt
�Klassenvariablen�Existieren nur einmal und unabhängig von Objekten - static
�Lokale Variablen�Nur existent innerhalb des Blockes, in dem sie definiert sind
� Instanzen�Enthalten eine Referenz auf ein Klassenobjekt
Seite 22© MobilCom Multimedia GmbH 09.07.2002
Datentypen �Datentypen
�Einfache oder Build-In Datentypen, die bereits in der Sprache vorhanden sind
int, double, float, char, boolean, byte, long, short
�Referenz- oder Klassentypen�Klassenbibliothek von Java�Selbstgeschriebene Klassen
Seite 23© MobilCom Multimedia GmbH 09.07.2002
Build-In Datentypen �Bedeutung und Wertebereich
�boolean false oder true�char Zeichen im Unicode 16 Bit�byte Ganzzahl 8 Bit�short Ganzzahl 16 Bit� int Ganzzahl 32 Bit� long Ganzzahl 64 Bit� float Gleitkommazahl 32 Bit�double Gleitkommazahl 64 Bit
Seite 24© MobilCom Multimedia GmbH 09.07.2002
Implizite und explizite Typumwandlung� Implizite Typumwandlung
�Einfache Datentypen (build-in) werden von Java implizit umgewandelt, wenn Ausdrücke mit verschiedenen Datentypen vorhanden sind.
�Explizite Typumwandlung – cast�Um einen Datentyp explizit in einen anderen
umzuwandeln, das heißt eine Typkonvertierung zu erzwingen, muss die Variable gecastet werden.
�Das geht mit allen Datentypen.�Bei falschem Cast wird eine ClassCastException
geworfen.
Seite 25© MobilCom Multimedia GmbH 09.07.2002
Implizite Typumwandlung�Umwandlungsregeln
� byte nach short, int, long, float, double� char nach int, long, float, double� short nach int, long, float, double� int nach long, float, double� long nach float, double� float nach double� class A nach class (interface)B, wenn A von B abgeleitet� interf. A nach interface B, wenn A von B abgeleitet� null nach belieb. Klassen-, Schnittstellen-, Arraytyp� A[] nach B[], wenn A von B abgeleitet
Seite 26© MobilCom Multimedia GmbH 09.07.2002
Explizite Typumwandlung - Casting
Erzwungene TypkonvertierungBezeichner = (Konvertierungs-Datentyp) Bezeichner;
Größere Datentypen können auf diese Weise in kleinere umgewandelt werden, oft ohne Compilerwarnung
Casting von Basisklassen in abgeleitete Klasse nur dann, wenn man sich über den Typ des Objektes sicher ist
Seite 27© MobilCom Multimedia GmbH 09.07.2002
Kontrollstrukturen�Kontrollstrukturen sind Abfragen und Schleifen�Abfragen oder Selektoren
�Der switch-case Block�Der if-else Block
�Schleifen�Die for-Schleife�Die while-Schleife�Die do-while-Schleife
Seite 28© MobilCom Multimedia GmbH 09.07.2002
Kontrollstrukturen - Abfragen
Abfragen oder Selektoren dienen dazu, den Programmfluss in verschiedene Richtungen zu verzweigen, je nach Ausgangspunkt.Dazu werden immer Bedingungen auf ihren Wahrheitsgehalt oder ihren Wert geprüft.
Seite 29© MobilCom Multimedia GmbH 09.07.2002
Kontrollstrukturen – Abfragen 1� Der if-else Block
if ( boolscher Ausdruck){// Anweisungen;}else{// Anweisungen;}
� Die Logik dahinterfalls der boolsche Ausdruck wahr ist, wird der if Zweig durchlaufen, ist er falsch, der else Zweig
Seite 30© MobilCom Multimedia GmbH 09.07.2002
Kontrollstrukturen – Abfragen 2� Der switch-case Block
switch ( Variable){case Wert1: Anweisung1; break;case Wert2: Anweisung2; break;...case Wertn: Anweisungn; break;default: Defaultanweisung; break;}
� Die Logik dahinter� Je nach Wert der Variablen wird in eine case Anweisung gesprungen� Stimmt Wert mit keinem case überein, wird default ausgeführt� Ohne break werden die Anweisungen hintereinander ausgeführt
Seite 31© MobilCom Multimedia GmbH 09.07.2002
Kontrollstrukturen - Schleifen
Schleifen dienen dazu, immer wiederkehrende Operationen auszuführen, bis eine gewisse Abbruchsbedingung erfüllt ist.Vorsicht! Hier kann es zu Endlos-Schleifen kommen, wenn die Abbruchbedingung niemals erfüllt werden kann.
Seite 32© MobilCom Multimedia GmbH 09.07.2002
Kontrollstrukturen - Schleifen 1Kopfgesteuert� Die for Schleife
for(Initialisierung;boolscher Ausdruck;Reinitialisierung) {
// Anweisungen;}
� Die Logik dahinter� Initialisierung� Boolschen Ausdruck auswerten� Wenn wahr, dann Schleifenblock durchlaufen, sonst letzter Punkt���
Seite 33© MobilCom Multimedia GmbH 09.07.2002
Kontrollstrukturen - Schleifen 2
Kopfgesteuert� Die while Schleife
while(boolscher Ausdruck) {// Anweisungen;
}� Die Logik dahinter
� Solange der boolsche Ausdruck wahr ist, wird der Schleifenblock durchlaufen.
Seite 34© MobilCom Multimedia GmbH 09.07.2002
Kontrollstrukturen - Schleifen 3
Fußgesteuert� Die do-while Schleife
do{// Anweisungen;}
while ( boolscher Ausdruck)� Die Logik dahinter
� Zuerst wird die Anweisung ausgeführt, dann erst der Wahrheitswert des boolschen Ausdrucks überprüft.
Seite 35© MobilCom Multimedia GmbH 09.07.2002
Klassenkonzept
Einführung des Klassenkonzeptes�Eine Klasse ist ein Bauplan für ein Objekt. Inhalte
sind:�Die Daten des Objektes�Die Methoden, die mit diesen Daten arbeiten�Konstanten� Innere Klassen
�Schlüsselwort ist class
Seite 36© MobilCom Multimedia GmbH 09.07.2002
Klassenfunktionen - Methoden
Die Methoden einer Klasse geben ihre Aktionen an:
�Methoden haben einen Rückgabewert. Das Schlüsselwort heißt return.
�Methoden haben eine Parameterliste. Es kann mehrere Methoden desselben Namens geben, die sich allerdings in ihrer Parameterliste unterscheiden müssen. Das nennt man Überladung.
Seite 37© MobilCom Multimedia GmbH 09.07.2002
Klassenkonzept - Konstruktor
Der Konstruktor initialisiert die Datenelemente einer Klasse
� Jeder Klasse braucht einen Konstruktor� Standardkonstruktor wird automatisch zugewiesen, falls kein
eigener vorhanden� Beliebig viele Konstruktoren (Überladung)� Kein Rückgabewert: Der Rückgabewert ist das Objekt der Klasse
selbst. Schlüsselwort this� Konstruktoren heißen wie die Klasse selbst� Aufruf nur bei der Instanzbildung� Konstruktoren können sich gegenseitig aufrufen
Seite 38© MobilCom Multimedia GmbH 09.07.2002
Klassenkonzept – innere Klassen
Klassen können andere Klassen als innere Klassen enthalten
� Innere Klassen sind nur innerhalb der Klasse sichtbar, in der sie definiert sind.
�Ohne Namen - anonyme Klassen.�Datenkapselung und modulares Programmieren.
Seite 39© MobilCom Multimedia GmbH 09.07.2002
Instanzen
Die Objekte einer Klasse heißen Instanzen�Schlüsselwort zur Erstellung einer Instanz ist new
Datentyp Bezeichner = new Klassenname;�Aufruf des zuständigen Konstruktors dieser
Klasse�Zugriff auf Methoden (oder Variablen) immer über
diese Instanz�Bezeichner.Methode(Parameterliste);
Seite 40© MobilCom Multimedia GmbH 09.07.2002
Referenzen
� Instanzen werden immer über Referenzen angesprochen, Variablen einfacher Datentypen nie.
�Referenzen sind nicht an ein Objekt gebunden.�Wert für die „unmögliche“ Referenz (null)�Mit final wird die Referenz konstant, nicht das
Objekt, auf das sie verweist.�Java kennt keine Zeiger.
Seite 41© MobilCom Multimedia GmbH 09.07.2002
Referenzen verweisen auf Instanzen
Einfache Datentypen sind keine Referenzen
Seite 42© MobilCom Multimedia GmbH 09.07.2002
Arrays�Java definiert einen Array-Datentyp für Klassen
und einfache Typen.�Arrays sind dadurch in das Objektkonzept
eingeordnet.�Es existieren mehrdimensionale Arrays.�Arraygrenzen beginnen mit dem Index 0.
Seite 43© MobilCom Multimedia GmbH 09.07.2002
Arrays�Definition eines Array
�Datentyp[] Bezeichner = new Klassenname[Ganzzahl]� Ist der Datentyp eines Arrays elementar, dann
enthält das Array direkt die Werte, ansonsten nur Referenzen(null). Die Objekte müssen erst noch zugewiesen werden.
�Mehrdimensionale Arrays�Datentyp [] []...Name = new Klassenname [n] [m] ...
Seite 44© MobilCom Multimedia GmbH 09.07.2002
Vererbung
Vererbung erweitert die Benutzbarkeit einer Klasse� Die Mutter aller Objekte: java.lang.object
� Alle Klassen, die nicht explizit von einer anderen Klasse abgeleitet sind, sind automatisch von object abgeleitet
� Das Schlüsselwort extends (erweitert) gibt uns an, von welcher Klasse abgeleitet wird:
class Fenster extends Frame� Der Konstruktor der Basisklasse wird mir super versorgt.
Seite 45© MobilCom Multimedia GmbH 09.07.2002
Vererbung - Polymorphie
Anpassung abgeleiteter Klassen durch Überschreibung geerbter Methoden:
�Der Aufruf einer überschriebene Methode der Basisklasse erfolgt mit dem Schlüsselwort super
�Effekt: gleichlautende Operationen können auf verschiedene Objekte angewandt werden
Seite 46© MobilCom Multimedia GmbH 09.07.2002
Polymorphismus
Der Begriff steht für die Überschreibung (manchmal auch Überladung) von Methoden
�Überladung�Eine Funktion mit demselben Namen, aber
unterschiedlicher Parameterliste.�Überschreibung
�Eine Funktion, die in der Basisklasse anders implementiert ist als in der abgeleiteten Klasse.
Seite 47© MobilCom Multimedia GmbH 09.07.2002
Objektorientierung 1� Kontinuierliche Steigerung der Abstraktion
� Bitmuster -> Makrobefehl� Makro -> Prozeduren� Prozeduren -> abstrakte Datentypen� Abstrakte Datentypen -> Objekte
� Vorteile� Wiederverwendbarkeit bereits implementierten Codes� Schneller Entwicklung von Datentypen durch Vererbung und
Polymorphismus� Geringere Fehleranfälligkeit durch Kapselung� Bessere Lesbarkeit der Programme
Seite 48© MobilCom Multimedia GmbH 09.07.2002
Objektorientierung 2
�Wie schon erwähnt ist Java keine prozedurale, sondern eine objektorientierte Sprache. Was bedeutet das?� In einer prozeduralen Sprache definiert man Variablen und
setzt Anweisungen auf sie ab. Diese Anweisungen kann man auch in Funktionen bündeln. Dabei sind Daten (in Variablen) und Funktionen, die mit den Daten arbeiten, völlig unabhängig voneinander.
� Bei OO Sprachen geht man davon aus, dass bestimmte Daten und die Funktionen, die mit diesen Daten arbeiten, zusammengehören. Eine solche Einheit von logisch zusammenhängenden Daten und Funktionen bildet ein Objekt.
Seite 49© MobilCom Multimedia GmbH 09.07.2002
Interfaces – abstrakte Klassen
Ein Interface ist die Antwort von Java auf Mehrfachvererbung
� Interfaces sind Klassen, die nur aus leeren Methoden und Konstanten bestehen.
�Das Schlüsselwort, um ein Interface zu erzeugen, heißt interface (die Analogie zu class).
�Das Schlüsselwort, um von einem Interface zu erben, heißt implements (die Analogie zu extends).
Seite 50© MobilCom Multimedia GmbH 09.07.2002
Abstrakte Klassen
Abstrakte Klassen dienen als Verzweigungspunkte in der Klassenhierarchie
�Schlüsselwort zur Erstellung heißt abstractabstract class Name
� Ist eine Methode einer Klasse abstract, dann muss es auch die Klasse sein.
�Nur Referenzen, keine Instanzen möglich.
Seite 51© MobilCom Multimedia GmbH 09.07.2002
Finale Klassen
Finale Klassen können nicht für andere Klassen als Basisklassen dienen
�Schlüsselwort zur Erstellung heißt finalfinal class Name
�Finale Methode einer Klasse können in davon abgeleiteten Klassen nicht überschrieben werden.
�Finale Attribute entsprechen Konstanten.
Seite 52© MobilCom Multimedia GmbH 09.07.2002
Packages
Gruppierung zusammengehörender Klassen
�Schlüsselwort zur Erstellung heißt packagepackage Packagename;
� Importieren - import - muss man alle packages außer java.lang.*
import Packagename.MeineKlasse;
Seite 53© MobilCom Multimedia GmbH 09.07.2002
Zugriffsmodifizierer
Verschiedene Zugriffsspezifizierer, die der Kapselung, also dem Zugriff innerhalb und außerhalb der Klasse dienen:
� Private� Nur sichtbar und zugreifbar innerhalb der Klasse
� Protected� Sichtbar und zugreifbar innerhalb der Klasse und abgeleiteter Klassen
� Ohne Angabe oder „friendly“� Innerhalb eines Pakets überall sichtbar, von außerhalb wie private
� Public� Überall sichtbar und zugreifbar
Seite 54© MobilCom Multimedia GmbH 09.07.2002
Ausnahmebehandlung
Fehler und Ausnahmen innerhalb eines Programmes�Fehlerklassen müssen von Throwable abgleitet
werden.�Fehler werden mittels throw geworfen.�Mit dem try–catch–Block werden sie aufgefangen.�Finally wird immer durchlaufen, egal ob was
gefangen wurde, ist allerdings optional.
Seite 55© MobilCom Multimedia GmbH 09.07.2002
ExceptionklassenHierarchie der vorgegebenen Javaklassen
Seite 56© MobilCom Multimedia GmbH 09.07.2002
Ein- und Ausgabeströme
Unter Streams versteht man einen Datenfluss zwischen Sender und Empfänger:
� Je nach Art von Sender/Empfänger gibt es entsprechende Streams.
� Datenfluss von Tastatur ist ein Eingabestrom System.in.� Datenfluss an den Bildschirm ein Ausgabestrom System.out.� Es gibt spezielle Javaklassen, sogenannte Reader und Writer,
mit denen man nicht nur von Tastatur oder Bildschirm abhängig ist.
Seite 57© MobilCom Multimedia GmbH 09.07.2002
Dateiansprache (1/1)
Lesen aus einer Datei� Inhalte können direkt über eine FileReader Instanz
eingelesen werden.�Oder wie eine Tastatureingabe, also mit einem
Eingabestrom.� Immer in einem try-catch Block behandeln, weil die
Datei ja nicht existent sein könnte (FileNotFoundExeption).
Seite 58© MobilCom Multimedia GmbH 09.07.2002
Dateiansprache (2/2)
Schreiben in eine Datei�File-Objekt für eine Datei einrichten.�Ausgabestrom für das File-Objekt erzeugen.�PrintWriter- Objekt für den Ausgabestrom
erzeugen.�Analog zu Lesen.
Seite 59© MobilCom Multimedia GmbH 09.07.2002
GUI – Graphical User Interface (1/3)
Zusammenfassung aller Klassen zur Oberflächenerstellung
�Package: java.awt.* (abstract window toolkit)
�Enthält alle Klassen, um Benutzerschnitt-stellen anzufertigen und Bilder und Graphiken zu zeichnen
Seite 60© MobilCom Multimedia GmbH 09.07.2002
GUI- Eventsteuerung (2/3)
Zusammenfassung aller Klassen zur Eventsteuerung
�Package: java.awt.event
�Adapterklassen vs.Interfaces
Seite 61© MobilCom Multimedia GmbH 09.07.2002
GUI – Swing (3/3)
Swing ist eine Erweiterung und Neuent-wicklung von Klassen zur Oberflächen-erstellung
�Package: javax.swing.*�Enthält wie AWT Klassen, um Benutzerschnittstellen
anzufertigen und Bilder und Graphiken zu zeichnen, allerdings komfortabler und logischer.
�Look and Feel: Java kann auf allen Plattformen gleich aussehen (Metal).
Seite 62© MobilCom Multimedia GmbH 09.07.2002
GUI – Klassenbibliothek AWT
Zusammenfassung von Layouts, Farben, Oberflächenelemente, Toolkit etc.
�Im Package: java.awt.* enthaltene Klassen�Window�Frame�Button�Menue�Panel�Label
Seite 63© MobilCom Multimedia GmbH 09.07.2002
GUI – Klassenbibliothek EventEreignissteuerung in Benutzeroberflächen
�Im Package: java.awt.event.* stehen die Adapterklassen und die Listenerinterfaces und die Events� Interface ActionListener� Interface MouseListener� Interface WindowListener�WindowAdapter�MouseEvent
Seite 64© MobilCom Multimedia GmbH 09.07.2002
GUI - Layoutmanager
Eine Vorschrift, um zur Laufzeit Dimensionierung und Position von Containerobjekten zu bestimmen:
� Alle Layoutklassen sind von direkt von Objekt abgeleitet� FlowLayout: Standard für Panels und Applets� BorderLayout: Standard für Dialoge und Frames� GridLayout: Einteilung in Zeilen und Spalten� GridBagLayout: verschiedene Größen vertikal und
horizontal� CardLayout: verschiedene Bedienelemente zu
unterschiedlichen Zeiten
Seite 65© MobilCom Multimedia GmbH 09.07.2002
GUI - Windowklassen
Die von Window abgeleiteten Klassen erzeugen Fenster mit Titelleiste und Rahmen und WindowsEvents
Klassenhierarchie
Seite 66© MobilCom Multimedia GmbH 09.07.2002
Applets
� Die Methode init() - der Beginn jedes Applets – ersetzt die Methode main() in den Applikationen.
� Importieren muß man java.applet.* oder javax.swing.JApplet.*
� Sind keine eigenständigen Programme, können also auch nicht mit dem Interpreter aufgerufen werden.
� Stattdessen in HTML-Datei referenzieren und im Applet-Viewer oder einen Web-Browser ausführen.
Seite 67© MobilCom Multimedia GmbH 09.07.2002
Applets – HTML Dokument
Seite 68© MobilCom Multimedia GmbH 09.07.2002
Appletviewer
Seite 69© MobilCom Multimedia GmbH 09.07.2002
Datenbankschnittstelle (1/6)
Die Datenbankschnittstelle heißt JDBC (Java DataBase Connectivity)
� Java stellt keine Datenbank zur Verfügung, sondern benutzt Schnittstellen zwischen Programm und DB.
�Es ist ein Treiber nötig, der die JDBC-Befehle versteht, übersetzt und an die Datenbank weiterleitet.
�Es existiert nur eine kleine Liste von Treibern.�Aber es gibt ODBC, eine Schnittstelle zwischen MS
und Datenbankanbindungen.
Seite 70© MobilCom Multimedia GmbH 09.07.2002
Datenbankschnittstelle (2/6)
Wichtige Klassen des JDBC� Driver: Implementierung und Registrierung von Treibern� DriverManager: Herstellen einer Verbindung zwischen
Programm und DB. Zuvor pssenden Treiber unter DriverManager regestrieren
� Connection: Verbindung zur DB� Statement: Aufsetzen und Abschicken von SQL Befehlern an
DB� ResultSet: Die aus der DB zurückgelieferten Daten
Seite 71© MobilCom Multimedia GmbH 09.07.2002
Datenbankschnittstelle (3/6)
JDBC-ODBC Bridge�Inhalt von Java ist eine JDBC-ODBC Brücke,
die erlaubt, statt echter JDBC auch ODBC Treiber zu benutzen.
�Zugriff auf Datenbank in sechs Schritten.
Seite 72© MobilCom Multimedia GmbH 09.07.2002
Datenbankschnittstelle (4/6)
JDBC-ODBC Bridge:� 1) Der JDBC Treiber wird geladen
Class.forName(„sun.jdbc.odbc.JdbcOdbcDriver“);
� 2) Verbindung wird hergestelltConnection = null;try{verbindung = DriverManager.getConnection(URL,
benutzername, passwort);}
Seite 73© MobilCom Multimedia GmbH 09.07.2002
Datenbankschnittstelle (5/6)
JDBC-ODBC Bridge:� 3) Statement-Objekt erzeugen (Befehlsobjekt
erzeugen)Statement befehl = null;try{befehl = verbindung.createStatment();
}
� 4) Daten aus DB abfragen (Befehle abschicken)Resultset datenmenge;datenmenge = befehl.executeQuery(„Select * FROM DB.tabelle;“);
Seite 74© MobilCom Multimedia GmbH 09.07.2002
Datenbankschnittstelle (6/6)
JDBC-ODBC Bridge:� 5) Daten verarbeiten (Methoden von ResultSet)
while (datenmenge.next()){variable1 = datenmenge.getString(“Spalte1“);variable2 = datenmenge.getInt(„ Spalte2“);[etc ja nach Datentyp]
}
� 6) Verbindung schließenverbindung.close();
Seite 75© MobilCom Multimedia GmbH 09.07.2002
Nebenläufigkeit – Threads (1/2)
Parallelisierung von Handlungssträngen� Threads können genau 4 Zustände haben: Geburt, Laufen,
Nicht laufen, Tod� Entweder muss man die Klasse Thread erweitern, oder die
Klasse Runnable implementierenclass MyThread extends Threadclass MyThread extends Applet implements Runnable
� Gestartet wird ein Thread mit der Methode start(), die intern die Methode run() aufruft. Diese muss in der vonThread abgeleiteten Klasse überschrieben werden
Seite 76© MobilCom Multimedia GmbH 09.07.2002
Nebenläufigkeit – Threads (2/2)
Multitasking: mehrere Prozesse laufen gleichzeitig auf einem System ab
� Threads können mit Prioritäten versehen werden, um ihnen Zeit auf der CPU zuzuweisen.
� Ein Thread wird mittels sleep stillgelegt oder mit interrupt() unterbrochen.
� synchronized – ermöglicht den Zugriff auf dieselbe Resource (threadsicher), indem der Zugriff von außen blockiert wird.
�Vorsicht! Deadlock!
Seite 77© MobilCom Multimedia GmbH 09.07.2002
Javaschulung
ENDE