Autor Beitrag
kiar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 51



BeitragVerfasst: Sa 03.12.05 13:43 
moin,

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

Dort habe ich ein property Kilometer

ausblenden 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 03.12.05 13:46 
Was meinst Du denn mit "akzeptiert"? Die Abfrage ist doch im Getter und nicht im Setter :gruebel:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Robert_G
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 416


Delphi32 (D2005 PE); Chrome/C# (VS2003 E/A, VS2005)
BeitragVerfasst: 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:
ausblenden 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 ;) )


Zuletzt bearbeitet von Robert_G am Sa 03.12.05 14:33, insgesamt 1-mal bearbeitet
kiar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 51



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 416


Delphi32 (D2005 PE); Chrome/C# (VS2003 E/A, VS2005)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 51



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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?

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
kiar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 51



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 416


Delphi32 (D2005 PE); Chrome/C# (VS2003 E/A, VS2005)
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 04.12.05 03:00 
Weitergehende Diskussionen dazu dann aber bitte in einem eigenen Thread! :mahn: ;-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".