====== Beispiel: Eigene Klasse mit Window und Pen ====== In der [[de:jltk:intro1|kurzen Einführung]] wurden Objekte der Klasse //Window// und //Pen// erzeugt. Der Stift wurde dann bewegt und damit eine Figur gezeichnet. In diesem Beispiel wird nun gezeigt, wie man eine eigene Klasse erstellt. Erzeugt man ein Objekt dieser Klasse wird automatisch ein Fenster und ein Stift erzeugt. Alle Anweisungen an den Stift um eine Figur zu zeichnen werden zusammen gefasst in einer sog. //Methode//. Ruftman diese Methode auf, werden all diese Anwiesungen sofort aufgerufen ===== Klasse anlegen ===== Lege in blueJ ein neues Projekt an (//Projekt -> neues Projekt//). Klick auf den Button //Neue Klasse…// und gib als Klassennamen //Figuren// ein. Es erscheint ein gelbes Rechteck, das die Klasse repräsentiert. Um den Quelltext für die Klasse zu schreiben, mach ein Doppelklick auf dieses Rechteck oder klicke mit der rechten Maustaste darauf und wähle //Öffne Editor// Die Klasse wird mit einem Beispielquelltext gefüllt, der am Anfang aber nicht weiter hilft. Lösche ihn vollständig. (Z.B. STRG + A und dann Entf. drücken). ==== Grundgebühr einer Klasse ==== import jltk.*; public class Figuren { } import jltk.*; public class Figuren { Window meinFenster; Pen meinStift; public Figuren() { this.meinFenster = new Window(400,200); this.meinFenster.setTitle("Figuren"); this.meinStift = new Pen(); this.meinFenster.showGrid(); } public void rechteck() { this.meinStift.setPosition(150,50); this.meinStift.down(); this.meinStift.move(100); this.meinStift.turn(90); this.meinStift.move(100); this.meinStift.turn(90); this.meinStift.move(100); this.meinStift.turn(90); this.meinStift.move(100); this.meinStift.turn(90); this.meinStift.up(); } public void smiley(){ this.meinStift.setPosition(200,100); this.meinStift.drawCircle(50); this.meinStift.setPosition(180,80); this.meinStift.drawCircle(5); this.meinStift.setPosition(220,80); this.meinStift.drawCircle(5); this.meinStift.setPosition(185,125); this.meinStift.down(); this.meinStift.move(30); this.meinStift.up(); } public void strichmaennchen1(){ this.meinStift.setPosition(175,200); this.meinStift.down(); this.meinStift.setPosition(200,150); this.meinStift.setPosition(225,200); this.meinStift.up(); this.meinStift.setPosition(200,150); this.meinStift.setRotation(270); // Nach oben this.meinStift.down(); this.meinStift.move(60); this.meinStift.up(); this.meinStift.setPosition(200,100); this.meinStift.turn(112.5); this.meinStift.down(); this.meinStift.move(40); this.meinStift.up(); this.meinStift.setPosition(200,100); this.meinStift.turn(135); this.meinStift.down(); this.meinStift.move(40); this.meinStift.up(); this.meinStift.setPosition(200,75); this.meinStift.drawCircle(15); } public void strichmaennchen1Loeschen(){ this.meinStift.enableEraseMode(); //Radiermodus this.strichmaennchen1(); //Männchen im Radiermodus zeichen this.meinStift.enableDrawMode(); // ZUrück in den Malmodus } public void strichmaennchen2(){ this.meinStift.setPosition(155,125); this.meinStift.down(); this.meinStift.setPosition(200,150); this.meinStift.setPosition(250,125); this.meinStift.up(); this.meinStift.setPosition(200,150); this.meinStift.setRotation(270); // Nach oben this.meinStift.down(); this.meinStift.move(60); this.meinStift.up(); this.meinStift.setPosition(200,100); this.meinStift.turn(67.5); this.meinStift.down(); this.meinStift.move(40); this.meinStift.up(); this.meinStift.setPosition(200,100); this.meinStift.turn(225); this.meinStift.down(); this.meinStift.move(40); this.meinStift.up(); this.meinStift.setPosition(200,75); this.meinStift.drawCircle(15); } public void strichmaennchen2Loeschen(){ this.meinStift.enableEraseMode(); //Radiermodus this.strichmaennchen2(); //Männchen im Radiermodus zeichen this.meinStift.enableDrawMode(); // ZUrück in den Malmodus } public void animation(){ this.strichmaennchen1(); this.meinFenster.delay(1000); // 1000 Millisekunden (1s) warten this.strichmaennchen1Loeschen(); this.strichmaennchen2(); this.meinFenster.delay(1000); this.strichmaennchen2Loeschen(); this.strichmaennchen1(); this.meinFenster.delay(1000); this.strichmaennchen1Loeschen(); } }