• No results found

Methodiek van de Informatica

N/A
N/A
Protected

Academic year: 2021

Share "Methodiek van de Informatica"

Copied!
19
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Methodiek van de Informatica

Bespreking testpracticum

(2)

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!

Vaak voorkomende fouten

(3)

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

Vaak voorkomende fouten

(2)

(4)

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)

Vaak voorkomende fouten

(3)

(5)

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

Voorbeeld van mogelijke

ontwerp

(6)

Mogelijke ontwerp

Spel Gui gui;

Speler speler1;

Speler speler2;

Speler ArrayList<Position>

hutten;

ArrayList <Schot> 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()

(7)

Mogelijke ontwerp

Spel Gui gui;

Speler speler1;

Speler speler2;

Speler ArrayList<Position>

hutten;

ArrayList <Schot> 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)

(8)

Mogelijke ontwerp

Spel Gui gui;

Speler speler1;

Speler speler2;

Speler ArrayList<Position>

hutten;

ArrayList <Schot> schoten;

Schot Position plaats;

boolean geraakt;

• Zorgt voor verloop van spel

• mbv klasse Speler en Schot

• Zorgt voor

communicatie met GUI

(9)

Mogelijke ontwerp

Spel Gui gui;

Speler speler1;

Speler speler2;

Speler

ArrayList<Hut> hutten;

ArrayList <Schot> schoten;

Schot Position plaats;

boolean geraakt;

Hut

ArrayList<Position>

plaatsen;

(10)

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

Voorbeeld: plaatsen van

hutten

(11)

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

Voorbeeld: plaatsen van

hutten

(12)

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

Voorbeeld: plaatsen van

hutten

(13)

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

Voorbeeld: plaatsen van

hutten

(14)

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

Voorbeeld: plaatsen van

hutten

(15)

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)

Voorbeeld: plaatsen van

hutten

(16)

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

Voorbeeld: plaatsen van

hutten

(17)

Mogelijke ontwerp 2

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()

(18)

Mogelijke ontwerp 2

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)

(19)

Mogelijk ontwerp 3

Referenties

GERELATEERDE DOCUMENTEN

0m de invloed van de populatiegrootte en de dichtheid te bepalen, werd op verschillende dagen in het bloelseizoen en op meerdere plaatsen in een grote en een kleine populatie

Elke meromorfe functie op X kan gezien worden als een adèle door in alle punten zijn Laurentreeks te bepalen.. Die adèle is inverteerbaar omdat elke mer- omorfe functie een

Feller’s voorstel maakt gebruik van de wet van grote aantallen, die trouwens voor het eerst geformuleerd en bewezen werd door Daniels oom Jakob Bernoulli. Deze wet leert dat

Hierbij richten killercellen van de donor, dus voortkomend uit het stamceltransplantaat, zich tegen de brede minors van de pa- tiënt en kunnen veel cellen en weefsels van de

›› We halen niet het maximum uit de eerste levensjaren, hoe- wel die cruciaal zijn. De eerste ervaringen van kinderen hebben een sterke impact op hun latere leven. ››

Hoewel de laatste jaren de kwaliteit van de kleine wateren lijkt te zijn verbeterd – zoals bijvoorbeeld de veranderde kwaliteit van de sloten in de glastuinbouwgebieden laat

De ouders merkten dat de leraren niet tegen de islam waren – want dat is het beeld dat veel moslims van ‘Nederlanders’ hebben – maar juist bezorgd waren dat het vasten een

In het huidige onderzoek onderzoeken we vijf aspecten in de wijze waarop jongeren omgaan met vrijheidsbeneming, te weten: de ervaren veiligheid, autonomie, welbevinden/stress,