...
Expand | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
I denne oppgaven skal du implementere klasser og metoder for en quiz, altså sekvenser med spørsmål og svar. Et eksempel på spørsmål og svar-sekvens er vist under. Et eksempel på spørsmål og svar-sekvens er vist under. Som eksemplet viser, så kan det kan være ulike typer svar og en kan ha svar-alternativer.
Du skal implementere én klasse for spørsmål og tilhørende svar kalt Question og én klasse for quiz-en kalt Quiz. Oppgaven videreføres i resten av oppgavesettet, så det kan være greit å lese gjennom alle delene før du begynner å jobbe med din løsning. Oppgave a)Du skal først implementere Question-klassen. Klassen skal støtte spørsmål, svar og eventuelle svar-alternativer, som alle er tekster. Definer felt for disse og skriv en (eller flere) konstruktør(er) som initialiserer dem. Merk at et spørsmål må ha et svar, men trenger ikke ha svar-alternativer. Utløs unntak for tilfeller som du synes er relevante.
Oppgave b)Lag følgende metoder i Question-klassen for å stille spørsmål og sjekke svar:
Oppgave c)Det er ofte et skjønnspørsmål om en trenger get- og set-metoder og evt. andre metoder for å lese og endre tilstanden i et objekt. Begrunn hvilke slike metoder som trengs (om noen) i Question-klassen og implementer dem.
Oppgave d)Quiz-klassen representerer en sekvens med spørsmål. Skriv kode for klassen med metoder for å:
Oppgave e)Skriv nødvendige metoder for å kunne kjøre Quiz-klassen (med noen eksempelspørsmål) som et hovedprogram iht. reglene som Java har for dette. Når man kjører Quiz-klassen, skal altså brukeren bli stilt spørsmålene og få anledning til å svare, omtrent som vist i eksemplet i innledningen.
|
Expand | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||
Utvid Quiz-klassen med en metode for å initialisere Quiz-objektet med spørsmål (og tilhørende svar og evt. svar-alternativ) fra fil. Følgende format skal støttes:
Eksempelfil tilvarende eksemplet i innledningen, med kommentarer (som ikke er en del av filinnholdet) i høyre kolonne:
|
Expand | |||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||||||||||
I denne delen skal du bruke arv for å håndtere ulike typer svar på en ryddigere måte. Det skal være én klasse for frie tekst-svar kalt StringQuestion, en klasse for tekst-svar med svar-alternativer kalt StringOptionsQuestion, og en klasse for ja/nei-spørsmål kalt BooleanQuestion. Det som er felles for disse klassene, f.eks. håndtering av selve spørsmålsteksten, skal samles i Question-superklassen. Bortsett fra at Question-klassen ikke skal kunne instansieres, så skal bruken av den være som i del 3, inkludert de to askQuestion- og checkQuestion-metodene fra del 2. Prøv å strukturere klassene dine, så det blir minst mulig duplisert kode. Du står selvsagt fritt til å definere andre metoder som trengs i løsningen din. En del av koden vil være lik tidligere kode. Du kan selv velge om du vil skrive den på nytt, eller beskrive presist hvordan tidligere skrevet kode(tekst) kopieres inn i de nye klassene. Oppgave a)Implementer først Question-superklassen og de tre klassene StringQuestion, StringOptionsQuestion og BooleanQuestion kun med konstruktører.
Oppgave b)Implementer de to metodene askQuestion og checkAnswer, slik at alle Question-objekter (egentlig instanser av en av de tre andre klassene) i praksis virker som i del 2.
Oppgave c)Reimplementer metoden i Quiz for for innlesing av spørsmål fra fil, slik at den virker med de nye Question-subklassene.
|
...