Zweite Lösungsmöglichkeit

[Startseite]


Erste Anwendungen ] Anwendungen als Applets ] Probleme mit Applets ] Applets mit Netscape 4.x ]

Erste Lösungsmöglichkeit
Zweite Lösungsmöglichkeit
Dritte Lösungsmöglichkeit
2. Lösungsmöglichkeit

Zwei Methoden, eine zur Initialisierung und eine zum Zeichnen sollen implementiert werden:

public class RechteckProgramm2

{

private Bildschirm bildschirm;

private Stift stift;

private Maus maus;

public void init()

{

bildschirm=new Bildschirm();

stift = new Stift();

maus = new Maus();

}

public void gibFrei()

{

maus.gibFrei();

stift.gibFrei();

bildschirm.gibFrei();

}

public void zeichnen()

{

stift.hoch();

stift.bewegeBis(20,20);

stift.zeichneRechteck(100,100);

while (!maus.istGedrueckt()){;}

this.gibFrei();

}

public static void main(String[] s)

{

RechteckProgramm2 rp2;

rp2 = new RechteckProgramm2();

/* rp2 ist ein Objekt der Klasse RechteckProgramm2 */

rp2.init();

rp2.zeichnen();

}

}

 

Erläuterung:

 

Abgesehen von der "main"-Methode stehen die angegebenen Methoden und Variablen nur in Verbindung mit Objekten der Klasse RechteckProgramm2 zur Verfügung, sie sind nicht als Klassenmethoden oder Klassenvariablen deklariert. In der Methode main wird ein solches Objekt erzeugt durch Aufruf des Standardkonstruktors RechteckProgramm2 und es werden die Nachrichten init und zeichnen an dieses Objekt geschickt.

 

Gleichwertig zu obigem Programm ist das folgende, bei dem an Stelle von init ein Konstruktor deklariert wird:

 

public class RechteckProgramm3

{

private Bildschirm bildschirm;

private Stift stift;

private Maus maus;

public RechteckProgramm3()

/* Achtung: kein Rückgabetyp, auch kein "void" */

{

bildschirm=new Bildschirm();

stift = new Stift();

maus = new Maus();

}

public void gibFrei()

{

maus.gibFrei();

stift.gibFrei();

bildschirm.gibFrei();

}

public void zeichnen()

{

stift.hoch();

stift.bewegeBis(20,20);

stift.zeichneRechteck(100,100);

while (!maus.istGedrueckt()){;}

this.gibFrei();

}

 

public static void main(String[] s)

{

RechteckProgramm3 rp3;

rp3 = new RechteckProgramm3();

/* rp3 ist ein Objekt der Klasse RechteckProgramm3 */

rp3.zeichnen();

}

}

 

Die beiden letztgenannten Lösungsvarianten zeigen zwar Strukturierungsmöglichkeiten, die der erste Ansatz nicht erlaubte, allerdings ist die Kombination von Klassenmethoden und dynamischen Methoden in einer Klasse gerade im Anfangsunterricht didaktisch ungünstig. Folgende dritte Lösungsmöglichkeit bietet einen Ausweg:

 

 


Seitenanfang

© Georg Dick