Java < Softwaretechnik+Pro < Praktische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 18:52 So 20.07.2008 | Autor: | SusaSch |
Hallo
Ich würde germe den Aufbau der Klasse Graphics wissen ( welche Attribute hat sie)?
Die Klasse hat ja eine Menge set Methoden(seColor...), aber auf Webseiten wo die Klasse vorgestellt wird ist nie die rede von Attributen...
Hat sie etwa keine?
LG Susi
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 20:37 So 20.07.2008 | Autor: | bazzzty |
Ich nehme an, Du beziehst Dich auf java.awt.Graphics.
Die Klasse könnte Attribute haben, aber das ist der Sinn von Kapselung: Du siehst, wie Du ein Objekt manipulieren kannst, aber nicht, wie sich das Objekt intern strukturiert.
Darüber hinaus ist diese Klasse im speziellen abstrakt, d.h. sie kann nicht instantiiert werden und definiert nur ein Verhalten, das alle Subklassen einhalten müssen.
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 20:46 So 20.07.2008 | Autor: | SusaSch |
Hey
ja genau die klasse meine ich. Wenn ich jetzt z.b. in einen applet das Graphics Object übergebe und dann dann (weil ich die Schriftart ändern will) die Methode setFont aufrufe, was passiert dann?
Ich hätte gedacht, das einem Attribut im GraficObject, dem vorher eine andere Schrift zugewiesen war jetzt die zugewiesen wird, die ich ihm mit dem Fondbject übergebe....
Lg Susi
|
|
|
|
|
> Hey
> ja genau die klasse meine ich. Wenn ich jetzt z.b. in einen
> applet das Graphics Object übergebe und dann dann (weil ich
> die Schriftart ändern will) die Methode setFont aufrufe,
> was passiert dann?
> Ich hätte gedacht, das einem Attribut im GraficObject, dem
> vorher eine andere Schrift zugewiesen war jetzt die
> zugewiesen wird, die ich ihm mit dem Fondbject übergebe....
Das Graphics Objekt ist nur ein Kontext für Grafikoperationen. Erst wenn Du mit diesem Graphics Objekt etwas schreibst, wird die Schrift mit den neuen Font geschrieben. Ändern des Fonts hat keinerlei Wirkung auf vorher mit diesem Graphics Objekt geschriebene Texte.
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 21:01 So 20.07.2008 | Autor: | SusaSch |
Hallo
Danke für deine Antwort, aber das war gar nicht die frage ;).
Meine frage war wo , wenn ich die setFont methode aufrufe das FontObjekt das ich übergebe hinkommt, wenn die Graphics Klasse keine Attribute hat ( bzw ich keine finde ;))...
Außerdem hab ich noch eine Frage:
Wenn die Graphics klasse abstract ist, also von ihr keine Instanzen erzeugt werden können, was wird dann zum Teufel der paint-Methode übergeben :(....?
LG Susi
|
|
|
|
|
> Hallo
> Danke für deine Antwort, aber das war gar nicht die frage
> ;).
>
> Meine frage war wo , wenn ich die setFont methode aufrufe
> das FontObjekt das ich übergebe hinkommt, wenn die Graphics
> Klasse keine Attribute hat ( bzw ich keine finde ;))...
Du brauchst nicht zu wissen, wo das Graphics Objekt die Information speichert. In der Regel hast Du jeweils Paare von setXXX() und getXXX() Methoden. Diese erlauben Dir, das betreffende "Attribut" zu schreiben und zu lesen: mehr brauchst Du nicht. Wenn Du mehr Zugriff hättest, würdest Du potentiell nur Unheil stiften, indem Du die interne Struktur des Graphics Objektes modifizieren könntest, ohne dass das Graphics Objekt selbst "merkt", dass Du was geändert hast. Wenn Du aber setXXX() rufen musst, um das "Attribut" XXX zu ändern, kann das Graphics Objekt eventuell mit dieser Änderung des Attributes verbundene weitere nötige Zustandsänderungen seiner Gesamtstruktur vornehmen.
>
> Außerdem hab ich noch eine Frage:
>
> Wenn die Graphics klasse abstract ist, also von ihr keine
> Instanzen erzeugt werden können, was wird dann zum Teufel
> der paint-Methode übergeben :(....?
Eine Instanz einer von Graphics abgeleiteten Klasse. Diese abgeleitete Klasse brauchst Du nicht zu kennen (das ist ja die Idee bei der Abstraktion). Aber diese Instanz wird vom System erzeugt und zur Verfügung gestellt.
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 21:31 So 20.07.2008 | Autor: | SusaSch |
hey
Also liege ich aber generell richtig, dass das Graphics Object die übergebene Referenz des Fondobjects in ein Attribut speichert(Auch wenn ich nicht weiß in welches...)
Es hat also Attribute...
Ich willimmer alles wissen ;), auch wenn ich es eigentlich nicht muss...
lg Susi
|
|
|
|
|
> hey
> Also liege ich aber generell richtig, dass das Graphics
> Object die übergebene Referenz des Fondobjects in ein
> Attribut speichert(Auch wenn ich nicht weiß in welches...)
> Es hat also Attribute...
> Ich willimmer alles wissen ;), auch wenn ich es eigentlich
> nicht muss...
Also formulieren wir es besser diplomatisch: das Graphics Objekt muss sich natürlich merken, welcher Font beim letzten setFont() angegeben worden ist. Wie und wo genau, das wissen nur die Java-Götter bzw. die Implementation der betreffenden von Graphics abgeleiteten Klasse, von der Deiner paint() Methode eine Instanz übergeben worden ist.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:38 So 20.07.2008 | Autor: | SusaSch |
Hey
Oki ich geb mich geschlagen und nehm das so hin ...:)
Vielen Dankf für deine Hilfe..
LG Susi
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:44 So 20.07.2008 | Autor: | Somebody |
> Hey
> Oki ich geb mich geschlagen und nehm das so hin ...:)
> Vielen Dankf für deine Hilfe..
Diese Art von "Information Hiding", bei dem Dir also genaue Detailkenntnis der Implementation der fraglichen Klasse vorenthalten wird, ist eben eine nützliche Methode grosse Softwaresysteme weniger änderungsempfindlich zu machen. Wenn Dein Programm von der aktuellen Implementation abhängig wäre, müsste Dein Code nach einer Änderung der Implementation der fraglichen Klasse mit erhöhter Wahrscheinlichkeit auch geändert werden.
Bleibt aber bei der Änderung der Implementation der von Graphics abgeleiteten Klasse das "Interface" (= die Definition der "abstrakten Klasse" Graphics) dieselbe, muss Dein Code garantiert nicht geändert werden.
|
|
|
|