Bespreking testpracticum
Javaconventies! ◦ KlasseNamen beginnen met Hoofdletter ◦ objectNamen/methodeNamen met kleine letter Aanspreken GUI ◦ Zie ook World of Zuul ◦ Aanspreken GUI moet beperkt worden tot minimum aantal klassen Bv: voldoende in klasse Spel ◦ Alle andere klassen kennen GUI niet!
Duidelijke naamgeving! ◦ Variabelen/klassenamen zijn zelfstandig naamwoord Bv. Hut, aantal, … ◦ Methodenamen bevatten werkwoord isRaak, plaatsHut,… Concepten uit boek ◦ High cohesion Vermijd code duplicatie ◦ Low coupling Beperk # bindingen OO ◦ > 1 object
Vermijd code duplicatie! ◦ NIET 1 lange methode met alle variaties voor het maken van hutten ◦ WEL een aparte methode aanroepen die overlappende code bevat ◦ NIET: maakKleineHutVoorSpeler1Horizontaal, maakGroteHutVoorSpeler2,... ◦ WEL: bv. maakHut(speler, grootteHut, orientatieHut)
Belangrijk: ◦ Correct splitsen van functionaliteit NIET klasse HuttenBouwen, Schieten, … WEL klasse Spel, Dorp, Hut, Schot, … DUS splitsen volgens eigenschappen, NIET volgens acties Disclaimer ◦ er is GEEN ideale (model)oplossing
Spel Gui gui; Speler speler1; Speler speler2; Speler ArrayList hutten; ArrayList schoten; Schot Position plaats; boolean geraakt; Weet enkel zijn positie en het feit of het schot raak was of niet Voorbeeld methodes: public Position geefPositie() public boolean isRaak()
Spel Gui gui; Speler speler1; Speler speler2; Speler ArrayList hutten; ArrayList schoten; Schot Position plaats; boolean geraakt; Kent enkel zijn eigen hutten en schoten Voorbeeld methodes: public boolean heeftHut(Position pos) public boolean isRaak(Position pos) public boolean heeftAlGeschoten (Position pos)
Spel Gui gui; Speler speler1; Speler speler2; Speler ArrayList hutten; ArrayList schoten; Schot Position plaats; boolean geraakt; Zorgt voor verloop van spel mbv klasse Speler en Schot Zorgt voor communicatie met GUI
Spel Gui gui; Speler speler1; Speler speler2; Speler ArrayList hutten; ArrayList schoten; Schot Position plaats; boolean geraakt; Hut ArrayList plaatsen;
Vraag aan gebruiker de beginpositie Vraag aan gebruiker de richting Bereken de posities van de hut Controleer of de nieuwe hut geen geplaatste hutten overlapt Voeg de hut toe
Vraag aan gebruiker de beginpositie ◦ Position positie=gui.choosePosition(playerID) Vraag aan gebruiker de richting ◦ Orientation richting = gui.orientationInputBox() Bereken de posities van de hut Controleer of de nieuwe hut geen geplaatste hutten overlapt Voeg de hut toe
Vraag aan gebruiker de beginpositie Vraag aan gebruiker de richting Bereken de posities van de hut ◦ EERST bereken aantal kleine en grote hutten Hou bij welke hut je aan het plaatsen bent Controleer of de nieuwe hut geen geplaatste hutten overlapt Voeg de hut toe
int aantal = berekenAantalHutten() Doe aantal keer voor kleine hutten + aantal keer voor grote ◦ Vraag aan gebruiker de beginpositie ◦ Vraag aan gebruiker de richting ◦ Bereken de posities van de (grote/kleine) hut Controleer of de hut nog binnen het speelveld ligt ◦ Controleer of de nieuwe hut geen geplaatste hutten overlapt ◦ Voeg de hut toe
int aantal = berekenAantalHutten() Doe aantal keer (voor kleine en grote hutten) ◦ Vraag aan gebruiker de beginpositie ◦ Vraag aan gebruiker de richting ◦ Bereken de posities van de (grote/kleine) hut ◦ Controleer of de nieuwe hut geen geplaatste hutten overlapt SPEL: huidigeSpeler.heeftOverlap(nieuweHut) SPELER: ∀ hut: hut.heeftOverlap(nieuweHut) HUT: ∀ positie: hut.bevatPositie(positie) ◦ Voeg de hut toe
int aantal = berekenAantalHutten() Doe aantal keer (voor kleine en grote hutten) ◦ Vraag aan gebruiker de beginpositie ◦ Vraag aan gebruiker de richting ◦ Bereken de posities van de (grote/kleine) hut ◦ Controleer of de nieuwe hut geen geplaatste hutten overlapt ◦ Voeg de hut toe huidigeSpeler.voegToe(nieuweHut)
Laat zowel speler1 als speler2 hutten plaatsen ◦ Begin met speler1 int aantal = berekenAantalHutten() Doe aantal keer (voor kleine en grote hutten) Vraag aan gebruiker de beginpositie Vraag aan gebruiker de richting Bereken de posities van de (grote/kleine) hut Controleer of de nieuwe hut geen geplaatste hutten overlapt Voeg de hut toe ◦ Maak speler2 de huidige speler en herhaal
Spel Gui gui; Speler speler1; Speler speler2; Speler Veld [] [] bord; Veld boolean hut; boolean schot; Voorstelling van 1 plaats op het bord Voorbeeld methodes: public void plaatsHut() public boolean heeftHut() public void schiet() public boolean heeftAlGeschoten() public boolean isRaak()
Spel Gui gui; Speler speler1; Speler speler2; Speler Veld [] [] bord; Veld boolean hut; boolean schot; Voorstelling van het speelveld als 2D bord Voorbeeld methodes: public void plaatsHut(Position p) public boolean heeftHut(Position p) public void schiet(Position p) public boolean heeftAlGeschoten (Position p) public boolean isRaak(Position p)