⌛⌛ Vertailurajapinnat¶
Tehtävään on saatavilla valmista materiaalia etätietovarastossa (round6/comparison-hakemisto).
Aseta vastauksesi tiedostoon Attainment.java paikallisen tietovarastosi round6/comparison-hakemistossa-
Tässä tehtävässä kokeillaan erilaisia tapoja toteuttaa vertailufunktio jollekin luokalle. Pohjana
käytetään aiemmasta opiskelijarekisteriä koskevasta tehtävästä tuttua luokkaa Attainment,
joka kuvaa kurssisuorituksen tallentamalla kurssikoodin, opiskelijanumeron ja arvosanan.
Tässä tehtävässä tehtävällä luokalla Attainment tulee olla seuraavat ominaisuudet:
Toteuttaa rajapinnan
Comparable<Attainment>.Toteuta funktio
compareTositen, että se vertailee ensisijaisesti opiskelijanumeroita ja toissijaisesti kurssikoodeja. Tee sekä opiskelijanumeron että kurssikoodin vertailuString-luokancompareTo-funktiolla.
Julkiset rakentimet ja jäsenfunktiot:
Rakennin
Attainment(String courseCode, String studentNumber, int grade)alustaaAttainment-olioon rakentimen parametreina saamat kurssikoodin, opiskelijanumeron ja arvosanan.Jäsenfunktiot
getCourseCode(),getStudentNumber()jagetGrade()palauttavat suorituksen kurssikoodin ja opiskelijanumeron, jotka ovatString-merkkijonoja sekä arvosanan, joka onint-arvo.Jäsenfunktio
String toString(), joka korvaa yliluokaltaObjectperityn oletusversion. Funktio palauttaa kurssisuoritusta kuvaavan muotoa “kurssikoodi opiskelijanumero arvosana” olevan merkkijonon.
Julkiset luokkavakiot:
Comparator<Attainment> CODE_STUDENT_CMPRajapinnan
Comparator<Attainment>toteuttava olio, jonka jäsenfunktiocomparevertailee kahtaAttainment-oliota ensisijaisesti kurssikoodin ja toissijaisesti opiskelijanumeron perusteella.
Comparator<Attainment> CODE_GRADE_CMPRajapinnan
Comparator<Attainment>toteuttava olio, jonka jäsenfunktiocomparevertailee kahtaAttainment-oliota ensisijaisesti kurssikoodin ja toissijaisesti kurssiarvosanan perusteella. Kurssiarvosanoja verrataan käänteisesti (tulevat laskevaan järjestykseen).
Muista esitellä vakiot määreillä
public,staticjafinal.Voit alustaa vakiot esimerkiksi nimettömillä luokkamäärityksillä.
Toteutuksen testaus¶
Voit testata luokkiasi tiedostossa ComparisonTest.java annetun valmiin testiohjelman,
tiedostoissa attainments1.txt ja attainments2.txt annettujen testidatojen, ja
tiedostoissa output1.txt ja output2.txt annettujen esimerkkitulosteiden avulla. Aseta nämä
tiedostot sekä omat luokkatoteutuksesi samaan hakemistoon, käännä ohjelma esimerkiksi komennolla
javac *.java, ja suorita ensimmäinen testi komennolla
java ComparisonTest attainments1.txt ja toinen testi komennolla
java ComparisonTest attainments2.txt. Suoritusten pitäisi
tuottaa tiedostoissa output1.txt ja output2.txt kuvatut tulosteet.
A+ esittää tässä kohdassa tehtävän palautuslomakkeen.