29.01.2014 Aufrufe

Script Java

Script Java

Script Java

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

2.4 Instanzvariablen und Klassenvariablen<br />

private static int cardCount = 0;<br />

Das Schlüsselwort static macht klar, dass es sich um eine Klassenvariable handelt. Im<br />

Gegensatz dazu sind sämtliche andere Attribute der Klasse Card und auch der Klasse<br />

UserFrame Instanzvariablen, da sie kein static vorangestellt haben.<br />

Schauen wir uns zuerst einmal an, wofür wir die Klassenvariable cardCount überhaupt<br />

benötigen. Sie wird allein in den zwei Zeilen<br />

setBounds(200+20*cardCount,0+20*cardCount,240,160);<br />

cardCount++;<br />

verwendet. setBounds() ist eine Methode der Klasse Component. Ähnlich wie die<br />

Methode setSize() ermöglicht sie das Festsetzen der Breite und Höhe (letzte zwei<br />

Parameter) einer Component. Im Unterschied zu dieser kann man aber mittels<br />

setBounds() die Component zusätzlich noch in ihrer Lage verschieben, indem man<br />

die Koordinaten der linken oberen Ecke (erste zwei Parameter) angeben kann 1 . Die<br />

Anweisung cardCount++ bewirkt, dass der Wert der Klassenvariablen cardCount<br />

um eins erhöht wird.<br />

Wenn das erste Mal der Konstruktor Card() aufgerufen wird, hat cardCount den Wert<br />

Null: die Klassenvariable wurde ja bei ihrer Deklaration gerade damit initialisiert. Die<br />

erste Instanz der Klasse Card wird also an der Stelle x = 200+20*0 = 200 und y =<br />

0+20*0 = 0 positioniert. Da nach dem Aufruf von setBounds() der Wert von<br />

cardCount um eins erhöht wird, wird die als zweite generierte Instanz an der Stelle x =<br />

200+20*1 = 220 und y = 0+20*1 = 20 plaziert. Weil cardCount mit jedem Aufruf des<br />

Konstruktors um eins erhöht wird und somit die x- bzw. y-Koordinaten jeweils um 20<br />

anwachsen, erscheinen die Visitenkarten auf dem Bildschirm leicht versetzt.<br />

Die Variable cardCount ist also ein Zähler, welcher die Anzahl der Instanzen der<br />

Klasse Card festhält. Was bedeutet dies nun, dass cardCount eine Klassenvariable ist?<br />

Die Klasse Card hat die Instanzvariablen title, firstName, familyName,<br />

street, zipCode und city, welche alle als Wert einen Text haben. Es ist klar, dass<br />

die Werte dieser Variablen von Instanz zu Instanz unterschiedlich ausfallen können, da<br />

man ja mehrere Personen erfassen und deren Visitenkarten ausgeben kann: so gibt es<br />

beispielsweise den Wolfgang Amadeus Mozart, aber auch seine Frau Konstanze Mozart.<br />

Bei diesen Variablen handelt es sich um Attribute, die gewissermassen eine einzelne<br />

Instanz beschreiben und somit mit einer Instanz assoziiert sind, weshalb man sie als<br />

Instanzvariablen bezeichnet.<br />

1 Die Methode setBounds() wird neben der Methode add(), welche eine Methode der Klasse<br />

Container ist, auch in der Methode place() verwendet. Dort wird zuerst eine Component mittels<br />

setBounds() relativ positioniert und danach mittels add() dem Container, also einer Instanz der<br />

Klasse UserFrame, hinzugefügt.<br />

54

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!