Avatar billede chr.kj Nybegynder
12. december 2008 - 16:16 Der er 3 kommentarer og
1 løsning

Hjælp til validering.

Jeg vil gerne ”validere” om antallet af medlemmer der er tilmeldt et hold overskrides.

I min hold klasse har jeg en klassevariabel der hedder maxAntalDeltagere som er en Integer.
I samme klasse har jeg en metode som hedder:

Public int getMaxAntalDeltagere()
{
Return maxAntalDeltagere();
}

Og mine to metoder til at tilmelde et medlem til enten ventelisten eller til den ”rigtige” liste:

public void tilmeldMedlemTilHold( Medlem obj)
{
holdTilmeldingsliste.add( obj )
}

public void tilmeldMedlemTilVenteliste( Medlem obj)
{
holdVenteliste.add( obj )
}


I min HoldListe klasse har jeg en metode som søger min ArrayListe igennem med hold for at finde det hold vi har gang i og returnere maxAntalDeltagere for holdet:

public int getMaxAntalDeltagere( int holdnr )
{
int retultat = 0;
int i = 0;
while ( i < holdene.size() && holdnr != holdene.get( i ).getHoldene() )
i++;
if ( i < holdene.size() ) // fundet
resultat = holdene.get( i ).getMaxAntalDeltagere();
return resultat;
}


I min Kontrol klasse har jeg så endelig metoden som tilmelder medlemmet til holdet og det er der jeg gerne vil have min ”validering” af om antallet af medlemmer overskrides:

//Metode til at kunne tilmelde sig et hold udfra holdnr og medlemsnr.
public void tilmeldMedlemTilHold( int medlemsnr, int holdnr )
{
//Henter et medlems objekt udfra medlemsnummer.
Medlem medlem = medlemsRef.hentMedlem( medlemsnr );
//Kontrollere om medlemmet findes eller ej
if (medlem != null)
{
System.out.println("Medlem fundet");
} else {
System.out.println("Medlem ikke fundet");
}

//Henter ønskede hold objekt via metoden hentAktuelHold() som ligger i HoldListe klassen
Hold hold = holdRef.hentAktuelHold( holdnr );
//Kontrollere om holdet findes eller ej.
if ( hold != null )
{
If  ( holdRef.getMaxAntalDeltagere( holdnr ) > ?????????? )
{
//Sammenkæder nu hold og medlemmer således at de samles
hold.tilmeldMedlemTilHold( medlem );
} else {
Hold.tilmeldMedlemTilVenteliste(medlem)
}             
} else {
System.out.println("Intet hold fundet");
}
}

Som i kan se er jeg meget i tvivl om hvordan jeg validere
If  ( holdRef.getMaxAntalDeltagere( holdnr ) > ?????? )

Jeg vil gerne have fat I min holdTilmeldingsliste ArrayListe som findes i min Hold klasse og lave noget i stil med:
holdTilmeldingsliste.size() men jeg er i tvivl om hvorvidt dette er korrekt samt hvordan jeg får fat i denne ArrayListe gennem de forskellige klasse.

Håber I forstår mit spørgsmål
Avatar billede welcor Nybegynder
12. december 2008 - 23:10 #1
Jeg foreslår en metode på hold:

public boolean isPlassTilFlere()
{
  return maxAntalDeltagere > holdTilmeldingsListe.size();
}

Den bruges sådan :
//Metode til at kunne tilmelde sig et hold udfra holdnr og medlemsnr.
public void tilmeldMedlemTilHold( int medlemsnr, int holdnr )
{
  //Henter et medlems objekt udfra medlemsnummer.
  Medlem medlem = medlemsRef.hentMedlem( medlemsnr );
  //Kontrollere om medlemmet findes eller ej
  if (medlem != null)
  {
    System.out.println("Medlem fundet");
  } else {
    System.out.println("Medlem ikke fundet");
  }

  //Henter ønskede hold objekt via metoden hentAktuelHold() som ligger i HoldListe klassen
  Hold hold = holdRef.hentAktuelHold( holdnr );
  //Kontrollere om holdet findes eller ej.
  if ( hold != null )
  {
    if  ( hold.isPlassTilFlere() )
    {
      //Sammenkæder nu hold og medlemmer således at de samles
      hold.tilmeldMedlemTilHold( medlem );
    } else {
      Hold.tilmeldMedlemTilVenteliste(medlem)
    }             
  } else {
    System.out.println("Intet hold fundet");
  }
}

Med mindre du bruger holdref.getMaxAntalDeltagere(int holdnr) andre steder, er den overflødig. Du finder jo allerede holdet i linjen

Hold hold = holdRef.hentAktuelHold( holdnr );

Der er ingen grund til at lede en gang til.
Avatar billede chr.kj Nybegynder
13. december 2008 - 00:25 #2
Super.. Sådan havde jeg slet ikke set eller tænkt på det :D

Tusind tak for hjælpen.
Avatar billede chr.kj Nybegynder
15. december 2008 - 08:43 #3
En lille tilng..

Hvor sker valideringen om denne metode er true eller false?

Skal der ikke stå noget i stil med:

if ( hold.isPlassTilFlere() == true )

eller er det helt unødvendigt?
Avatar billede welcor Nybegynder
15. december 2008 - 10:23 #4
Lige præcis metoder som returnerer boolean behøver man ikke at lave en specifik == (eller .equals()) test på. Det, == gør, er at lave dig en boolean, baseret på elementerne foran og bag operatoren.

int i = 3;
if (i == 3) {}  // her bruges == for at få en boolean (true/false)

boolean stop = false;
if (stop) {} // her har vi allerede en boolean

boolean stop2 = (i == 3);
if (stop2) {} // igen, her har vi allerede en boolean.
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
Kurser inden for grundlæggende programmering

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