Einzelnen Beitrag anzeigen
Alt 21.05.2015, 14:30   #3 (permalink)
Exit
Blödmarktkundenberater
 
Benutzerbild von Exit
 

Registriert seit: 10.04.2002
Beiträge: 10.666

Exit hat eine strahlende Zukunft
Exit hat eine strahlende ZukunftExit hat eine strahlende ZukunftExit hat eine strahlende ZukunftExit hat eine strahlende ZukunftExit hat eine strahlende Zukunft

Standard AW: Wie kann ich den Code optimieren?

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.
Power is nothing without Control!
Hauptsystem

Geändert von Exit (21.05.2015 um 22:22 Uhr)
Exit ist offline   Mit Zitat antworten
Für diesen Beitrag bedankt sich:
MisterSchue (23.09.2016)