Entwickler-Ecke

C# - Die Sprache - Verständnisproblem


kiar - Sa 03.12.05 13:43
Titel: Verständnisproblem
moin,

habe 2 Klassen, wobei eine von der ersten abgeleitet werden soll.

Dort habe ich ein property Kilometer


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
// die Basis
private int kilometer;
public virtual int Kilometer
{
  get { return kilometer;}
  set { kilometer = value;}
}

// die Ableitung
private int kilometer;
public override int Kilometer
{
   get { if (kilometer >= base.Kilometer)
             return kilometer;
         else
             return 0;
       }
   set { kilometer = value;}
}


leider wird in der abgeleiteten Klasse auch eine Angabe akzeptiert, welche kleiner als die Basis ist.

was mache ich verkehrt?

raik


Christian S. - Sa 03.12.05 13:46

Was meinst Du denn mit "akzeptiert"? Die Abfrage ist doch im Getter und nicht im Setter :gruebel:


Robert_G - Sa 03.12.05 13:55

Wie Christian bereit schrieb: Packe die Prüfung in den Setter.
Außerdem verschwendest du so Resourcen. ;)
Deine Ableitung besitzt jetzt 2 Felder kilometer. Eins vom Vorgänger und das von ihr selbst.
Es wäre vllt besser in der überschriebenen property auf die property des Vorgängers zuzugreifen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
public override int Kilometer
{
  get { return base.Kilometer; }
  set
  {
    if (value >= base.Kilometer)
      base.Kilometer = value;
    else
      ...;
  }
}
Schon sparst du dir das unnütze Feld im Nachfolger. (Felder kosten Speicher, properties nicht ;) )


kiar - Sa 03.12.05 14:15

juuuuut,

mit der setter war ein denkfehler :oops:

aber auch wenn ich den einen kleineren Wert in die Ableitung schreibe wird diese übernommen, obwohl es doch nicht sein dürfte.

raik

edit// ausserdem wird gemeckert, das ich auf kilometer von base nicht zugreifen kann, auf grund der sicherheitsebene


Robert_G - Sa 03.12.05 14:37

Zitat:
aber auch wenn ich den einen kleineren Wert in die Ableitung schreibe wird diese übernommen, obwohl es doch nicht sein dürfte.
Kannst du es dir nochmal ankieken? Oder einfach geneau sagen wo der Schuh drückt?
Zitat:
edit// ausserdem wird gemeckert, das ich auf kilometer von base nicht zugreifen kann, auf grund der sicherheitsebene
Sorry, mein Fehler.
Hatte ein kilometer (man beacht das kleine k) vergessen mit value zu ersetzen.


kiar - Sa 03.12.05 15:46

Ich habe hier eine Hinfahrt und eine Rückfahrt. logisch ist, das der Kilometerstand nach der Rückfahrt höher sein muss als es bei der Hinfahrt war.( ich Held :shock: ).

Retour ist die abgeleitet Klasse von Hinfahrt.
Ich möchte erreichen, das es nicht sein kann, das der Kilometerstand bei der Rückfahrt nicht kleiner sein kann als bei der Hinfahrt.

OT... kann mir mal jemand sagen wie ich vernünftig debuggen kann in #d , oder mir mal zeigen wo es eine Anleitung darüber gibt.


danke Raik


Christian S. - Sa 03.12.05 15:51

Aber die Kilometerzahl wird ja nicht in der Klasse, sondern in der Instanz einer Klasse gespeichert. Wie verknüpfst Du denn die Instanz der Hinfahrt-Klasse mit der Instanz der Rückfahrt-Klasse?


kiar - Sa 03.12.05 16:00

:oops: das ist doch mal ne gute Frage, die ich dir garnicht beantworten kann, werde wohl noch ne methode schreiben müssen.

naja OOP ist für mich nicht so einfach und dann noch mit einer , für mich, neuen Sprache.

danke raik


Robert_G - Sa 03.12.05 22:35

user profile iconkiar hat folgendes geschrieben:
OT... kann mir mal jemand sagen wie ich vernünftig debuggen kann in #d , oder mir mal zeigen wo es eine Anleitung darüber gibt.
Schaue dir mal den Clr-Debugger an. Wie du ihn benutzt sollte im #d Wiki stehen. ;)
#d2 bringt selbst einen Debugger mit...


Christian S. - So 04.12.05 03:00

Weitergehende Diskussionen dazu dann aber bitte in einem eigenen Thread! :mahn: ;-)