Script Java

Script Java Script Java

29.01.2014 Aufrufe

2.3 Vererbung, Konstruktor und Redefinition public Card(String title, String firstName, String familyName, String street, String zipCode, String city) { this.title = title; this.firstName = firstName; this.familyName = familyName; this.street = street; this.zipCode = zipCode; this.city = city; setTitle(firstName); setSize(240,160); setResizable(false); setVisible(true); } Wie man aus der Methodenschnittstelle entnehmen kann, hat Card() die sechs Parameter title, firstName, familyName, street, zipCode und city, bei welchen es sich wiederum, wie auch bei den Attributen der Klasse Card, um Texte handelt. Dass diese Parameter genau gleich heissen, wie die Attribute der Klasse, hat auf den Programmablauf keinen Einfluss. Um die Attribute von den gleichlautenden Parametern zu unterscheiden, wird das Schlüsselwort this verwendet. Das Schlüsselwort this bezeichnet dasjenige Objekt, welches der Empfänger der momentan ausgeführten Methode ist. Im Beispiel referenziert this somit diejenige Instanz der Klasse Card, die durch den Konstruktor gerade generiert wird. Betrachten wir die Anweisung this.title = title; Der ‘=‘-Operator bewirkt eine sogenannte Zuweisung (engl. assignment): das Attribut title des durch this referenzierten Objektes erhält den Wert des Parameters title; ein allfälliger früherer Wert dieses Attributes wird dabei überschrieben. Die Wertübergabe findet somit von rechts nach links statt. Der Aufruf des Konstruktors Card() erfolgt in der Methode actionPerformed(): new Card(title.getSelectedCheckbox().getLabel(), firstName.getText(), familyName.getText(), street.getText(), zipCode.getText(), city.getText()); Dieses Beispiel zeigt, wie ein Konstruktor aufgerufen wird: nach dem Schlüsselwort new folgt der Konstruktorname mitsamt Parameterliste. Die Parameter enthalten in diesem Beispiel die Texte, welche der Benutzer in die Textfelder der graphischen Benutzeroberfläche eingegeben hat. Da der Aufruf des Konstruktors in der Methode actionPerformed() passiert, wird jedesmal, wenn der Benutzer den Button PRINT aktiviert, ein neues Objekt der Klasse Card kreiert. Die Objekte der Klasse Card werden per Mauskilck, dynamisch zur Laufzeit des Programms, erzeugt. Jede Visitenkarte ist eine eigenständige Instanz der Klasse Card. 46

2.3 Vererbung, Konstruktor und Redefinition Ein Konstruktor dient dazu, eine Instanz einer Klasse zu erzeugen, indem Speicherplatz für das zu erzeugende Objekt alloziert wird und allfällige Attributwerte initialisiert werden, also einen Anfangswert erhalten. Erst nachdem ein Objekt durch einen Konstruktor erschaffen wurde, existiert es und kann mit anderen Objekten kommunizieren. Siehe auch: 2.3.2.1 2.3.1.3 Graphics und Fonts In den vorangegangenen Programmversionen haben wir die Adresse einer Person jeweils auf die Konsole ausgedruckt. Nun soll sie auf einer Instanz der Klasse Card erscheinen, so dass eine Visitenkarte entsteht. Damit wir aber auf ein solches Objekt der Klasse Card einen Text schreiben können, braucht der Interpreter Informationen über das Aussehen 1 und die Ausmasse unseres Objektes. Solche graphische Informationen sind für jede Component in ihrem dazugehörigen Graphics Objekt enthalten. Eine Instanz der in der Klassenbibliothek vordefinierten Klasse Graphics liefert den graphischen Kontext einer Komponente. Die in der Klasse Card deklarierte Methode paint() erhält als Parameter das zu einer Instanz der Klasse Card gehörende Graphics Objekt g: public void paint(Graphics g) { g.setFont(new Font("Helvetica",Font.PLAIN,12)); g.drawString(title+" "+firstName+" "+familyName,60,60); g.drawString(street,60,75); g.setFont(new Font("Helvetica",Font.BOLD,12)); g.drawString(zipCode+" "+city,60,90); } Dem Graphics Objekt g werden abwechslungsweise die Botschaften setFont() und drawString() geschickt, welche insgesamt den in Abbildung 2-6 ersichtlichen Ausdruck realisieren. Die Methoden drawString() wie auch setFont() sind bereits in der Klasse Graphics enthalten. Erstere erlaubt das Ausdrucken eines Strings, letztere das Festlegen der zu verwendenden Schriftart. Der erste Parameter der Methode drawString() ist der zu „zeichnende“ Text, die letzten zwei Parameter bestimmen die Positionierung des Strings innerhalb der Komponente, indem die x- bzw. y-Koordinaten der linken, unteren Ecke angegeben werden. 1 Es sei an dieser Stelle daran erinnert, dass die Darstellung graphischer Benutzeroberflächen von Plattform zu Plattform leicht variieren kann: eine Instanz eines Frame hat beispielsweise unter Windows 95 - im Gegensatz zu Windows 3.1 oder Mac - einen Schliess-Button. 47

