puzzles/
, users/
, of core/
).abc
module.🔎 Waarom beginnen met de abstracte klasse?
- Zo definieer je het contract waar de concrete klassen zich aan moeten houden.
- Het helpt het team te begrijpen welke methodes verplicht zijn.
from abc import ABC, abstractmethod
class Animal(ABC):
"""
Abstracte klasse die de basisdefinitie geeft voor alle dieren.
Verplichte methoden:
- make_sound(): moet het geluid van het dier teruggeven.
- move(): moet beschrijven hoe het dier zich verplaatst.
"""
@abstractmethod
def make_sound(self) -> str:
"""Geeft het geluid van het dier terug."""
pass
@abstractmethod
def move(self) -> str:
"""Geeft terug hoe het dier zich verplaatst."""
pass
class Dog(Animal):
"""
Concrete klasse die een hond voorstelt.
Inherits:
Animal: Abstracte klasse.
Methoden:
- make_sound(): geeft het geluid 'Bark!' terug.
- move(): beschrijft dat de hond loopt.
"""
def make_sound(self) -> str:
"""Geeft het geluid van een hond terug."""
return "Bark!"
def move(self) -> str:
"""Geeft terug dat de hond loopt."""
return "The dog walks."
Een unit test controleert of een klein onderdeel (bijvoorbeeld een klasse of methode) correct werkt.
Alle uitleg over unit tests vind je in het hoofdstuk daarover, bij basics.
puzzles
Puzzle
RiddlePuzzle
: implementeer check_solution()
en get_hint()
.CodeLockPuzzle
: idem.Unit tests:
check_solution("antwoord")
het juiste resultaat?get_hint()
terug met de verwachte string?users
User
Player
Admin
Unit tests:
get_role()
de juiste rol teruggeeft.display_info()
de juiste informatie toont.core
Component
Timer
Logger
Unit tests:
start()
en stop()
de status van het component aanpassen.status()
de verwachte output geeft.