Vielleicht noch etwas zum Thema Vererbung und die Probleme, wenn man es "falsch" macht.
Code:
public class Telefon
{
private string nummer;
public Telefon(string nummer)
{
this.nummer = nummer;
}
}
public class Person : Telefon
{
private string name;
public Person(string name, string nummer)
: base(nummer)
{
this.name = name;
}
}
Diese Konstruktion erfüllt zwar ihren Zweck (zu jeder Person kann eine Telefon hinterlegt werden), aber sie ist vom logischen falsch und macht spätere Anpassungen und Erweiterungen nur unnötig schwer.
Die Bedeutung dieser Konstruktion wäre ja:
Jede "Person" ist ein "Telefon" - was vom logischen ja Quatsch ist.
Besser wäre folgende Konstruktion:
Code:
public class Telefon
{
private string nummer;
public Telefon(string nummer)
{
this.nummer = nummer;
}
}
public class Person
{
private string name;
private Telefon telefon;
public Person(string name)
{
this.name = name;
}
public Telefon Telefon
{
get { return this.telefon; }
set { this.telefon = value; }
}
}
Jetzt hat jede Person ein Telefon - sie ist aber kein Telefon mehr.
Damit ist es auch wesentlich einfacher, bei einem vielleicht nötigen Refactoring, aus dem einen Telefon eine Liste von Telefonen zu machen.