C# Objektorientierte Programmierung bereitet mir noch Kopfschmerzen

Hier das Prinzip wie es geht:
Code:
public class Prozessor extends Hardware{
  private int kerne;
  public Prozessor(string name, string hersteller, string modelname, int preis, int kerne, int threads, string mhz, bool turbo, bool multiplikator, string cache) : base(name, hersteller, modelname, preis) {
    this.kerne = kerne;
    ...
  }
}

public class Hardware{
  private string name;
  public Hardware(string name, string hersteller, string modelname, int preis) {
    this.name = name;
    ...
  }
  
  public String getName() {
    return name;
  }
}


Prozessor[] prozessoren = new Prozessor[...];
Prozessor i52500K = new Prozessor("Intel i5 2500K", "Intel", "i5 2500K", 180, 4, 4, "3.30Ghz", true, true, "L3 6MB shared");
prozessoren[0] = i52500K;
prozessoren[1] = ...;

...
for (int i=0; i < prozessoren.length; i++) {
  myComboBox.AddItem(prozessoren[i].getName());
}
 
Warum nicht gleich mit Properties machen
Code:
public string Name {get;set;};

wäre ja das gleiche wie

Code:
private string _Name;

public string getName()
{
   return _Name;
}

public void setName(string pName)
{
   _Name=pName
}

oder

Code:
private string _Name;
public string Name
{
   get
   {
      return _Name;
   }
   set
   {
      _Name=value;
   }
}
 
im public MainWindows hab ich jetzt stehen:
Code:
            Prozessor[] prozessoren = new Prozessor[B][1][/B];
            Prozessor i52500K = new Prozessor("Intel i5 2500K", "Intel", "i5 2500K", 180, 4, 4, "3.30Ghz", true, true, "L3 6MB shared");
            
            prozessoren[0] = i52500K;
            
            for (int i = 0; i < prozessoren.Length; i++)
            {
                comboBox1.Items.Add(prozessoren[i].getName());
            }
Was kommt denn in [] bei Prozessor[] prozessoren = new Prozessor[...]; ?

Und unter meiner Klasse Hardware hab ich eingefügt:
Code:
        public String getName()
        {
            return Name;
        }


Wenn ich dann das Prog debugge kommt: "TargetInvocationException wurde nicht behandelt".
 
in die [..] Klammer kommt die Anzahl der Prozessoren, die du im Array Speichern willst.
Sonst schick mir mal die Source und ich kann mir dann anschauen was nicht passt.
 
Wenn es nur für dich zur Übung ist und du mit OOP noch nicht so viel zu tun hattest, würde ich definitiv mal etwas kleiner anfangen. Es geht zwar natürlich noch viel komplexer, aber für einen Anfänger ist das imho etwas zu viel auf einma, vor allem gleich mit WPF.
Fang erst mal mit kleineren Übungen an (gibt im Internet viele Tutorials), um in die Sprache reinzukommen und das Konzept der Objekte usw. zu verstehen :).
 
So das Programm ist jetzt fast fertig. Fehlen noch 2 Sachen und bei einer komme ich grad nicht weiter.

Und zwar hab ich ein Event erstellt wenn irgendwas in den comboboxen geändert wird soll was passieren.
Und zwar soll passieren, das er den Preis von allen in den Comboboxen ausgewählten Items errechnet und im labelgesamt ausgibt.

Ich hatte gedacht es geht ganz einfach:

Code:
labelgesamt.Content = (cpuBox.SelectedItem.getPreis) + (mbBox.SelectedItem.getPreis) .......;

Irgendwie funktioniert mein getPreis aber nicht.
Der Preis liegt als int vor in Klasse Hardware und vererbt ja an alle anderen Klassen (Prozessor, Mainboards usw.)
Somit hab ich in Klasse Hardware noch hinzugefügt:

Code:
        public int getPreis()
        {
            return Preis;
        }
 
Zuletzt bearbeitet:
getPreis ist auch eine Methode, also müssen Klammern hinter den Aufruf.
 
Zurück
Oben