2.3 Vererbung, Konstruktor und Redefinition<br />

Ein Konstruktor dient dazu, eine Instanz einer Klasse zu erzeugen, indem Speicherplatz für<br />

das zu erzeugende Objekt alloziert wird und allfällige Attributwerte initialisiert werden,<br />

also einen Anfangswert erhalten. Erst nachdem ein Objekt durch einen Konstruktor<br />

erschaffen wurde, existiert es und kann mit anderen Objekten kommunizieren.<br />

Siehe auch: 2.3.2.1<br />

2.3.1.3 Graphics und Fonts<br />

In den vorangegangenen Programmversionen haben wir die Adresse einer Person jeweils<br />

auf die Konsole ausgedruckt. Nun soll sie auf einer Instanz der Klasse Card erscheinen,<br />

so dass eine Visitenkarte entsteht. Damit wir aber auf ein solches Objekt der Klasse Card<br />

einen Text schreiben können, braucht der Interpreter Informationen über das Aussehen 1<br />

und die Ausmasse unseres Objektes. Solche graphische Informationen sind für jede<br />

Component in ihrem dazugehörigen Graphics Objekt enthalten. Eine Instanz der in der<br />

Klassenbibliothek vordefinierten Klasse Graphics liefert den graphischen Kontext einer<br />

Komponente.<br />

Die in der Klasse Card deklarierte Methode paint() erhält als Parameter das zu einer<br />

Instanz der Klasse Card gehörende Graphics Objekt g:<br />

public void paint(Graphics g) {<br />

g.setFont(new Font("Helvetica",Font.PLAIN,12));<br />

g.drawString(title+" "+firstName+" "+familyName,60,60);<br />

g.drawString(street,60,75);<br />

g.setFont(new Font("Helvetica",Font.BOLD,12));<br />

g.drawString(zipCode+" "+city,60,90);<br />

}<br />

Dem Graphics Objekt g werden abwechslungsweise die Botschaften setFont() und<br />

drawString() geschickt, welche insgesamt den in Abbildung 2-6 ersichtlichen<br />

Ausdruck realisieren. Die Methoden drawString() wie auch setFont() sind bereits<br />

in der Klasse Graphics enthalten. Erstere erlaubt das Ausdrucken eines Strings, letztere<br />

das Festlegen der zu verwendenden Schriftart.<br />

Der erste Parameter der Methode drawString() ist der zu „zeichnende“ Text, die<br />

letzten zwei Parameter bestimmen die Positionierung des Strings innerhalb der<br />

Komponente, indem die x- bzw. y-Koordinaten der linken, unteren Ecke angegeben<br />

werden.<br />

1 Es sei an dieser Stelle daran erinnert, dass die Darstellung graphischer Benutzeroberflächen von Plattform<br />

zu Plattform leicht variieren kann: eine Instanz eines Frame hat beispielsweise unter Windows 95 - im<br />

Gegensatz zu Windows 3.1 oder Mac - einen Schliess-Button.<br />

47

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!