1.4-Software-Development-Principles

Toets Software Ontwikkel Principes - 2024-07-01 (Toets)

Introductie

Deze toets bestaat uit drie onderdelen. Deze testen je vaardigheid voor het uitleggen en toepassen van software ontwikkelprincipes.

Punten

Je kunt een totaal van 16 punten behalen. Deze punten zijn als volgt verdeeld:

Onderdeel Aantal punten Tijd suggestie
Deel 1 2 15 min
Deel 2 4 30 min
Deel 3 10 90 min

Documentatie

De volgende websites zijn beschikbaar tijdens de toets:

Deel 1: Terminologie [2pt]

Beantwoord de volgende vragen. Schrijf je antwoorden in de studentAnswers.md file. Er staat een .md bestand voor Engels en voor Nederlands. Kies welke taal je voorkeur heeft. (Geen andere talen!)

Vraag 1a [1pt]

Wat wordt er bedoelt met een declaratie? Hoe zou je definieren wat dit is? Geef twee voorbeelden.

Schrijf je antwoord in het antwoord bestand van het project.

Vraag 1b [1pt]

Wat wordt er bedoelt met “KISS”? Geef hier ook een voorbeeld van.

Schrijf je antwoord in het antwoord bestand van het project.

Deel 2: Streams [4pt]

De resources folder bevat een bestand met een lijst van pokemon en eigenschappen. Sommige velden zijn:

Het laatste veld is een boolean.

Bijvoorbeeld, de eerste pokemen in de lijst is “Bulbasaur”, welke types “Grass” en “Poison” heeft. Het heeft 45 hitpoints. Het behoort aan generatie 1. En het is NIET legendary. Let op dat verder op: “Squirtle” heeft alleen type “Water” en het andere type veld is leeg.

Vragen om te beantwoorden [1pt per vraag]

Er zijn met vier methoden zonder zinnige inhoud (doStream1(), doStream2(), etc.) Deze worden gebruikt om de informatie van de dataset weer te geven.

  1. Geef het aantal Legendary pokemons (Dit zijn er meer dan 100)
  2. Geef een lijst van namen van alle pokemons met maar 1 type. (De lijst bevat onder andere Charmander en Squirtle)
  3. Bereken het gemiddelde aantal hitpoints voor “Grass” type pokemons. (Het antwoord ligt tussen 60 en 70)
  4. Geef een lijst van namen van de top 10 sterkste (hp) pokemons. (De lijst begint met Shedinja en Diglett)

Implementeer de vier methoden met java streams. Elk andere implementatie levert geen punten op.

Deel 3: Refactoring [10pts totaal]

Introductie

In dit onderdeel ga je een slecht geschreven stuk code verbeteren op een aantal onderdelen. De vragen hieronder zullen je begeleiden in deze verbeteringen.

Je hoeft ALLEEN aanpassingen in de code te maken in de klasse TourismManager. De Application en de PointOfInterest klasse hoeven niet aangepast te worden.

Het programma laad een lijst van Punten van Interesse (PointsOfInterest) of POI’s. Het lastige is dat mijn databron verschillende “velden” per item bevat. Sommige hebben een veld “artist”, anderen hebben “webpage” of andere codes die we niet hoeven te begrijpen.

Er zijn maar vier velden gegarandeerd:

De lat en long identificeren de POI’s locatie. Het tourism veld kan de volgende waarden bevatten: “statue”, “museum”, “viewpoint”, “hotel”. Maar er kunnen ook veel andere waarden mogelijk zijn!

3a Generics [2pt]

Het lezen van POI’s uit een bestand levert data in een niet-generieke lijst structuur.

3b Enums en/of constanten [2pt]

Controlleer dat alle constanten die worden gebruikt, op een logische plek staan.

3c Dependency injection [2pt]

Ter herinnering, de implementatie van de class TourismReader moet niet aangepast worden behalve het volgende.

De POIManager is nu direct afhankelijk van de TourismReader, dit maakt testen lastig. Wij willen dat je dependency injection gebruikt zo dat we de POIManager los kunnen testen zonder een file te hoeven lezen..

3d Extra Testen [2pt]

Schrijf tests voor de volgende klassen en situaties:

3e Leesbaarheid [2pt]

Zorg ervoor, bij het maken van wijzigingen, dat de code duidelijk verbeterd.

Maak packages en verdeel de code in duidelijke onderdelen.

Zorg dat door jou geschreven testen aan de volgende regels voldoen: