Script Java
Script Java Script Java
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
- Seite 1 und 2: I nhaltsverzeichnis 1 EINFÜHRUNG..
- Seite 3 und 4: 3.3 ZUSAMMENFASSUNG ...............
- Seite 5 und 6: 11.1 TURTLE-GEOMETRIE..............
- Seite 7 und 8: 1.1 Objektorientierung 1Objektorien
- Seite 9 und 10: 1.1 Objektorientierung 1.1.3 Objekt
- Seite 11 und 12: 1.2 Programm Auf Programmebene bewi
- Seite 13 und 14: 1.2 Programm Rotkäppchen.backKuche
- Seite 15 und 16: 1.2 Programm Anweisungen ausführen
- Seite 17 und 18: 1.3 Java Für einen Java-Programmie
- Seite 19 und 20: 1.4 Zusammenfassung So wie man bei
- Seite 21 und 22: 2.1 Programmaufbau, Attribute und M
- Seite 23 und 24: 2.1 Programmaufbau, Attribute und M
- Seite 25 und 26: 2.1 Programmaufbau, Attribute und M
- Seite 27 und 28: 2.1 Programmaufbau, Attribute und M
- Seite 29 und 30: 2.1 Programmaufbau, Attribute und M
- Seite 31 und 32: 2.1 Programmaufbau, Attribute und M
- Seite 33 und 34: 2.1 Programmaufbau, Attribute und M
- Seite 35 und 36: 2.1 Programmaufbau, Attribute und M
- Seite 37 und 38: 2.2 Checkbox } } place(familyName=n
- Seite 39 und 40: 2.3 Vererbung, Konstruktor und Rede
- Seite 41 und 42: 2.3 Vererbung, Konstruktor und Rede
- Seite 43 und 44: 2.3 Vererbung, Konstruktor und Rede
- Seite 45: 2.3 Vererbung, Konstruktor und Rede
- Seite 49 und 50: 2.3 Vererbung, Konstruktor und Rede
- Seite 51 und 52: 2.4 Instanzvariablen und Klassenvar
- Seite 53 und 54: 2.4 Instanzvariablen und Klassenvar
- Seite 55 und 56: 2.5 Zusammenfassung Im Gegensatz da
- Seite 57 und 58: 3.1 int, boolean und Programmstrukt
- Seite 59 und 60: 3.1 int, boolean und Programmstrukt
- Seite 61 und 62: 3.1 int, boolean und Programmstrukt
- Seite 63 und 64: 3.1 int, boolean und Programmstrukt
- Seite 65 und 66: 3.1 int, boolean und Programmstrukt
- Seite 67 und 68: 3.1 int, boolean und Programmstrukt
- Seite 69 und 70: 3.1 int, boolean und Programmstrukt
- Seite 71 und 72: 3.1 int, boolean und Programmstrukt
- Seite 73 und 74: 3.1 int, boolean und Programmstrukt
- Seite 75 und 76: 3.1 int, boolean und Programmstrukt
- Seite 77 und 78: 3.1 int, boolean und Programmstrukt
- Seite 79 und 80: 3.1 int, boolean und Programmstrukt
- Seite 81 und 82: 3.1 int, boolean und Programmstrukt
- Seite 83 und 84: 3.1 int, boolean und Programmstrukt
- Seite 85 und 86: 3.1 int, boolean und Programmstrukt
- Seite 87 und 88: 3.1 int, boolean und Programmstrukt
- Seite 89 und 90: 3.1 int, boolean und Programmstrukt
- Seite 91 und 92: 3.1 int, boolean und Programmstrukt
- Seite 93 und 94: 3.1 int, boolean und Programmstrukt
- Seite 95 und 96: 3.1 int, boolean und Programmstrukt
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