⌛ JavaFX laskin

Aseta koodisi pääluokka Maven-projektin hakemistorakenteen mukaisesti tiedostoon Round12/calc/src/main/java/fi/tuni/prog3/calc/Calculator.java. Kuten hakemistorakenne ilmentää, toteutuksesi tulee olla määritetty pakkaukseen fi.tuni.prog3.calc.

Tässä tehtävässä toteutetaan yksinkertainen laskin JavaFX-käyttöliittymäkirjastolla. Laskimessa tulee olla seuraavat osat:

  • Syötekentät ensimmäiselle ja toiselle operandille.

    • Syötekenttien tulee olla JavaFX:n TextField-elementtejä, joille on määritetty JavaFX:n elementtien jäsenfunktion setId avulla id:t “fieldOp1” ja “fieldOp2”.

    • Syötekenttien edessä tulee olla otsaketekstit “First operand:” ja “Second operand:”. Nämä tulee toteuttaa JavaFX:n Text- tai Label-elementteinä ja niille tulee määrittää id:t “labelOp1” ja “labelOp2”.

  • Neljää laskutoimitusta vastaavat napit: yhteen-, vähennys-, kerto- ja jakolasku.

    • Nämä tulee toteuttaa JavaFX:n Button-elementteinä ja niille tulee määrittää id:t “btnAdd”, “btnSub”, “btnMul” ja “btnDiv”.

    • Napeilla pitää olla tekstit “Add”, “Subtract”, “Multiply” ja “Divide”.

  • Tuloskenttä.

    • Tuloskentän tulee olla JavaFX:n Label-elementti, jolle on määritetty id “fieldRes” ja jonka tausta on määritetty valkoiseksi (tutustu esim. jäsenfunktion setBackground dokumentaatioon; voit käyttää väriä Color.WHITE). Tuloskenttä on aluksi tyhjä (sisältää tyhjän merkkijonon “”).

    • Tuloskentän edessä tulee olla otsaketeksti “Result:”, joka on JavaFX:n Text- tai Label-elementti ja jolle on määritetty id “labelRes”.

Edellä pyydettiin määrittämäämn elementeille id:t, jotta käyttöliittymää olisi kohtalaisen yksinkertaista testata elementtejä tutkivilla yksikkötesteillä.

Alla on esimerkkikuva laskimen mahdollisesta käyttöliittymästä. Huomaa, että tämä on esimerkki eli sinun ei ole pakko tehdä täsmälleen samannäköistä käyttöliittymää. Oleellista on, että toteutat vastaavat osat.

Esimerkki laskimen käyttöliittymästä.

Jos käyttäjä antaa syötekenttiin syöteluvut ja painaa jotain laskutoimitusta vastaavaa nappia, pitää tuloskenttään ilmestyä laskutoimituksen tulos. Laskutoimituksen suorittaminen ei vaikuta syötekenttien sisältöön; niiden arvot säilyvät ennallaan, kunnes käyttäjä muuttaa niitä. Toteutuksen tulee käsitellä sekä syötelukuja että tulosta double-tyyppisinä arvoina. Alla on esimerkit kaikista neljästä laskutoimituksesta:

../../../_images/calc_add.png ../../../_images/calc_sub.png ../../../_images/calc_mul.png ../../../_images/calc_div.png

Toteutuksesi pääluokan pitää olla fi.tuni.prog3.calc.Calculator (eli pakkaukseen fi.tuni.prog3.calc määritetty luokka Calculator). Pääluokalla tarkoitetaan sitä luokkaa, jossa annat toteutuksen JavaFX-käyttöliittymän alustavalle funktiolle start. Toteutukseesi saa kuulua muitakin kooditiedostoja, kunhan nekin sijaitsevat alihakemistossa src/main/java/fi/tuni/prog3/calc.

Testauksesta

Tässä tehtävässä ei ole GUI-pohjaisen luonteensa vuoksi tekstimuotoisia esimerkkisyötteitä tai -tulosteita. Laskimen toiminnallisuuden varmistaminen omatoimisesti lienee kohtalaisen yksinkertaista, koska laskimessa on melko suppea määrä toiminnallisuutta ja toiminnot ovat yksinkertaisia suorittaa. Pyri tarkistamaan, että et ole tehnyt kirjoitusvirheitä määrittäessäsi elementtien id-arvoja ja otsaketekstejä.

Tehtävän palautus avautuu pienellä viiveellä. Tarkistus tulee perustumaan yksikkötesteihin, jotka antavat toteutuksellesi pisteitä kumulatiivisesti sen mukaan, moniko testi menee virheittä läpi. Tehtävästä on siten mahdollista saada osittaispisteitä.

A+ esittää tässä kohdassa tehtävän palautuslomakkeen.