Inhalt. Objektorientierte Programmierung in Java, Mark Giereth 29.01.2004. Motivation. Teil 3. Grundlagen der Objektorientierung



Ähnliche Dokumente
3 Objektorientierte Konzepte in Java

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Kapitel 6. Vererbung

Einführung in die Programmiersprache Java II

Java-Schulung Grundlagen

Kapitel 6. Vererbung

Vorkurs C++ Programmierung

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Objektorientierte Programmierung. Kapitel 12: Interfaces

Kapitel 6. Vererbung

Programmieren in Java

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Prinzipien Objektorientierter Programmierung

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Javakurs zu Informatik I. Henning Heitkötter

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Applications Applets (eingeschränkte Rechte)

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

Einführung in Javadoc

5. Abstrakte Klassen

3 Objektorientierte Konzepte in Java

Große Übung Praktische Informatik 1

Einführung in die Java- Programmierung

Java Einführung Abstrakte Klassen und Interfaces

Objektorientierte Programmierung OOP

Grundlagen der Programmierung APPLETS

Objektorientierte Programmierung in Java

Datenbankanwendungsprogrammierung Crashkurs Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Java: Vererbung. Teil 3: super()

Vererbung & Schnittstellen in C#

Applets. Applets. Applets. Applet: Java-Programm Eingebettet in einer HTML-Seite Ausführung von einem Java-fähigen Web-Browser oder sog.

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

Typumwandlungen bei Referenztypen

Grundlagen von Python

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

Objektorientierte Programmierung

5.6 Vererbung. Vererbung

Java Virtual Machine (JVM) Bytecode

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer)

Innere Klassen in Java

4. AuD Tafelübung T-C3

3. Konzepte der objektorientierten Programmierung

Einführung in die Programmierung

Algorithmen und Datenstrukturen

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

2A Basistechniken: Weitere Aufgaben

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

Java Kurs für Anfänger Einheit 5 Methoden

Java Schulung (Java 2 Java Development Kit 5 / 6)

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Computeranwendung und Programmierung (CuP)

Vorkurs Informatik WiSe 15/16

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Java I Vorlesung 11 Graphische Oberflächen mit Swing

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Alexander Niemann. Das Einsteigerseminar Objektorientierte Programmierung in Java. bhv

Themen. Web Service - Clients. Kommunikation zw. Web Services

Applets Belebung von Webseiten. Dipl.-Ing. Wolfgang Beer

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Wiederholung JAVA. 1. (Vorbereitung)

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Javakurs 2013 Objektorientierung

GUI Programmierung mit JAVA Swing

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

Einstieg in die Informatik mit Java

Distributed Computing Group

Algorithmen und Datenstrukturen 07

Objektorientierte Programmierung

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Vorlesung Informatik II

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden

Software Engineering Klassendiagramme Einführung

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords

Client-Server-Beziehungen

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

II.1.1. Erste Schritte - 1 -

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Javakurs für Anfänger

Java Einführung Methoden in Klassen

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

5. Tutorium zu Programmieren

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi

Einführung in Eclipse und Java

Probeklausur: Programmierung WS04/05

Einführung in die Programmiersprache Java II

Primitive Datentypen

Aufgabenblatt Nr. 5 Generizität und TicTacToe

Teil 3 - Java. Grundlagen Klassen, Attribute Methoden

Einführung in die C-Programmierung

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Einstieg in die Informatik mit Java

Transkript:

Inhalt Objektorientierte Programmierung in Java Mark Giereth Teil 1. Teil 2. Teil 3. Grundlagen der Objektorientierung Einführung in Java Beispiel: Entwicklung eines kleinen Web-Browsers und Eclipse-Demo 2 Motivation Teil 1: Grundlagen der Objektorientierung Datenorientierte Sichtweise: Gruppierung von Daten zu komplexen Typen Definition von Operationen, die Daten verarbeiten Daten vor inkonsistenten Veränderungen schützen, indem Zugriff auf die Daten Beschränkt wird Wiederverwendung von Code Einfachere Anpassbarkeit von Code Bessere Wartbarkeit Die Wartung von Softwaresystemen nimmt den größten Teil des Lebenszyklus ein und ist daher besonders kostenintensiv Objektorientierte Systeme ermöglichen einen strukturierteren Systementwurf 3 4

