Discussion:
Blatt 2, Aufg. 4
(zu alt für eine Antwort)
Christian Retzlaff
2005-05-08 00:50:21 UTC
Permalink
Hallo!

Irgendwie stolper ich bei der Aufgabe wohl son bischen über dieses
DrawingArea Interface... wie zur Hölle greif ich denn nun auf drawLine
bzw. drawCircle zu? Muss doch, wenn ich das richtig verstanden hab, in
LineFigure bei der Methode draw konkret definieren, wie die Ausgabe
funktioniert?
Hab zwar versucht diverses zu Interfaces nachzulesen, aber außer, dass
ich jetzt komplett verwirrt bin, den Code zig mal übern Haufen
geschmissen hab und immer noch keine funktionierende Zeile weiter bin,
hats mir nichts gebracht. *g*

Christian
elmi
2005-05-08 08:28:05 UTC
Permalink
Hi,

Im großen und ganzen ist die Aufgabe seeeehr unglücklich gestellt
worden. *sich bei den Tutoren beliebt mach* :)
Ein Beispiel mit nem Rechteck oder Punkt wäre aussagekräftiger gewesen.
Dann wäre eine größere Programmieraufgabe kein Problem.

Das ganze habe ich folgend aufgewurstelt:

In DrawingApp.java wird in der Zeile
"figure.add( new LineFigure(x1,y1,x2,y2) );"
aus der Text-Datei "line"/"circle" an CompositeFigure.java übergeben

-> dort solltst Du ja die Ausgabemethode
selbst implementieren (in der methode "add") und von dort aus arbeitest
Du mit "Vector" und dieses musst du ja ein paar Zeilen höher mit der
Methode "draw" implementieren.

-> Von dort aus gibt es ne Verbindung zu
"drawLine/drawCircle" (implement. in "DrawingAreaComponent") und dort
sind die gesuchten "Java-mal-mir-was-Befehle": z.B.:

currentGraphics2d.setPaint( Color.black );
currentGraphics2d.draw( new Line2D.Double(x1,y1,x2,y2) );


Christian Retzlaff wrote:
...
Post by Christian Retzlaff
Irgendwie stolper ich bei der Aufgabe wohl son bischen über dieses
DrawingArea Interface... wie zur Hölle greif ich denn nun auf drawLine
bzw. drawCircle zu?
Muss doch, wenn ich das richtig verstanden hab, in
LineFigure bei der Methode draw konkret definieren, wie die Ausgabe
funktioniert?
Das heißt, Du solltest nix weiter machen, als Dir die Files
CircleFigure/LineFigure/CompositeFigure und das Emoticon-Zeugs zu
vervollständigen.

Dort findest Du Klassen. Die haben Konstruktoren, brauchen
Instanzenvariablen und die dazugehörenden Methoden.

Mal Dir zuerst die Konstruktoren und Instanzvariablen von Linie und
Kreis fertig. (is nen Witz) Und schau nach, welche Methode Du in der
jeweiligen Draw-Methode nutzen kannst, um ne Linie/Kreis zu zeichen. Es
geht bei der Aufgabe nicht um das eigendliche Programmieren, sondern nur
um OO. Dort also nur etwas aufrufen, was nutzbar is - mehr nicht.

Danach geh in CompositeFigure und bau Dir nen dynamisches Array mit
"Vektor" auf. - Wieder nen Konstruktor, Instanzvariablen, Methode zum
durchlatschen des Arrays und ne Methode zum Hinzufügen eines Elementes
zum dynam. Array. --> Findet man auch in schlauen Büchern und in Doku,
wie man mit "Vektor" umgeht.

Puh, letzte Klarheiten beseitigt? *g*

Gruß,
Ellen
Ali Assi
2005-05-08 10:40:34 UTC
Permalink
hallo people
ich (eigentlich ein kumpel von mir),stolpern bei der aufgabe 4
wir schaffen nicht der anfang zu beseitigen,oder lieber sagen wir wissen
nicht wie wir anfagen sollen....
kann jmd uns helfen und mindst sagen wie wir anfangen sollen
waere sehr nett..
Tobias Deichmann
2005-05-08 14:50:34 UTC
Permalink
Post by Ali Assi
hallo people
ich (eigentlich ein kumpel von mir),stolpern bei der aufgabe 4
wir schaffen nicht der anfang zu beseitigen,oder lieber sagen wir
wissen nicht wie wir anfagen sollen....
kann jmd uns helfen und mindst sagen wie wir anfangen sollen
waere sehr nett..
Geht mir grade genau so, ich find einfach nicht den Anfang. Es hieß ja, es
soll irgendwie sehr einfach sein, dass eigentliche Programm zu schreiben und
es ginge einfach nur um die OO, doch irgendwie erkenn ich nicht, was ich
konkret machen soll. Wäre wirklich nett, wenn man hier irgendwie etwas
Unterstützung bekommen könnte sitze jetzt schon seit mehr als 10 Stunden vor
Aufgabe 4 und komm einfach nicht drauf.

Tobias
Christian Retzlaff
2005-05-08 10:55:39 UTC
Permalink
hmm... jetzt kapier ich nur noch nicht, wie ich aus dem CompositFigure
die draws der einzelnen Elemente des Vectors aufrufen kann.
draw(v.elementAt(i)); funktioniert schon mal nicht... elementAt liefert
ja nen Object... nur wenn ich jetzt nen Typecast nach DrawingArea mache,
wie das Argument für draw in LineFigure definiert ist, dann krieg ich
nen haufen hübscher roter Fehlermeldungen beim Ausführen. *grumble*
So langsam komm ich mir echt bescheuert vor, bei diesem ganzen OO-Kram.

Christian
Bert Buchholz
2005-05-08 12:13:57 UTC
Permalink
Post by Christian Retzlaff
hmm... jetzt kapier ich nur noch nicht, wie ich aus dem CompositFigure
die draws der einzelnen Elemente des Vectors aufrufen kann.
draw(v.elementAt(i)); funktioniert schon mal nicht...
Kann sorum ja auch nicht funktionieren. Draw() ist ja eine Methode
einer Figure, die eine DrawingArea als Argument bekommt.

((Figure)items.elementAt(i)).draw(area);
Post by Christian Retzlaff
So langsam komm ich mir echt bescheuert vor, bei diesem ganzen OO-Kram.
:-)

Bert
Christian Retzlaff
2005-05-08 16:03:53 UTC
Permalink
Post by Bert Buchholz
Post by Christian Retzlaff
hmm... jetzt kapier ich nur noch nicht, wie ich aus dem CompositFigure
die draws der einzelnen Elemente des Vectors aufrufen kann.
draw(v.elementAt(i)); funktioniert schon mal nicht...
Kann sorum ja auch nicht funktionieren. Draw() ist ja eine Methode
einer Figure, die eine DrawingArea als Argument bekommt.
((Figure)items.elementAt(i)).draw(area);
*arrrr* hätt ich auch selber drauf kommen können *intischkantebeiss* :-)

muss man da eigentlich noch den typecast machen oder kann man sich das
auch irgendwie sparen? (bei HashMap würde es glaub ich gehen, aber bei
Vector? *grübel*)

Christian
Ellen Michelsen
2005-05-08 16:10:02 UTC
Permalink
Christian Retzlaff wrote:
...
Post by Christian Retzlaff
*arrrr* hätt ich auch selber drauf kommen können *intischkantebeiss* :-)
Ging bei DER Aufgabe nicht nur Dir so :).
Post by Christian Retzlaff
muss man da eigentlich noch den typecast machen oder kann man sich das
auch irgendwie sparen? (bei HashMap würde es glaub ich gehen, aber bei
Vector? *grübel*)
So weit ich weiss, muss man typecast machen. Ich habe es ohne typecast
auf die schnelle nicht verbogen gekriegt. Ist ja eigendlich auch klar :).

Ellen
Günther Brammer
2005-05-09 21:19:07 UTC
Permalink
Post by Christian Retzlaff
muss man da eigentlich noch den typecast machen oder kann man sich das
auch irgendwie sparen?
Ich glaube, seit irgendeiner neueren Javaversion kann man Vectoren, die
nur einen bestimmten Typ enthalten dürfen, erstellen, ohne sich gleich
ne neue Klasse ableiten zu müssen. Was die andere Variante ist, wobei man
in diesem Fall da nicht von sparen reden kann...

(Man kann natürlich auch einfach eine andere Sprache nehmen :-P, oder
Arrays benutzen, was allerdings auch kein Sparen ist)

Günther
Juergen Nickelsen
2005-05-10 04:57:53 UTC
Permalink
Post by Günther Brammer
Ich glaube, seit irgendeiner neueren Javaversion kann man Vectoren, die
nur einen bestimmten Typ enthalten dürfen, erstellen, ohne sich gleich
ne neue Klasse ableiten zu müssen.
Ja, seit JDK 1.5 gibt es parametrisierte Klassen der Art
Vector<OtherClass>. Sehr praktisch. Das spart nicht nur einen
Typecast, sondern vor allem erhoeht es die Typsicherheit zur
Compile-Zeit.
--
If men could get pregnant, abortion would be a sacrament.
Lesen Sie weiter auf narkive:
Loading...