Laden...

Konstruktor mit Parameter vom Typ "List" bestehend aus Objekten einer Klasse

Erstellt von tlustis vor 7 Jahren Letzter Beitrag vor 7 Jahren 2.462 Views
T
tlustis Themenstarter:in
5 Beiträge seit 2016
vor 7 Jahren
Konstruktor mit Parameter vom Typ "List" bestehend aus Objekten einer Klasse

Hallo,

habe gerade vor kurzem erst mit dem Programmieren angefangen und noch einige Probleme mit den Zusammenhängen. Vtt könnt ihr mir weiterhelfen

Folgende Problematik:

Ich habe ein Bauteilklasse (Bauteil) mit Bauteilnummer als integer, Bauteilname als String....
Weiter habe ich eine Materiaklasse (Material) mit Materianummer (integer), Materialname(string).

Die Überlegung war, dass das ein Bauteil mehrere Materiale haben könnte, deshalb also:
List<Material> mList;
als Attribut besitzt.

Da ich später durch Eingaben in der Textbox Bauteilobjekte erzeugen will benötige ich ja einen Konstruktor nach dem Motto:

 public Bauteil(int ID, string name)
{ Bauteilnummer = ID; 
   Bauteilname = name;
}

Wie aber funktioniert das ganze wenn ich das Listenattribut habe? wie bekomme ich das in den Konstruktor rein?

H
523 Beiträge seit 2008
vor 7 Jahren

Du kannst die Liste z. B. direkt im Konstruktor übergeben:


    public class Bauteil
    {
        public int Bauteilnummer { get; set; }
        public string Bauteilname { get; set; }
        public List<Material> Materialien { get; set; }

        public Bauteil(int id, string name, List<Material> materialien)
        {
            this.Bauteilnummer = id;
            this.Bauteilname = name;
            this.Materialien = materialien;
        }
    }

Wenn Du die Liste nicht im Konstruktor übergeben möchtest, wäre das hier eine Möglichkeit:


    public class Bauteil
    {
        public int Bauteilnummer { get; set; }
        public string Bauteilname { get; set; }
        public List<Material> Materialien { get; set; }

        public Bauteil(int id, string name)
        {
            this.Bauteilnummer = id;
            this.Bauteilname = name;
            this.Materialien = new List<Material>();
        }
    }

    public class Material
    {
        public string name { get; set; }
    }

Hinzufügen von Materialien ginge dann so:


            Bauteil bauteil = new Bauteil(1, "Autoreifen");
            bauteil.Materialien.Add(new Material { name = "Felge" } );
            bauteil.Materialien.Add(new Material { name = "Reifen" });
            bauteil.Materialien.Add(new Material { name = "Schrauben" });

Auch mehrere Konstruktoren mit unterschiedlichen Signaturen (z. B. mit und ohne Materialliste) sind möglich.

P
1.090 Beiträge seit 2011
vor 7 Jahren

Da ich später durch Eingaben in der Textbox Bauteilobjekte erzeugen will benötige ich ja einen Konstruktor nach dem Motto:

Mehr oder weniger Standard ist hier eine Detailansicht zu machen, in der du ein neu Bauteil erzeugst und nur den Standard Konstruktor Benutzt ( new Bauteil() ). Die Werte werden dann an die Textboxen gebunden (mal nach c# Databinding googlen). Für da Material wirst du dann einen Bereich haben, in dem du neue Elemente der Liste hinzufügen kannst.

Werte die für ein Objekt durch einen Benutzer eingegeben werden müssen, eignen sich nicht unbedingt für einen Konstruktor (außer man kann Default Werte vorgeben, auch da gibt es andere Wege), die Eingabe muss meisten im Anschluss noch mal Validiert werden.

Sollte man mal gelesen haben:

Clean Code Developer
Entwurfsmuster
Anti-Pattern

T
tlustis Themenstarter:in
5 Beiträge seit 2016
vor 7 Jahren
Danke :D

Super ich bedanke mich bei euch, das war echt sehr hilfreich. Vor allem @hypersurf für die anschaulichen Beispiele.