Objekte (Software-)Objekte besitzen einen internen Zustand und haben ein festgelegtes Verhalten Ein Objekt verwaltet seinen Zustand durch Variablen, Attribute genannt implementiert sein Verhalten durch Funktionen, Methoden genannt Methoden (Verhalten) Attribute (Zustand) Klassen und Instanzen Klassen sind Vorlagen für die Erzeugung von Objekten Jedes Objekt gehört einer Klasse an Die Attribute und Methoden der Objekte werden in der zugehörigen Klasse definiert Die Klasse legt den Typ eines Objekts fest Alle Objekte einer Klasse besitzen dasselbe Verhalten, da sie dieselbe Implementierung der Methoden besitzen Objekte einer Klasse werden auch als Instanzen (instance) oder Exemplare bezeichnet Klassen können auch Methoden und Attribute besitzen, die für die Klasse selbst und nicht für jede Instanz gelten. Diese werden als Klassen-Methoden/-Attribute bezeichnet (im Gegensatz zu Instanz-Methoden/-Attribute) 5 6 Instantiierung Beispiel Die Erzeugung von Objekten wird Instantiierung (instantiation) genannt Es wird Speicherplatz für das Objekt auf dem Heap allokiert (abhängig von den Datentypen der Attribute) Bei der Instantiierung wird ein Konstruktor (spezielle Methode) ausgeführt, der die Initialisierung des Objekts vornimmt Es werden den Attributen Werte zugeordnet, wodurch der Zustand des Objekts definiert wird entweder definiert durch den Konstruktor oder Default-Werte (0 für Zahlen, null für Referenzen, etc.) Die Instantiierung eines Objekts erfolgt mit dem new-operator Klasse setze y lese y zeichne Figur berechne Fläche Geometrische Figur Position y = 10 Position x = 20 Instanz 1 Position y Position x lese x setze x Position y = -11 Position x = 30 Figur 1 Instanz 2 Figur 2 7 8

UML Notation Die Unified Modeling Language (UML) ist eine Notation zur Spezifikation und Visualisierung von Modellen für Softwaresysteme In den folgenden Folien werden Klassendiagramme zur Beschreibung von Klassen und deren Beziehungen untereinander verwendet x:int y:int () setx(x:int):int sety(y:int):int getx():int gety():int getarea():float drawfigure():void Klassenname Attribute Methoden und Konstruktoren 9 setze y lese y zeichne Figur berechne Fläche Geometrische Figur Position y Position x lese x setze x Vererbung Vererbung (inheritance) ist ein Konzept, wodurch Attribute und Methoden der Oberklasse auch den Unterklassen zugänglich gemacht werden Vererbungsbeziehungen zwischen Klassen stellen Generalisierungs- bzw. Spezialisierungsbeziehungen dar Unterklassen/ Subklassen Oberklasse/ Superklasse Rectangle Circle Vererbungsbeziehung als nichtausgefüllter Pfeil von der Unter- zur Oberklasse 10 Vererbung Vererbung x:int y:int () setx(x:int):int sety(y:int):int getx():int gety():int getarea():float drawfigure():void Rectangle width:int height:int Rectangle() setwidth(x:int):int setheight(y:int):int getwidth():int getheight():int Circle radius:int Circle() setradius(x:int):int getradius():int Hat eine Methode einer Subklasse die gleiche Signatur einer Methode der Superklasse, so wird die Superklassenmethode überschrieben (overriding) Gibt es mehrere Methoden mit demselben Namen aber mit unterschiedlichen Signaturen, so spricht man von Überladen (overloading) Aber: Methoden müssen denselben Rückgabewert haben! Ein Objekt einer Unterklasse (z.b. Rechteck, Kreis) kann auch einer Variablen vom Typ der Oberklasse (z.b. GeomFirgure) zugewiesen werden (upcasting) 11 12

