Files
oops/oppgavetekster/oving5/TicketControl.md
Andreas Omholt Olsen 55c36a603a Add oving 5
2026-02-09 15:28:09 +01:00

1.8 KiB

Interface - TicketControl-oppgave

Denne oppgaven handler om å lage en representasjon av billetter. Du skal lage et grensesnitt for billetter, og to klasser som implementer dette; en som representerer en enkeltbillett og en som representerer en periodebillett.

Filene i denne oppgaven skal ligge i oving5/ticket.

Del 1 - Ticket-grensesnitt

Lag et grensesnitt kalt Ticket, med følgende metoder:

  • boolean scan() - Denne metoden kalles hver gang billetten scannes. Dersom billetten er gyldig, skal metoden returnere true, ellers false. Legg merke til at du ikke skal implementere metoden her, du skal bare definere grensesnittet.

Tanken her er at vi kan senere lage en kontrollørklasse som kan bruke scan()-metoden for å sjekke om en billett er gyldig.

Del 2 - SingleTicket-klasse

Lag en klasse kalt SingleTicket som implementerer Ticket-grensesnittet. SingleTicket skal implementere scan()-metoden slik at den kun returnerer true den første gangen metoden blir kalt.

Hint: Du kan bruke en boolean-variabel for å holde styr på om billetten er gyldig eller ikke.

Testkode for oppgaven finner du her: oving5/ticket/SingleTicketTest.java.

Del 3 - PeriodTicket-klasse

Lag en klasse kalt PeriodTicket som implementerer Ticket-grensesnittet. PeriodTicket skal implementere scan()-metoden slik at den returnerer true dersom det nåværende tidspunktet er mellom to gitte tidspunkter. PeriodTicket skal ha en konstruktør som tar inn to LocalDateTime-objekter som representerer start- og sluttidspunktet for gyldigheten til billetten. Legg til validering der det gir mening.

Testkode for oppgaven finner du her: oving5/ticket/PeriodTicketTest.java.