CuP - Java Erste Vorlesung Entspricht ungefähr Kapitel 1.1 des Skriptums Wilfried Imrich Montanuniversität Leoben Freitag, 4. Oktober 2002 Literatur Skriptum Dirk Ammelburger, Java2 für Einsteiger, KnowWare Plus 2001 Douglas Bell und Mike Parr, Java for Students, Second edition, Prentice Hall 1999 (UB MUL Nr. 32250) Judy Bishop, Java Gently, Addison Wesley 1997 (auch auf Deutsch erhältlich) The Java Tutorial, Third Edition, A short course on the basics, Sun 2001 John R. Hubbard, Programmieren in Java, Schaum‘s Überblicke und Aufgaben, McGraw-Hill 1999 4. Oktober 2002 CuP WS 2002/2003 2 Java Was braucht man, um mit Java zu arbeiten? Man benötigt einen Texteditor um die Programme zu schreiben - auf jedem Rechner vorhanden und eine Java Virtual Machine (JVM) um die Programme laufen zu lassen - wobei die JVM gratis aus dem Netz geladen werden kann. 4. Oktober 2002 CuP WS 2002/2003 3 Inhalt der Vorlesung Grundlagen der objektorientierten Programmierung Grundlagen der prozeduralen Programmierung Graphische Oberflächen Steuerflächen und Ereignisse 4. Oktober 2002 CuP WS 2002/2003 4 Grundlagen der objektorientierten Programmierung Klassen Objekte Attribute Methoden Datenkapselung Vererbung Polymorphismus 4. Oktober 2002 CuP WS 2002/2003 5 Grundlagen der prozeduralen Programmierung Variable und Anweisungen Programmverzweigungen und Schleifen 4. Oktober 2002 CuP WS 2002/2003 6 Graphische Oberflächen Applets - das sind Javaprogramme, die durch einen Appletviewer oder einen Webbrowser durchgeführt werden. Können auch über das Internet geladen werden. Werden in der zweiten Vorlesungshälfte behandelt. 4. Oktober 2002 CuP WS 2002/2003 7 Steuerflächen und Ereignisse Steuerung von Programmen durch vom Benutzer verursachte Ereignisse oder durch andere, wie etwa die Uhrzeit. 4. Oktober 2002 CuP WS 2002/2003 8 Das erste Programm class Hallo{ public static void main(String args[ ]) { System.out.println (“Willkommen”); } } Bemerkung: Ein Programm mit einer main-Methode heißt Applikation 4. Oktober 2002 CuP WS 2002/2003 9 Ausführung Diesen Text in eine Datei mit dem Namen Hallo.java schreiben. (Quellcode) Durch die Anweisung javac Hallo.java die Datei Hallo.class erzeugen. (Kompilierung) Durch die Anweisung java Hallo die main-Methode durch den Interpreter ausführen. (Ausführung) 4. Oktober 2002 CuP WS 2002/2003 10 Compilierung und Ausführung Compilierung Ausführung Java Quellcode Hallo.java Java Compiler Class Loader Netzwerk Interpreter Java Bytecodes Hallo.class 4. Oktober 2002 Code Generator Hardware CuP WS 2002/2003 11 Eine ganz einfache Klasse public class Turm{ int hoehe; } 4. Oktober 2002 CuP WS 2002/2003 12 public class Turm{ int hoehe; } public Turm int hoehe Modifikator der Klasse Name der Klasse Deklariert eine Ganzzahlvariable mit dem Namen „hoehe“ Dateiname dieser Klasse? Was kann man mit dieser Klasse tun? Man kann sie kompilieren. Wie? Was geschieht dabei? 4. Oktober 2002 CuP WS 2002/2003 13 Ein Objekt der Klasse Turm public class TurmTestA{ public static void main(String[ ] args){ Turm turm1; turm1 = new Turm( ); System.out.println(turm1.hoehe); } } 4. Oktober 2002 CuP WS 2002/2003 14 public class TurmTestB{ public static void main(String[ ] args) Turm turm1; turm1 = new Turm( ); // Wertzuweisung turm1.hoehe = 25; System.out.println(turm1.hoehe); } } 4. Oktober 2002 CuP WS 2002/2003 15 Objekte der Klasse Turm public class TurmTestC{ public static void main(String[ ] args){ Turm turm1, turm2; turm1 = new Turm( ); turm2 = new Turm( ); turm2.hoehe = 38; System.out.println(turm1.hoehe + " " + turm2.hoehe); } } 4. Oktober 2002 CuP WS 2002/2003 16 Konstruktoren und Objektvariable Turm( ) ist ein Konstruktor; dient zur Erzeugung eines Objekts, also einer Instanz einer Klasse. turm2.hoehe ist eine Objektvariable, auch Instanzvariable genannt. Wenn man sie nicht initialisiert; d.h. wenn man ihr keinen Wert zuweist, wird sie durch Java mit dem Wert 0 initialisiert. (Außer Objektvariablen gibt es nur noch Klassenvariable und lokale Variable) 4. Oktober 2002 CuP WS 2002/2003 17 Was ist ein Programm? Ein Programm besteht aus einer oder mehreren Klassen, zum Beispiel aus der Klasse „Hallo“ oder den Klassen „Turm“ und „TurmTestA“. Was charakterisiert eine Klasse? Die Deklaration [Modifikator] class Name{ 4. Oktober 2002 CuP WS 2002/2003 } 18 Was charakterisiert eine Applikation? Die Methode public static void main (String args[]){ } Wie druckt man Text aus? Durch System.out.println("Text"); // Zeilenvorschub nach der Ausgabe oder System.out.print("Text"); // Kein Zeilenvorschub nach der Ausgabe Innerhalb des Klammernpaares { } der main-Methode! 4. Oktober 2002 CuP WS 2002/2003 19 Die Verknüpfung + Die Anweisung System.out.println("Hoehe von turm1: " + turm1.hoehe); in TesteTurm bewirkt, dass der Text "Hoehe von turm1: " mit dem Wert von turm1.hoehe verknüpft wird. Dabei wandelt Java die ganze Zahl turm1.hoehe vor der Verknüpfung zuerst in Text um. 4. Oktober 2002 CuP WS 2002/2003 20 Wie erzeugt man ein Objekt einer Klasse? Durch die Anweisungen Klassenname Objektname; Objektname = new Klassename( ); oder Klassenname Objektname = new Klassenname( ); z.B. Turm schwammerlturm; schwammerlturm = new Turm(); 4. Oktober 2002 CuP WS 2002/2003 21 Wie erzeugt man eine Objekvariable vom Typ integer? Durch die Anweisungen int variablenname; in der Definition der Klasse, z.B. int hoehe; Wertezuweisung durch objektname.variablenname = wert; nach Erzeugung des Objekts, z.B. turm1.hoehe = 25; 4. Oktober 2002 CuP WS 2002/2003 22 Wichtige bisher gebrachte Begriffe Javaapplikation, Quellcode, Kompiler, Interpreter, Klasse, Instanz oder Objekt, Instanz- oder Objektvariable, Deklaration, Initialisierung, Modifikator, Methode, Programm 4. Oktober 2002 CuP WS 2002/2003 23 Fragen Was macht der Kompiler, was der Interpreter? Können Sie Beispiele zu allen anderen Begriffen geben? Lässt sich die Klasse public class KannNichts{ } ohne Fehlermeldung übersetzten? 4. Oktober 2002 CuP WS 2002/2003 24