1.3-Object-Georienteerd-Programmeren

Calendar

Bij deze opdracht gaan we een agenda bouwen. De agenda kan afspraken opslaan. Ieder afspraak bestaat uit een titel en een datum waarop deze plaats vindt. Er zijn 3 verschillende typen afspraken:

Maak klassen om het bovenstaande probleem te modelleren. Bouw ook een methode occursOn(LocalDate compareDate) die van een gegeven datum aangeeft of de afspraak op die dag plaats vindt. Maak per klasse een toString() methode die overzichtlijk de details van de afspraak weergeeft.

Implementeer vervolgens de gegeven Calendar klasse en test of je code correct werkt.

Hint: Gebruik de YearMonth en de LocalDate klassen uit Java om de eerste dag van de week te bepalen en de lengte van de maand.

Het is prima als je de output van het programma zo simpel mogelijk houdt. Probeer vooral in de code de juiste aanroepen te doen en print het resultaat van de occursOn(..) methode.

Voorbeeld main method

Voel je vrij om onze main methode te gebruiken als beginpunt. Je zal echter hier nog wel wat code aan toe moeten voegen om de overige functionaliteit te testen. (De methode is duidelijk nog niet af!)

public static void main(String[] args) {
    Calendar calendar = new Calendar();

    // Create some single appointments
    calendar.addAppointment(new SingleAppointment(LocalDateTime.of(2021, 4, 10, 12, 15), "Visit the dentist"));
    calendar.addAppointment(new SingleAppointment(LocalDateTime.of(2021, 3, 22, 9, 00), "Databases exam"));
    calendar.addAppointment(new SingleAppointment(LocalDateTime.of(2021, 1, 20, 15, 00), "Retake Introduction to Programming"));

    // Create some monthly appointments
    calendar.addAppointment(new MonthlyAppointment(LocalDateTime.of(2021, 2, 25, 9, 00), "Receive student finance from DUO"));
    calendar.addAppointment(new MonthlyAppointment(LocalDateTime.of(2021, 2, 1, 20, 00), "Cleaning student room"));

    // Create some yearly appointments
    calendar.addAppointment(new YearlyAppointment(LocalDateTime.of(2021, 3, 5, 9, 00), "Birthday mother"));
    calendar.addAppointment(new YearlyAppointment(LocalDateTime.of(2021, 1, 1, 0, 00), "New year"));

    // Use this space below to test your application!
    ArrayList<Appointment> result = calendar.getAppointments(2021);
    
    //...
}