⌛ Kuviot

Tehtävään on saatavilla valmista materiaalia etätietovarastossa (round6/shapes-hakemisto).

Tehtävän palautus koostuu Maven-projektista. Sijoita pom.xml-tiedosto paikallisen tietovarastosi round6/shapes-hakemistoon ja tee tähän hakemistoon src/main/java-niminen alihakemisto. Tee luokkatiedostot Circle.java, Rectangle.java ja IShapeMetrics.java ja liitä ne fi.tuni.prog3.shapes-nimiseen pakkaukseen. Tiedostojesi tulee olla siten hakemistossa round6/shapes/src/main/java/fi/tuni/prog3/shapes. Käytämme tässä tehtävässä tapaa nimetä rajapinta I-etuliitteellä. Tämä on vakiintunut käytäntö esimerkiksi C#-kielessä, ja jotkut käyttävät sitä myös Javassa.

Tässä tehtävässä kokeillaan rajapinnan toteuttamista muutamalla luokalla. Tee:

  • Rajapinta IShapeMetrics, jossa on:

    • Jäsenmuuttuja double PI, joka esittää piin likiarvon viiden desimaalin tarkkuudella.

    • Abstraktit jäsenfunktiot String name(), double area() ja double circumference().

  • Luokka Circle, joka toteuttaa rajapinnan IShapeMetrics ja tallentaa ympyrän säteen double-tyyppisenä arvona. Julkiset jäsenet:

    • Rakennin Circle(double radius), joka asettaa säteen arvon.

    • Jäsenfunktio String toString(), joka korvaa yliluokalta Object perityn oletusversion. Funktio palauttaa merkkijonon “Circle with radius: x”, jossa x on säteen arvo kahden desimaalin tarkkuudella. Desimaalierottimena käytetään pistettä. Voit muotoilla merkkijonon haluttuun muotoon String-luokan format-jäsenfunktiolla.

    • Jäsenfunktio String name(), joka palauttaa merkkijonon “circle”.

    • Jäsenfunktio double area(), joka palauttaa ympyrän pinta-alan, jonka laskennassa on käytetty piin likiarvoa PI.

    • Jäsenfunktio double circumference(), joka palauttaa ympyrän piirin, jonka laskennassa on käytetty piin likiarvoa PI.

  • Luokka Rectangle, joka toteuttaa rajapinnan IShapeMetrics ja tallentaa suorakulmion korkeuden ja leveyden double-tyyppisinä arvoina. Julkiset jäsenet:

    • Rakennin Rectangle(double height, double width), joka asettaa pituuden ja leveyden.

    • Jäsenfunktio String toString(), joka korvaa yliluokalta Object perityn oletusversion. Funktio palauttaa merkkijonon “Rectangle with height x and width y”, jossa x on suorakulmion korkeus ja y suorakulmion leveys kahden desimaalin tarkkuudella. Desimaalierottimena käytetään pistettä. Voit muotoilla merkkijonon haluttuun muotoon String-luokan format-jäsenfunktiolla.

    • Jäsenfunktio String name(), joka palauttaa merkkijonon “rectangle”.

    • Jäsenfunktio double area(), joka palauttaa suorakulmion pinta-alan.

    • Jäsenfunktio double circumference(), joka palauttaa suorakulmion piirin.

Automaattiset sekä alla kuvatut testit olettavat, että teet projektitiedostoosi pom.xml seuraavat määritykset:

  • artifactId-elementin arvo on shapes.

  • version-elementin arvo on 1.0.

  • maven.compiler.source ja maven.compiler.target -elementtien arvo on 17 tai pienempi. Tarkistimella on asennettuna Java 17, joten tätä uudempaa versiota ei voi käyttää.

  • Onejar-liitännäisen määritys, jonka mainClass-elementin arvo on InterfaceTest, joka on alla kuvattu valmiina annettu testiluokka.

Toteutuksen testaus

Voit testata luokkiasi tiedostossa InterfaceTest.java annetun valmiin testiohjelman sekä tiedostoissa output1.txt ja output2.txt annettujen esimerkkitulosteiden avulla.

Aseta InterfaceTest.java Maven-projektisi alihakemiston src/main/java juureen ja muut tiedostot Maven-projektisi juurihakemistoon pom.xml tiedoston seuraksi. Edellä on huomattava, että InterfaceTest.java ei sisällä pakkausmääritystä, joten sitä ei siksi aseteta syvempään alihakemistoon.

Voit tämän jälkeen kääntää ohjelman komennolla mvn package ja suorittaa ensimmäisen testin komennolla java -jar target/shapes-1.0.one-jar.jar "4" "5" "6.0" "7.0" ja toisen testin komennolla java -jar target/shapes-1.0.one-jar.jar "4 4" "5 2" "6.0 12" "70.0 4" projektin juurihakemistossa. Suoritusten pitäisi tuottaa tiedostoissa output1.txt ja output2.txt kuvatut tulosteet.

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

Palautusta lähetetään...