In een grote slagerij wordt over het algemeen gebruikgemaakt van een nummersysteem waarbij een klant bij het binnenkomen een nummer trekt en vervolgens op een display kan volgen wanneer hij aan de beurt is. Ook bij kleinere slagerijen wordt het steeds drukker en willen steeds meer slagers dit systeem invoeren. Voor velen is dit echter een investering die iets te hoog is. De plaatselijke kleine zelfstandige doet daarom beroep op jou om zo'n systeem te schrijven.
Je opdracht bestaat erin een klasse NummerSysteem aan te maken. Zowel de waarden op het display als op de tickets kunnen getallen van 1 tot en met 99 zijn, en aan het begin van de dag staan beiden op 0. Je klasse moet de volgende methoden hebben:
De constructor __init__ krijgt als optionele parameters de huidige klant en het laatste ticket mee.
De methoden __str__ en __repr__ geeft de stringrepresentatie van het nummersysteem terug. Baseer je voor de vorm waarin de gegevens worden uitgeschreven op het voorbeeld hieronder.
De methode huidigeKlant() geeft de waarde op het display terug.
De methode trekNummer() simuleert het trekken van een nummer. Het geeft als resultaat het volgende nummer. Hou er rekening mee dat het nummer in het interval 1 tot en met 99 moet liggen en zorg ervoor dat er geen nummers dubbel gebruikt worden. Indien er geen beschikbaar nummer is, geeft deze methode None terug.
De methode volgendeKlant() laat de display het nummer van de volgende klant tonen. Indien er geen volgende klant is, dan doet deze methode niets. Indien er wel een volgende klant is, dan moet de methode huidigeKlant() na het oproepen van deze methode het volgende nummer teruggeven.
>>> nummer = NummerSysteem()
>>> nummer
NummerSysteem(0, 0)
>>> print(nummer)
Huidige klant: 0, laatste ticket: 0
>>> nummer.trekNummer()
1
>>> nummer.trekNummer()
2
>>> nummer.volgendeKlant()
>>> nummer.huidigeKlant()
1
>>> nummer
NummerSysteem(1, 2)
>>> nummer = NummerSysteem(96, 98)
>>> nummer
NummerSysteem(96, 98)
>>> print(nummer)
Huidige klant: 96, laatste ticket: 98
>>> nummer.volgendeKlant()
>>> nummer.volgendeKlant()
>>> print(nummer)
Huidige klant: 98, laatste ticket: 98
>>> nummer.volgendeKlant()
>>> print(nummer)
Huidige klant: 98, laatste ticket: 98
>>> nummer.trekNummer()
99
>>> nummer.trekNummer()
1
>>> nummer = NummerSysteem(15, 12)
>>> print(nummer)
Huidige klant: 15, laatste ticket: 12
>>> nummer.trekNummer()
13
>>> nummer.trekNummer()
14
>>> nummer.trekNummer()
>>> nummer.volgendeKlant()
>>> nummer.trekNummer()
15