Track 3 - Oefenopdracht - De band¶
Codelab¶
Beschrijving¶
De opdracht gaat over Inheritance (overerving). We gaan werken met voorbeeld van een popband. Er zijn vier bandleden. Een drummer en drie gitaristen. Er zijn drie soorten gitaristen. Een bassist, een lead-gitarist en een slag-gitarist.
Schrijf een applicatie die het volgende doet:
- Vraag de naam van de band en lees deze in.
- Vraag vervolgens de naam van de drummer.
- Vraag vervolgens de naam van de lead-gitarist.
- Vraag vervolgens de naam van de slag-gitarist.
- Vraag vervolgens de naam van de bassist.
- Druk de tekst af met console.logs zoals aangegeven in het tekstvoorbeeld.
Hieronder een voorbeeld van input/output van deze applicatie. Input die de gebruiker invoert is onderstreept.
Voorbeeld¶
Wat is de naam van de band: The Beatles
Voeg nu muzikanten toe aan de band.
Eerst de drummer, dan de gitarist en als laatste de bassist.
Wat is de naam van de drummer: Ringo
Wat is de naam van de leadgitarist: George
Wat is de naam van de slaggitarist: John
Wat is de naam van de bassist: Paul
De band The Beatles gaat nu optreden!
Ringo speelt op het drumstel.
George speelt op de gitaar.
Paul speelt op de basgitaar.
Klassendiagram¶
Onderstaand diagram vat de structuur van de class samen:
classDiagram
direction LR
class Band {
- _bandName: string
- _musicians: Musician[]
+ constructor(name: string)*
+ addMusician() void
+ performMusic() void
}
class Musician {
- _name: string
+ constructor(name: string)
+ play() void
}
class Drummer {
+ play() void
}
class Guitarist {
+ play() void
}
class Bassist {
- startTheGroove() void
+ play() void
}
class LeadGuitarist {
+ play() void
+ playSolo() void
}
class RhythmGuitarist {
+ play() void
+ playTheBrigde() void
}
Musician <|-- Drummer
Musician <|-- Guitarist
Guitarist <|-- Bassist
Guitarist <|-- LeadGuitarist
Guitarist <|-- RhythmGuitarist
Band -- "0..*" Musician
Let op:
- Er zijn geen getters en setters getoond. Voeg zelf getters en setters toe die je denkt nodig te hebben. Meer mag, maar hoeft niet.
- Zorg dat je
performMusic()methode soortgelijke output genereert als in de outputvoorbeelden. - De classes voor
BandenMusicianmoet je zelf aanmaken. - De
Musiciansub classesDrummer,Guitaristzijn niet aanwezig. Deze zal je zelf moeten maken, gebruik hiervoor het bovenstaande class diagram. - De
Guitaristsub classesBassist,LeadGuitaristenRhythmGuitaristzijn niet aanwezig. Deze zal je zelf moeten maken, gebruik hiervoor het bovenstaande class diagram. - Als je zelf nog zaken wil toevoegen die niet in het class diagram staan (omdat je denkt dat ze nodig zijn), geef dat dan duidelijk met commentaar aan in de code.
Stappenplan¶
- Importeer de
scanneruit@hboictcloud/scannervoor het krijgen van invoer van de gebruiker. - Gebruik de
scanner.promptStringvoor de invoer van de bandnaam. - Gebruik de
scanner.promptStringvoor de invoer van de naam van de drummer. - Gebruik de
scanner.promptStringvoor de invoer van de naam van de lead-gitarist. - Gebruik de
scanner.promptStringvoor de invoer van de naam van de slag-gitarist. - Gebruik de
scanner.promptStringvoor de invoer van de naam van de bassist. - Maak de benodigde classes en subclasses.
- Maak een array
musiciansaan in deBandclass. - Zorg dat de functie
performMusiceen loop bevat die door een arraymusiciansgaat om alle van allesMusiciansubclasses deplayfunctie te activeren. - Zorg ervoor dat je input en output precies overeenkomt met het hierboven gegeven voorbeeld.
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,@paramen@return. - Denk aan encapsulation, gebruik
privatewaar mogelijk.