CuP - Java Elfte Vorlesung Montag, 11. November 2002 Frame Object -- Component -- Container -- Window --Frame import java.awt.Frame; class TesteFrame{ public static void main(String[] args){ Frame rahmen = new Frame("Rahmentest“); rahmen.setSize(400, 400); rahmen.setVisible(true); System.out.println(“Zum Schliessen x anklicken“); } 11. November 2002 CuP WS 2002/2003 2 Erweiterung von Frame, Konstruktor, Farbe Import java.awt.Color; import java.awt.Frame; class MeinRahmen extends Frame{ MeinRahmen(){ setBackground(Color.blue); setSize(400, 400); setVisible(true); } public static void main(String[] args){ MeinRahmen = new MeinRahmen(); } } 11. November 2002 CuP WS 2002/2003 3 Color.black (0,0,0) Color.blue (0,0, 255) Color.cyan (0,255,255) Color.darkGray (0,0, 255) Color.gray (128,128,128) Color.green (0,255,0) Color.lightGray (192,192,192) Color.magenta(255,0,255) Color.orange (255,200,0) Color.pink (255,175,175) Color.red (255,0,0) Color.white (255,255,255) Color.yellow (255,255,0) 11. November 2002 CuP WS 2002/2003 Standardfarben und RGB Code 4 RGB Import java.awt.*; class MeinRahmenRGB extends Frame{ MeinRahmenRGB(){ setBackground(new Color(1,1,55)); setSize(400, 400); setVisible(true); } public static void main(String[] args){ MeinRahmenRGB = new MeinRahmenRGB(); } } 11. November 2002 CuP WS 2002/2003 5 super Import java.awt.*; class MeinRahmenS extends Frame{ MeinRahmenS(String s){ super(s); setBackground(Color.blue); setSize(400, 400); setVisible(true); } public static void main(String[] args){ MeinRahmenS = new MeinRahmenS("Zweiter Rahmen"); } } 11. November 2002 CuP WS 2002/2003 6 Erläuterung zu „super“ Die Anweisung super (s) im Konstruktor MeinRahmen2(String s) ruft den Konstruktor Frame(s) auf, also den Konstruktor der Oberklasse (Superklasse). MeinRahmen2 hat dann keinen Konstruktor ohne Argumente mehr! Wenn wir so einen haben wollen, müssen wir ihn selbs definieren. 11. November 2002 CuP WS 2002/2003 7 Super rgb Import java.awt.*; class MeinRahmenSrgb extends Frame{ MeinRahmenSrgb(String s, int i, int j, int k){ super(s); setBackground(new Color(i,j,k)); setSize(400, 400); setVisible(true); } 11. November 2002 CuP WS 2002/2003 8 Super rgb - main public static void main(String[] args){ MeinRahmenSrgb r1; r1 = new MeinRahmenSrgb(“Teste Farben 1“, 1,55,255); r1.setLocation(10, 20); MeinRahmenSrgb r2; r2 = new MeinRahmenSrgb(“Teste Farben 2“, 255,0,0); r2.setLocation(100, 300); } } 11. November 2002 CuP WS 2002/2003 9 Graphics Import java.awt.*; class MeinRahmen3 extends Frame{ public void paint(Graphics g){ g.drawLine(50,50,100,100); } public static void main(String[] args){ MeinRahmen3 rahmen = new MeinRahmen3(); rahmen.setSize(300, 300); rahmen.setVisible(true); } } 11. November 2002 CuP WS 2002/2003 10 Javaprogramme Ein Javaprogramm besteht aus einer oder mehreren Klassen, mindestens eines davon muss public sein und eine Methode namens main enthalten, die folgende Form hat: public static void main(String[] args){ Anweisungen } Kompiliert wird eine Klasse Xxxx durch den Befehl javac Xxxx.java und ausgeführt durch java Xxxx 11. November 2002 CuP WS 2002/2003 11 Klassen Klassen können haben: Variable - primitive Datentypen oder Objekte anderer Klassen, wir unterscheiden Klassen- und Objektvarible Konstruktoren Methoden - wir unterscheiden auch hier Klassen und Objektmethoden 11. November 2002 CuP WS 2002/2003 12 Klassenmodifikatoren Klassen können sein: public zugänglich von allen Klassen abstrakt - von solchen Klassen können keine Instanzen gebildet werden. Beispiel: die Klasse Math final zu solchen Klassen können keine Erweiterungen gebildet werden. Beispiel: die Klasse String 11. November 2002 CuP WS 2002/2003 13 Konstruktormodifikatoren Konstruktoren können sein: public zugänglich von allen Klassen protected - Zugänglich nur von innerhalb der eigenen Klasse und von Unterklassen private - Zugänglich nur von innerhalb der eigenen Klasse 11. November 2002 CuP WS 2002/2003 14 Variablenmodifikatoren Variablen können sein: public zugänglich von allen Klassen protected - Zugänglich nur von innerhalb der eigenen Klasse und von Unterklassen private - Zugänglich nur von innerhalb der eigenen Klasse static Die Variable hat für alle Instanzen der Klasse denselben Wert final Die Variable muss initialisiert werden und kann nicht verändert werden transient - gehört nicht zum Stoff der Vorlesung volatile gehört nicht zum Stoff der Vorlesung 11. November 2002 CuP WS 2002/2003 15 Lokalvariablenmodifikatoren Lokalvariable können sein: final - 11. November 2002 Die Variable muss initialisiert werden und kann nicht verändert werden CuP WS 2002/2003 16 Methodenmodifikatoren Methoden können sein: public zugänglich von allen Klassen protected - Zugänglich nur von innerhalb der eigenen Klasse und von Unterklassen private - Zugänglich nur von innerhalb der eigenen Klasse abstract - Die Methode hat einen leeren Rumpf static Die Methode ist an die Klasse selbst gebunden, nicht an Instanzen final Keine Unterklassen können die Methode überlagern native Der Rumpf ist aus einer anderen Programmiersprache synchronized - gehört nicht zum Stoff der Vorlesung 11. November 2002 CuP WS 2002/2003 17 Fehlender Modifikator Wird kein Modifikator festgelegt, so so ist die Einheit von jeder Klasse desselben Pakets (für uns: für jede Klasse aus demselben Verzeichnis) zugänglich. 11. November 2002 CuP WS 2002/2003 18 Bilden von Klassen Komposition class Kirche{ Turm turm; Haus schiff; } 11. November 2002 CuP WS 2002/2003 19 Bilden von Klassen Vererbung public class Hund extends Tier{ public void gibLaut(){ System.out.println ("Wau wau!"); } } public class Katze extends Tier{ public void gibLaut(){ System.out.println("Miau!"); } } 11. November 2002 CuP WS 2002/2003 20