Methodiek van de Informatica

advertisement
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;
Weet enkel zijn positie en het
feit of het schot raak was of
niet
Voorbeeld methodes:
•public Position geefPositie()
•public boolean isRaak()
Speler
ArrayList<Position> hutten;
ArrayList <Schot> schoten;
Schot
Position plaats;
boolean geraakt;
Spel
Gui gui;
Speler speler1;
Speler speler2;
Speler
ArrayList<Position> hutten;
ArrayList <Schot> schoten;
Kent enkel zijn eigen hutten en schoten
Voorbeeld methodes:
•public boolean heeftHut(Position pos)
•public boolean isRaak(Position pos)
• public boolean heeftAlGeschoten
(Position pos)
Schot
Position plaats;
boolean geraakt;
Spel
Gui gui;
Speler speler1;
Speler speler2;
• Zorgt voor verloop van
spel
• mbv klasse Speler en
Speler
ArrayList<Position> hutten;
ArrayList <Schot> schoten;
Schot
Schot
•Zorgt voor communicatie
met GUI
Position plaats;
boolean geraakt;
Spel
Gui gui;
Speler speler1;
Speler speler2;
Speler
ArrayList<Hut> hutten;
ArrayList <Schot> schoten;
Hut
ArrayList<Position> plaatsen;
Schot
Position plaats;
boolean geraakt;





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;
Voorstelling van 1 plaats op het bord
Voorbeeld methodes:
•public void plaatsHut()
•public boolean heeftHut()
• public void schiet()
•public boolean heeftAlGeschoten()
• public boolean isRaak()
Speler
Veld [] [] bord;
Veld
boolean hut;
boolean schot;
Spel
Gui gui;
Speler speler1;
Speler speler2;
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)
Speler
Veld [] [] bord;
Veld
boolean hut;
boolean schot;
Download