none
verwenden von ArrayList in einer Klasse die dann Objekte übernehmen soll ?? RRS feed

  • Frage

  • Hallo !

    Ich hab eine Klasse Produkt mit den Feldern: Namen, Netto-Preis, Steuersatz.
    Jetzt möchte ich eine Klasse Warenkorb machen in der ein Feld (ArrayList) mit Produkt(Objekt) enthalten sein.


    Ich steh im moment voll auf der Leitung, weiß nicht wie ich die Klasse Warenkorb bauen soll sodaß Sie Produkte als Arraylist aufnehmen kann .... hmmmm ????

    Produkt-Klasse:
     class Produkte
      {
        private static int count;
    
        private string namen; 
        private double nettoPreis; 
        private decimal steuersatz;
    
        public int Count { get { return count; } }
    
        public string Namen
        {
          get { return namen; }
          set { namen = value ; }
        }
        public double NettoPreis
        {
          get { return nettoPreis; }
          set { nettoPreis = value; }
        }
        public decimal Steuersatz
        {
          get { return steuersatz; }
          set { steuersatz = value; }
        }
    
        public Produkte()
        {
          count++;
        }
    
        public Produkte(string namen, double nettopreis, decimal steuersatz)
        {
          count++;
          this.namen = namen;
          this.nettoPreis = nettopreis;
          this.steuersatz = steuersatz;
        }
        ~Produkte()
        {
          count--;
        }
        
    
        public override string ToString()
        {
    
          return Namen + ", " + "Euro " + nettoPreis.ToString("n3") + NettoPreis.ToString("c3") + ", " + Steuersatz.ToString("c2") + " %";
        }
    
      }

     

    Classe Warenkorb .... unfertig :-) ...

     class Warenkorb
      {
        private ArrayList liste;
    
    
        public Warenkorb(Produkte pro)
        { 
    
    
        
        }






     

    Freitag, 6. Mai 2011 09:28

Antworten

  • Wenn ich da richtig verstehe sucht du das hier :

    public class Cart
    {
     private List<Produkte> _cartItems;
    
     public Cart()
    {
     _cartItems = new List<Produkte>();
    }
    
    public void AddToCart(Produkt p)
    {
     _cartItems.Add(p);
    }
    
    public List<Produkte> CartItems
    {
    get{return _cartItems;}
    }
    
    }
    

     

    P.S. Natürlich kannst du die List<> Durch eine ArrayList ersetzten, würde ich persl. aber nicht mehr machen, da du dann nur schwer per Linq zB Daten suchen kannst etc.
    Freitag, 6. Mai 2011 09:52

Alle Antworten

  • Wenn ich da richtig verstehe sucht du das hier :

    public class Cart
    {
     private List<Produkte> _cartItems;
    
     public Cart()
    {
     _cartItems = new List<Produkte>();
    }
    
    public void AddToCart(Produkt p)
    {
     _cartItems.Add(p);
    }
    
    public List<Produkte> CartItems
    {
    get{return _cartItems;}
    }
    
    }
    

     

    P.S. Natürlich kannst du die List<> Durch eine ArrayList ersetzten, würde ich persl. aber nicht mehr machen, da du dann nur schwer per Linq zB Daten suchen kannst etc.
    Freitag, 6. Mai 2011 09:52
  • Hallo Pavel !

    Danke für die schnelle Lösung.

    Hab doch auch eine Lösung zustande gebracht ... :-), Was spricht gegen die nachfolgende Lösung, außer das Sie nicht generisch ist (daher nix für Linq) ?

     class Warenkorb
      {
        private ArrayList liste;
    
        
        public Warenkorb()
        {
          liste = new ArrayList();
        
        }
    
        public void addProduct(Produkte pro )
        {
          liste.Add(pro);
        }
    
        public override string ToString() 
        {
          StringBuilder sb = new StringBuilder();
    
          sb.AppendLine("Warenkorb");
          sb.AppendLine("Anzahl der Produkte:" + liste.Count);
    
          for (int i = 0; i < liste.Count; i++)
          {
            //sb.AppendLine((liste[i] as Produkte).ToString());
    
            sb.AppendLine(((Produkte)liste[i]).ToString()); 
          }
          return string.Empty;
        }
        
    
    
      }
    • Als Antwort vorgeschlagen Pawel Warmuth Freitag, 6. Mai 2011 10:45
    • Nicht als Antwort vorgeschlagen Pawel Warmuth Freitag, 6. Mai 2011 10:45
    • Als Antwort vorgeschlagen Pawel Warmuth Freitag, 6. Mai 2011 10:45
    Freitag, 6. Mai 2011 10:15
  • Deine Lösung ist auch ok.

    Aber durch viele Objekte in der ArrayList kann es wegen dem Boxing/Unboxing zu Performanceproblemen kommen.

    Ich sage bewusst es kann kommen, bei kleinen Anwendungen mit wenig Datenbestand merkt man es nicht.

    Bei einer Typisierten Liste muss kein Boxing/Unboxing gemacht werden (also Produkt zu Objekt und umgekehrt)

     

    Grüße

    Freitag, 6. Mai 2011 10:45