Abstrakte Klassen und Interfaces Abstrakte Klassen sind Klassen, die mindestens eine abstrakte Methode haben Abstrakte Methoden besitzen keine Implementierung. Von abstrakten Klassen können keine Instanzen erzeugt werden Unterklassen müssen entweder die abstrakten Methoden implementieren oder sind ebenfalls abstrakt Interfaces sind abstrakte Klassen, die nur aus abstrakten Methoden bestehen. Sie repräsentieren eine definierte Schnittstelle als eine Menge von welche die jeweilige Klasse implementieren muss Methoden. 13 x:int y:int {abstract () setx(x:int):int sety(y:int):int getx():int gety():int getarea():float {abstract drawfigure():void {abstract Da für getarea() und drawfigure() keine sinnvolle Implementierung möglich ist, werden diese Methoden als abstract gekennzeichnet und müssen von allen nicht abstrakten Unterklassen implementiert werden. Abstrakte Klassen Rectangle width:int height:int Rectangle() setwidth(x:int):int setheight(y:int):int getwidth():int getheight():int getarea():float drawfigure():void radius:int Circle Circle() setradius(x:int):int getradius():int getarea():float drawfigure():void 14 Zusammenfassung Objekte besitzen Attribute und Methoden gehören einer Klasse an Klassen legen Methoden und Attribute der Objekte fest können Klassen-Methoden/-Attribute besitzen können abstrakt sein Instantiierung Objekte werden auf dem Heap erzeugt den Attributen werden Werte zugeordnet Konstruktoren werden ausgeführt Vererbung Attribute und Methoden der Oberklasse werden den Unterklassen zugänglich gemacht Interfaces Teil 2: Einführung in Java 15 16

Eigenschaften von Java (1) Eigenschaften von Java (2) Java ist plattformunabhängig Java-Code wird mit einem Java-Compiler (javac) in plattformunabhängigen Bytecode überführt Bytecode wird von einer Java Virtual Machine (JVM) teils interpretiert teils zur Laufzeit in Maschinencode kompiliert (Just- In-Time-Compiler in JVM integriert) Für jede unterstützte Plattform muss es eine JVM geben Source Compiler Bytecode JVM Solaris JVM Windows JVM Linux Java wurde auf Sicherheit und Robustheit hin entwickelt: Fehleranfällige Sprachkonstrukte fehlen: keine Pointer keine Destruktoren sondern automatische Garbage Collection keine Mehrfachvererbung kein Operator-Overloading Bytecode Verification Security Manager und Security Policies erlauben feinkörnige Rechtevergabe für Java-Programme Exception Handling Thread-Sicherheit in die Sprache integriert 17 18 Java API Es existiert eine rießige Anzahl von vordefinierten Klassen, die mit der Java Umgebung ausgeliefert werden, z.b. Datenbankunterstützung (java.sql) Netzwerkunterstützung (java.net) Unterstützung für verteilte Systeme (java.rmi) 2D Graphik (java.awt) Collektionframework (java.util) XML Unterstützung (javax.xml) Graphische Benutzeroberflächen (javax.swing) Java Klassen sind in Packages organisiert Ein Package gibt den Namensraum einer Klasse an z.b. java.lang.string Arten von Java Programmen Java Applications Laufen in einer JVM, die von Betriebssystemebene aus gestartet wird Zugriff auf alle lokalen Ressourcen Java Applets Laufen in der JVM des Browsers (bzw. in dem JVM Plug-in des Browsers) Werden in HTML-Seiten eingebunden Hohe Sicherheitsbeschränkungen (kein Zugriff auf lokale Ressourcen wie Filesystem, Drucker, etc.) Java Servlets Laufen in einer JVM eines Webservers Dynamisches erzeugen von Web-Seiten 19 20

Beispiel für eine komplexe Java Application Hello World Application public class Hello { public static void main(string[] args) { System.out.println("Hello World"); Speichern als Textdatei Hello.java Aufruf des Java-Compilers: javac Hello.java erzeugt die Bytecode-Datei Hello.class Ausführen des Bytecodes: java Hello 21 22 Hello World Applet Java Basics import java.applet.applet; import java.awt.graphics; public class HelloApplet extends Applet { public void paint(graphics g) { g.drawstring("hello World", 5, 20); <html> <head><title>helloapplet Test</title></head> <body> Hier kommt das Applet: <applet code="helloapplet.class" codebase="." width="500" height="100"></applet> </body> </html>.java Datei.html Datei Klassen- und Interface-Definition Datentypen Variablen- und Methodendeklaration Kontrollfluss Bedingungen (if-then, if-then-else, switch) Schleifen (while, do, for) Exception Handling throws, throw, try-catch 23 24

Klassen und Interfaces Datentypen [public] [abstract] class Klassenname [extends Klassenname] [implements Interfacenamen] { Klassen/Instanz Attribute Konstruktoren Klassen/Instanz Methoden [public] interface Interfacename [extends Interfacename] { Klassen Attribute Instanz Methoden 25 Elementare Typen Ganze Zahlen: long(64 bit), int(32), short(16), byte(8) Gleitkommazahlen: double (64 bit), float (32 bit) boolean char (16 bit Unicode character) Referenztypen Classes (z.b. String), Arrays, Interfaces Die Konstante null bezeichnet die leere Referenz Referenztypen werden mit dem new-operator erzeugt Zuweisung eines Referenztyps kopiert den Verweis 26 Variablendeklaration Typename Variablenname [Wertzuweisung] ; int x; int[] vector = new int[3]; boolean b = true; char c = 'A'; String text = "Hallo Welt"; String text = new String("Hallo Welt"); f = new (); Die String-Klasse bildet eine Ausnahme: obwohl String ein Referenttyp ist, können String Instanzen mit Variable="Text" instanziiert werden. Methoden [private public protected] Typename Methodenname (Argumentenliste) [throws Exception] { Methodenrumpf void sayhello() throws NoVoiceEx {System.out.println("Hallo Welt"); public String tostring() {System.out.println("Hallo Welt"); protected int setposition(int x, int y) {m_x=x; m_y=y; 27 28

Methodenaufruf Zugriffsbeschränkungen Objekt.Methode(Argumente); Objekt String text = "Hallo Welt"; String hallo = text.substring(1,5); System.out.println(hallo); text.substring(1,5).indexof("llo"); Methode Argumente Kennzeichnung Klassen UML private nur die Klasse selbst - protected auch alle Unterklassen # public alle Klassen + keine Angabe alle Klassen des Packages (package private) keine "friend" Deklarationen wie in C++ Anwendung: Methoden, Attribute, Klassen 29 30 Bedingungen Schleifen if (Ausdruck) { then-block else { else-block Beispiel: if (x<0) { y = -x; else { y = x; switch (Int-Ausdruck) { case wert1: block1; break; case wert2: block2; break; default: default-block Beispiel: switch(x){ case 1: System.out.println("eins"); break; case 2: System.out.println("zwei"); break; default: System.out.println("?"); while (Ausdruck) { Schleifenrumpf Beispiel: int x=10; while(x>0) { System.out.println(x); x=x-1; for (Init, Ausdruck, Schritt) { Schleifenrumpf Beispiel: for(int x=10; x>10; x=x-1) { System.out.println(x); 31 32

Exception Handling Die Klasse public static String readfile(string filename) throws IOException { public static void main(string[] args) { String content = ""; if (args!= null && args.length > 0) { try { content = readfile(args[0]); System.out.println(content); catch (IOException e) {System.err.println("Fehler: "+e); 33 public class { // Attribute: x-/y-koordinate protected int myx, myy; public () { // Konstruktor // Methoden: public int getx() {return myx; public int gety() {return myy; public void setx(int x) {myx=x; public void sety(int y) {myy=y; public String tostring() { return new String("["+myX+","+myY+"]"); #myx:int #myy:int +() +setx(x:int) +sety(y:int) +getx():int +gety():int +tostring():string 34 Die Klasse GeomApp Konstruktoren public class GeomApp { public static void main(string[] args) { f = new (); f.setx(10); f.sety(20); System.out.println(f.toString()); Ausgabe: [10,20] Spezielle Methoden zur Initialisierung, die bei der Instanziierung aufgerufen werden Konstruktoren haben denselben Namen wie die Klasse und keinen Rückgabewert Konstruktoren können Parameter haben Jede Klasse hat einen impliziten Default- Konstrutor, der keine Parameter hat Jeder Konstruktor ruft implizit den Konstruktor der Superklasse auf: super() Ausnahme: hat die Superklasse keinen öffentlichen Konstruktor Durch explizite Angabe kann ein entsprechender Konstruktor der Superklasse ausgewählt werden #myx:int #myy:int +() +(x:int,y:int) +(p:) +setx(x:int):int +sety(y:int):int +getx():int +gety():int +tostring():string 35 36

Die Klasse public class { // Attribute: x-/y-koordinate protected int myx, myy; // Konstruktoren: public () { public (int x, int y) {myx=x; myy=y; public ( f) {myx=f.myx; myy=f.myy; Die Klasse f1 = new (10,20); f2 = new (f1); System.out.println("f1:"+f1.toString()+", f2:"+f2.tostring()); Ausgabe: f1:[10,20], f2:[10,20] // Methoden 37 38 Die Klasse Square Die Klasse Square #x:int #y:int +() +(x:int,y:int) +(p:) +setx(x:int):int +sety(y:int):int +getx():int +gety():int +tostring():string -a:int Square +Square(a:int) +Square(p:,a:int) +setlength(a:int):void +getlenght():int +getarea():float +tostring():string public class Square extends { // Attribute private int a; // Konstruktoren public Square ( f, int a) {super(f); this.a=a; public Square (int a) {super(); this.a=a; // neue Methoden public int getlength() {return a; public void setlength(int a) {this.a=a; public float getarea() {return a*a; // überschriebene Methoden public String tostring() { return "[x/y:"+super.tostring()+"a:"+a+"]"; Ist a Attribut oder Argument? this.a this gibt die Referenz auf dieses Objekt an, super auf die Implemtierung der Superklasse 39 40

Die Klasse GeomApp Überschreiben von Methoden public class GeomApp { public static void main(string[] args) { f = new (10,20); f2 = new Square(f,5); // Square ist ein // getarea() nicht definiert für -> Downcasting // sicheres Downcasting mit: if(f2 instanceof Square) float a= ((Square)f2).getArea(); System.out.println(f2.toString() + " area: "+a); Ausgabe: 41 Hat eine Methode einer Subklasse die gleiche Signatur einer Methode der Superklasse, so wird die Superklassenmethode überschrieben (overriding) definiert eine Methode tostring(): String tostring() {return new String("["+x+","+y+"]"); Square überschreibt die Methode: String tostring() {return "[x/y:"+super.tostring()+"a:"+a+"]"); Auswirkung: f2 = new Square(new (10,20),5); System.out.println(f2.toString()); // Ergebnis [x/y:[10,20], a:5] Obwohl die Variable f2 vom Typ ist, referenziert sie ein Objekt vom Typ Square, dessen tostring() Methode ausgeführt wird 42 Überladen von Methoden static String read(string filename) { static String read(string filename, String path) { static String read(file file) { Gibt es mehrere Methoden mit demselben Namen aber mit unterschiedlichen Signaturen, so spricht man von Überladen (overloading) String f = "Hallo.java"; String content = read(f); Beispiel: System.out.println() (siehe APIDokumentation) ruft erste Variante auf, da f vom Typ String ist. 43 Teil 3: Entwicklung eines kleinen Web-Browsers Eclipse Demo Eclipse im Web: http://www.eclipse.org 44

Swing GUI Komponenten Toplevel Container: JDialog, JFrame, Ausschnitt aus Swing/AWT- Klassenhierarchie General Purpose Container: JSplittPane, JTabbedPane, JScrollPane, Basic Controls: JButton, JMenu, JTextField, JSlider, 45 46 Container Können andere Komponenten enthalten Beispiel: Toplevel-Container JFrame Beispiel: Web Browser JFrame JTextField JEditorPane JButton 47 48

Schritt 1 Schritt 2 public static void main(string[] args) { // erzeuge Anwendungsfenster: JFrame frame = new JFrame("MiniBrowser"); // erzeuge GUI Komponenten: JTextField field = new JTextField(); JEditorPane editor = new JEditorPane(); JButton button = new JButton("refresh"); // definiere Layout und füge Komponenten hinzu: frame.getcontentpane().setlayout(new BorderLayout()); frame.getcontentpane().add(field, BorderLayout.NORTH); frame.getcontentpane().add(editor, BorderLayout.CENTER); frame.getcontentpane().add(button, BorderLayout.SOUTH); // setze Größe und zeige Frame an: frame.setsize(400,200); frame.setvisible(true); 49 public class WebBrowser extends JFrame { private JTextField field = new JTextField(); private JEditorPane editor = new JEditorPane(); private JButton button = new JButton("refresh"); public WebBrowser() { super(); settitle("mini Browser"); button.addactionlistener(this); editor.seteditable(false); getcontentpane().setlayout(new BorderLayout()); getcontentpane().add(field, BorderLayout.NORTH); getcontentpane().add(editor, BorderLayout.CENTER); getcontentpane().add(button, BorderLayout.SOUTH); public static void main(string[] args) { JFrame frame = new WebBrowser(); frame.setsize(400, 200); frame.setvisible(true); 50 Schritt 3 public class WebBrowser extends JFrame implements ActionListener { public void actionperformed(actionevent e) { System.out.println("URL: "+field.gettext()); try { editor.setpage(field.gettext()); catch (IOException e1) { e1.printstacktrace(); Links und Literatur Java Hauptseite: http://java.sun.com Java Tutorials: http://java.sun.com/developer/onlinetraining/ Bücher David Flanagan: "Java in a Nutshell", O'Reilly, 11/2002, 1104 Seiten, Alexander Niemann:"Objektorientierte Programmierung in Java. Das Einsteigerseminar", vmi Buch, 12/2002, 400 Seiten, 51 52

Kompaktkurs Java In der vorlesungsfreien Zeit nach dem Sommersemester 7 Tage Java in kompakter Form, kombiniert mit Übungen Inhalt: Tag 1+2: Die Programmiersprache Java Tag 3: Objektorientierte Analyse und Design, UML, Entwurfsmuster Tag 4: GUI Entwicklung: Swing, AWT, Java2D Tag 5: Datenbankanbindung mit JDBC, Einführung in SQL Tag 6: Java Servlets und Java Server Pages Tag 7: Java APIs für XML Im Anschluss: 7 Tage XML Kompaktkurs 53