1.3-Object-Georienteerd-Programmeren

Keuze selector

De meeste klassen die we geschreven hebben tot nu toe stellen echte dingen uit het echte leven voor, zoals mensen, auto’s en zelfs vliegtuigen. Veel klassen echter die tijdens het programmeren worden gebruikt, stellen vaak niet iets tastbaars voor, maar eerder een concept, zoals een lijst, wachtrij, file reader of zoiets simpels als een menu.

Vandaag maak je je eigen keuze selector. Een keuze selector is een component dat een lijst van items weergeeft en waarmee je een item kunt selecteren op basis van een bepaalde interactie (door bijv. op een regel te klikken, de naam in te typen, enz.) We houden het vandaag eenvoudig door de lijst te nummeren en de gebruiker een getal te laten invoeren waarmee de selectie wordt afgerond.

Zorg ervoor dat je de volgende methodes implementeert:

Om de kracht van dit systeem te laten zien gebruiken we een zeer simplistische Person klasse als te selecteren doel, dus we vullen de selector met Person instanties.

Het gebruik van de optie-selector ziet er als volgt uit:

public static void main(String[] args) {
    OptionSelector menu = new OptionSelector();

    menu.addOption(new Person("John"));
    menu.addOption(new Person("Jill"));
    menu.addOption(new Person("Joann"));
    menu.addOption(new Person("Nick"));
    menu.addOption(new Person("Bert"));
    menu.addOption(new Person("Ravi"));
    menu.addOption(new Person("Elton"));

    Person selectedPerson = menu.promptMenu();

    System.out.println("The person selected was: " + selectedPerson);

}

We gaan ons vandaag niet bezighouden met het generiek maken van deze OptionSelector (waarmee we zeggen dat de OptionSelector alle types kan gebruiken in plaats van alleen de Person klasse). Het maken van generic klassen laten we liggen voor een ander vak.

Uiteraard moet je wel goed encapsulation goed toepassen, zodat je geen illegale waarden kunt invoeren!

Voorbeeld

*************** Option selector ***************
1) John
2) Jill
3) Joann
4) Nick
5) Bert
6) Ravi
7) Elton

Please select a value: -10
Invalid value. Please try again: 25
Invalid value. Please try again: 6
The person selected was: Ravi