...
Expand | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||
Course-klassen tilsvarer et undervist emne i et bestemt semester. Kurskoden (code) oppgis ved opprettelsen av Course-objekter, mens studiepoeng (credits) og semesteret (time) kan settes senere. Oppgave a)Deklarer felt for time-egenskapen, og skriv kode for getYear, getSemester, getTime og setTime (se vedlegg 3). Med tanke på del 4, så kan det være lurt å lage en metode som sjekker formatet til setTime sitt time-argument, som kan brukes i andre klasser.
Oppgave b) Course-objekter skal kunne sorteres kronologisk på semesteret de undervises. Forklar hvilke endringer som må gjøres på Course-klassen for å kunne bruke Java sin standard mekanisme for sortering, og skriv den nødvendige koden.
Exam-klassen tilsvarer en avlagt eksamen for et undervist emne. Både emnet (course) og karakteren (grade) oppgis ved opprettelse av Exam-objekter. Oppgave c)Deklarer felt for course- og grade-egenskapene, og skriv konstruktøren og isPass-metoden (se vedlegg 3).
Oppgave d)Exam-objekter skal også kunne sorteres, men på to måter! Standard-sorteringen skal være kronologisk på semesteret kurset ble undervist, men Exam-objektene skal også kunne sorteres på karakter. Forklar hvordan begge sorteringene kan støttes og skriv nødvendig kode.
Se også wiki-side om Sortering med Comparable og Comparator |
Expand | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||
Person-klassen er knyttet til Course- og Exam-klassene, og tanken er at Course-objekter legges til når en person melder seg opp og Exam-objekter legges til når eksamen er avlagt. En skal bare kunne ta eksamen i kurs en har meldt seg opp i! Oppgave a)Skriv kode for name-egenskapen, gitt at den bare skal kunne settes ved opprettelse av Person-objekter.
Oppgave b) Deklarer felt for courses-egenskapen, og begrunn valg av type. Skriv kode for addCourse og hasCourse (se vedlegg 3).
Oppgave c)Deklarer felt for exams-egenskapen, og begrunn valg av type. Skriv kode for addExam, getLastExam og hasPassed (se vedlegg 3).
Oppgave d)Skriv kode for countCredits-metoden i Person-klassen. Hust at en ikke får studiepoeng for kurs uten å ha tatt og bestått eksamen, og at det er siste karakter som teller!
|
...
Expand | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||
Vedlegg 3 beskriver et tekstformat for informasjon om emner og eksamener. Oppgave a)Skriv metoden Collection<Exam> readExams(Reader input) i en tenkt ExamReader-klasse, som skal opprette Course- og Exam-objekter tilsvarende teksten lest fra input-argumentet, og returnere alle Exam-objektene. Det kreves ikke spesifikk håndtering av feil format ut over at metoden ikke skal utløse unntak.
Oppgave b)Tegn et objektdiagram for objektene som opprettes ved innlesing av eksempelet i vedlegg 2.
Oppgave c)
Oppgave d)
|
...
Expand | ||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||
ExamRequirement-klassen (se vedlegg 3) representerer en sjekk for om et Exam-objekt, altså en avlagt eksamen, tilfredsstiller visse krav. F.eks. kan en lage et ExamRequirement-objekt som sjekker om en har fått minst C i TDT4100. Selve testen gjøres av accepts-metoden, som sjekker det angitte Exam-argumentet mot verdiene som ligger i ExamRequirement-objektet selv. Oppgave a)Skriv ferdig konstruktør nr. 2, og gjør den så kort og enkel som mulig.
Oppgave b)accepts-metoden m/hjelpemetoden acceptsCourse er ferdigskrevet, men koden inneholder (minst) tre feil. Skriv korrekt kode.
Oppgave c)Nederst i klassen er feltet atLeastCInTdt4100 deklarert. Med koden atLeastCInTdt4100.accepts(...) skal en kunne sjekke om en har minst C i TDT4100. Skriv ferdig deklarasjonen, både modifikator(er) og initialiseringsuttrykket.
Oppgave d)Du trenger å sjekke om en eksamen er for et masteremne på IDI, som har kode som begynner på ”TDT42”, f.eks. TDT4250. Forklar hvordan du kan bruke arv for å organisere koden og hvordan eksisterende kode evt. må endres.
Oppgave e)Skriv kode for et funksjonelt grensesnitt IExamRequirement, som ExamRequirement (allerede implisitt) implementerer. Forklar hvorfor et slikt grensesnitt kan være nyttig, fremfor å bare ha ExamRequirement-klassen.
Oppgave f)Skriv en alternativ deklarasjon av atLeastCInTdt4100 som har IExamRequirement som type og utnytter Java 8 sin funksjonssyntaks i initialiseringsuttrykket.
|
Expand | ||
---|---|---|
| ||
|
...
Expand | ||
---|---|---|
| ||
|
...