11. december 2012 - 11:05Der er
7 kommentarer og 1 løsning
Få aktiveret konstruktøren i min klasse
Hej
Jeg har 2 klasser. Den ene er en Spiller-klasse, hvor konstruktøren har navn og point som parametre. Jeg har så også en TopScorerListe-klasse, hvor jeg skal putte Spiller-objekter ind i en arrayliste. I dennes konstruktør er navn og point også parametre, og jeg tilføjer et Spiller-objekt til min arrayliste.
Under min form instantierer jeg et TopScorerListe-objekt, og under min knap-kode instantierer jeg et Spiller-objekt, som tager navn og point fra tekstbokse, hvor de er tastet ind.
Mit problem er så.. Hvordan får jeg puttet det her Spiller-objekt ind i min arrayliste i TopScorerListe-klassen?
class TopScorerListe : Spiller //Arver fra Spiller-klassen { //En arrayliste til at holde Spiller-objekterne ArrayList topscorer=new ArrayList();
string _navn; int _point;
//Konstruktør public TopScorerListe(string n, int p) : base(n, p) { _navn = n; _point = p;
Spiller nySpiller = new Spiller(_navn,_point); topscorer.Add(nySpiller);
//Listen sorteres så den med flest point kommer først topscorer.Sort(); //Da listen kun må bestå af 10 personer, skal den 11'te slettes if (topscorer.Count > 10) { topscorer.RemoveAt(10); }
}
Mit problem er, hvad jeg skal gøre under 'formen'.. Jeg har min form med 2 tekstbokse, hvor man kan taste navn og point ind. Udenfor formen har jeg instantieret mit TopScorerListe-objekt. For det skal jo kun instantieres èn gang. Under 'knappen' instantierer jeg et Spiller-objekt, som henter navn og point i tekstboksene. Spørgsmålet er så.. hvad skriver jeg mere af kode under 'knappen', sådan at jeg fortæller programmet, at nu skal den smide mit spiller-objekt ind i arraylisten i Topscorerliste-objektet/klassen.
hmm.. TilføjScore burde nok være en metode på Spiller-objektet.
TopScore-listen skal kun vide at der findes en implementering af Spiller... ISpiller
Jeg ser ingen grund til nedarvning, nedarvning foretages kun når der er en "is a" - relation og ikke en "has a" - relation.
class TopScoreListe { ... public List<ISpiller> _spillers;
public TopScoreListe(List<ISpiller> spillers) { _spillers = spillers; } public List<ISpiller> CalculateTopScores() { ... og hvad du så ellers vil beregne her } }
Du kan kun acceptere svar. Jeg har kun lagt en kommentar. Normalt beder du den eller de som har lagt den/de kommentare som hjalp ligge et svar så kun kan accepter og dermed give dem point.
Hvad angår din kode. Så forstår jeg ikke din nedarvning. Hvorfor er en TopScoreListe en udvidelse af en spiller.
Du behøver ikke forsvare det over for mig hvis du mener det er korrekt. Omvendt hjælper jeg gerne hvis du vil have input til hvordan det ellers kunne gøres.
Så længe du har fået løst dit oprindelige problem - er det det vigtigeste. Bare husk at bede om et svar fra den som hjalp næste gang. :-)
Tak for svar begge to :-) Hvis jeg skal tildele point, må i lægge svar.. Men hvordan får jeg så lukket af her?
Det endte iøvrigt med, at TopScoreListe ikke arvede fra Spiller-klassen, og at jeg lavede en metode i Topscorerlisten, som henter Spilleren, der bliver tastet ind. Og så kunne jeg putte den i arraylisten.
Noget andet... skift din arraylist ud med List<Spiller>, det er mere rigtigt og ikke så C# 1.1 -agtigt :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.