Problem mit abgeleiteten Klassen
-
Für ein Minispiel habe ich mir eine Klasse Charakter erstellt:
class Character { public int strength; public virtual void Values() { strength = 0; } }
Dazu dann mehrere Klassen, wie z.B. Elf, die dann die Werte nach Rassentyp überschreiben sollen:
class Elf : Character { public string tribe; public string character; public string profession; public Elf(string tribe, string character, string profession) { this.tribe = tribe; this.character = character; this.profession = profession; } public override void Values() { strength = 4; } }
Wenn ich jetzt eine Fallunterscheidung mache, dann funktioniert das sehr gut:
Charakter chara = new Charakter(); if (comboBoxTribe.Text == "Mensch") { Mensch mensch = new Mensch(comboBoxTribe.Text, comboBoxClass.Text, comboBoxProfession.Text); chara = mensch; mensch.Values(); } if (comboBoxTribe.Text == "Elf") { Elf elf = new Elf(comboBoxTribe.Text, comboBoxClass.Text, comboBoxProfession.Text); chara = elf; elf.Values(); }
chara.strength hat nun den Wert 4, wenn comboBoxTribe.Text = "Elf" ist.
Nun möchte ich aber auch Elfen noch vom tribe unterscheiden, z.B. Waldelf oder Hochelf. Man könnte jetzt ja in der Klasse Elf für jedes Value eine Fallunterscheidung nach tribe durchführen. Dadurch wird aber der Code unübersichtlich. Schicker wäre wohl eine weitere Hilfsklasse z.B. Waldelf, nur tue ich mich schwer damit, weil wenn ich Waldelf von Klasse ableite, dann wird wieder die Fallunterscheidung im Hauptprogramm unschön groß, wenn ich dann aber Waldelf von Elf ableite meckert er den Konstruktor an:
class Waldelf : Elf { public string character; public string profession; public Waldelf(string character, string profession) { this.character = character; this.profession = profession; } public override void Values() { strength = 5; } }
-
class Waldelf : Elf { public Waldelf(string character, string profession):base("Waldelf",character,profession) { } public override void Values() { strength = 5; } }