Skip to content

Track 2 - Toetsopdracht - BSA Monitor: Vervolg

Codelab

npx @hboictcloud/codelab-cli new oop/2-bsa-monitor-vervolg

Beschrijving

Dit is een vervolg op de BSA Monitor van Track 1. In deze versie gaan we een stap verder werken van wat je daar hebt gemaakt.

  1. Verbeter je klasse Vak door encapsulation toe te passen en parameter namen identiek te maken aan attribuutnamen.
  2. Pas de index.ts aan zodat het programma werkt met een array van vakken.
  3. Vraag de gebruiker om cijfers in te voeren voor alle vakken en toon de resultaten.

Hieronder een voorbeeld van input/output van deze applicatie. Input die de gebruiker invoert is onderstreept.

Voer behaalde cijfers in:
Fasten Your Seatbelts: 7.5
Programming: 8.9
User Interaction: 5.4
Personal Skills: 7
Databases: 5.5
OOP1: 8
Project Skills: 5

Vak/Project: Fasten Your Seatbelts  Cijfer: 7.5  Behaalde punten: 12
Vak/Project: Programming            Cijfer: 8.9  Behaalde punten: 3
Vak/Project: User Interaction       Cijfer: 5.4  Behaalde punten: 0
Vak/Project: Personal Skills        Cijfer: 7.0  Behaalde punten: 2
Vak/Project: Databases              Cijfer: 5.5  Behaalde punten: 3
Vak/Project: OOP1                   Cijfer: 8.0  Behaalde punten: 3
Vak/Project: Project Skills         Cijfer: 5.0  Behaalde punten: 0

Totaal behaalde studiepunten: 23/28
PAS OP: je ligt op schema voor een negatief BSA!

Klassendiagram

Onderstaand diagram vat de structuur van de class samen, dit keer inclusief encapsulation:

classDiagram
    class Vak {
        -_naam: string
        -_punten: number
        -_cijfer: number
        +constructor(naam: string, punten: number)
        +getNaam() string
        +getPunten() number
        +getCijfer() number
        +setCijfer(cijfer: number) void
        +gehaaldePunten() number
    }

Stappenplan

  1. Maak een kopie van je code van de BSA Monitor uit Track 1 en open deze voor bewerking.
  2. Verbeter je klasse Vak op twee manieren:

    • Door encapsulation toe te passen. Gebruik op de juiste plekken public en private. Maak de attributen naam, punten, en cijfer private met een underscore prefix (_naam, _punten, _cijfer).
    • Gebruik this op de juiste plekken.
  3. Pas de index.ts aan, zodat het programma precies doet wat BSA Monitor uit track 1 doet.

    • Maak een array van vakken aan, als volgt:
      const vakken: Vak[] = [];
      
    • Maak per vak een object aan door de constructor van Vak aan te roepen. Voorbeeld:

      vakken.push(new Vak("Fasten Your Seatbelts", 12));
      
    • Laat de gebruiker voor ieder vak zijn/haar behaalde cijfer invoeren en lees dat in.

    • Toon de resultaten op het scherm. Druk bij ieder vak de gevraagde informatie af.
    • Druk het aantal studiepunten af en of je een negatief BSA gaat krijgen.
  4. Schrijf TSDoc voor de klasse Vak als geheel en voor alle methodes van de klasse:

    • Beschrijf het doel van de klasse en van elke methode.
    • Beschrijf voor elke methode de inputparameters en licht toe wat een methode teruggeeft.
    • Gebruik in je TSDoc @author, @param en @return.
  5. Maak eventueel de code in index.ts mooier door middel van functies.

Tip: Je kunt voor stap 3c en 3d de foreach loop (for...of) gebruiken!

Richtlijnen bij coderen

  • Zorg dat je naam en het doel van het programma bovenin staan.
  • Gebruik de juiste inspringing (indentation) bij de lay-out.
  • Let op juist gebruik hoofdletters en kleine letters.
  • Gebruik goede namen.
  • Voeg waar nodig commentaar toe dat inzicht geeft in je code.
  • Vermijd magic numbers, gebruik constanten.
  • Gebruik de TSDoc tags @author, @param en @return.
  • Denk aan encapsulation, gebruik private waar mogelijk.