Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Java » statische Variable in Superklasse?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
16.01.2007, 17:32 Uhr
Pler
Einer von Vielen
(Operator)


Hallo!

Ich habe ne abstrakte Klasse Form. Davon sind Dreieck und Rechteck abgeleitet.

Die Objekte von Dreieck und Rechteck sollen durchnummeriert werden. (getrennt)
Dafür braucht man ne statische Variable, die mitzählt wie viele schon existieren.
Und natürlich eine, die sich für jedes Objekt selbst die nummer hält.

Die nummer selber kann natürlich als protected in die super-Klasse.
Aber die static-Variable zum zählen, wo kann ich die hintun? Gibts sowas wie ne abstrakte Variable?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.01.2007, 19:54 Uhr
KaraHead




Zitat:

Dafür braucht man ne statische Variable, die mitzählt wie viele schon existieren.
Und natürlich eine, die sich für jedes Objekt selbst die nummer hält.


Ist das eine Vorgabe oder hast Du dir das ausgedacht? Hört sich für mich recht umständlich und unsauber an.

Ich würde dir zu dem Factory-Pattern raten.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.01.2007, 19:59 Uhr
Pler
Einer von Vielen
(Operator)


Nene. Das habe ich mir gedacht. Bin aber auch zum Schluss gekommen, dass das wohl nicht so geht. Jedenfalls nicht ohne Krampf.
Wenn man in der Superklasse weiß, welche Klassen abgeleitet werden, dann könnte man einfach was machen. Aber das ist ja auch Dreck.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.01.2007, 12:59 Uhr
stephanw
localhorst


Ich verstehe das Problem nicht ganz. Willst Du zählen, wieviele Form-Objekte es gibt ? Dann erweitere die Klasse Form um eine private statische Zählvariable und zähle diese im Form-Konstruktor hoch. Dazu kommt natürlich die Nummer pro Objekt und eine Funktion zum Abfragen derselben.

Wenn Du das getrennt haben willst für Dreiecke und Rechtecke jeweils separat, dann musst Du das auch separat in diesen Klassen machen.

Ich kenn mich jetzt mit Java nicht so gut aus, aber wenn Du in der Basisklasse (= Form) dennoch getrennt zählen willst, um denselben Code nicht immer wieder in den Ableitungen zu haben, kannst Du sicher auch Folgendes machen (Pseudocode):


Code:
abstract class Form
{
  private static Hash s_InstanceCounter; // key: string, value: unsigned int

  private static unsigned int idForNewObject( Form form )
  {
    s_InstanceCounter[ form.typeName() ] += 1;
    return s_InstanceCounter[ form.typeName() ];
  }

  public Form()
  {
    this.id = idForNewObject( this );
  }
}


Der konkrete Typ ist egal, er wird nur als eindeutiger Schlüssel für die Hash-Tabelle verwendet. Vielleicht geht ja sowas.
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
18.01.2007, 21:42 Uhr
Pler
Einer von Vielen
(Operator)


Ja, du hast das schon verstanden. Hab's ja nun letztendlich getrennt gemacht. Ich dachte nur, weil beide abgeleitete Klassen ja eine Zählvariable brauche, und das könnte man ja auch als gemeinsame Eigenschaft sehen. Aber eigentlich auch nicht.

Cooler Ansatz. Irgendwann programmiere ich das mal irgendwo rein.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
19.01.2007, 09:33 Uhr
stephanw
localhorst



Zitat:

Cooler Ansatz. Irgendwann programmiere ich das mal irgendwo rein.


Die Idee kam mir auch erst beim Schreiben, deswegen steht einleitend in meiner ersten Antwort noch drin, dass Du das getrennt machen müsstest. Wenn das aber funktioniert, hast Du den Code nur an einer Stelle. Derzeit hast Du den Code in jeder Ableitung, was nicht gut ist. Darum würde ich das gleich so machen, nicht erst irgendwann.
--
Reden ist Schweigen und Silber ist Gold.

Dieser Post wurde am 19.01.2007 um 09:34 Uhr von stephanw editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
19.01.2007, 19:42 Uhr
Pler
Einer von Vielen
(Operator)


Nee, das ist doch nur einen Übung. Die wollten dann bestimmt, dass man das so macht. Aber deine Idee ist gut, wenn ich sowas selber mal brauche.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Java ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: