Avatar billede Orange_juice Nybegynder
11. december 2012 - 11:05 Der 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?
Avatar billede platik Nybegynder
11. december 2012 - 13:55 #1
Ud fra hvad jeg forstod.

Så ville jeg lave en metode på TopScoreListe.

public void TilføjScore(Spiller spiller)
{
  //Tjek evt. om score er høj nok til listen?

  //Tilføj spiller til arraylist.
  spillerListe.Add(spiller);
}
Avatar billede Orange_juice Nybegynder
11. december 2012 - 14:44 #2
Det har jeg vel lavet med min konstruktør...

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.
Avatar billede Orange_juice Nybegynder
11. december 2012 - 18:48 #3
Tak Platik :-)

Dit svar virkede... Skulle bare lige se sammenhængen.
Avatar billede Orange_juice Nybegynder
11. december 2012 - 18:51 #4
Hvorfor kan jeg kun acceptere det, som jeg selv har skrevet?
Avatar billede janus_007 Nybegynder
13. december 2012 - 08:29 #5
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
}
}

Just my 2 cent :)
Avatar billede platik Nybegynder
13. december 2012 - 08:33 #6
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. :-)
Avatar billede Orange_juice Nybegynder
13. december 2012 - 11:48 #7
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.

Endnu engang tak for hjælpen :-)
Avatar billede janus_007 Nybegynder
13. december 2012 - 23:18 #8
Det lyder langt bedre :)

Noget andet... skift din arraylist ud med List<Spiller>, det er mere rigtigt og ikke så C# 1.1 -agtigt :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester