Tee luokka Kirja. Kirja-luokalla on ominaisuudet nimi, isbn, hinta ja julkaisuvuosi. Tee luokkaan set-, get- ja toString-metodit, parametriton konstruktori ja parametrillinen konstruktori. Käytä metodien tekemiseen Eclipsen Source valikosta löytyviä Generate toimintoja. Tee ohjelmaluokka KirjaOhjelma, jossa tehdään kaksi olioita. Ensimmäinen olio tehdään parametrillisella konstruktorilla ja näytetään toString-metodilla. Toinen olio tehdään parametrittomalla konstruktorilla. Tiedot asetetaan set-metodeilla ja näytetään get-metodeilla. ``` Example output: Anna nimi: 97 Things Every Java Programmer Should Know Anna isbn: ei tietoa Anna hinta: 26,80 Anna julkaisuvuosi: 2020 Kirja [nimi=97 Things Every Java Programmer Should Know, isbn=ei tietoa, hinta=26.8, vuosi=2020] Nimi: 97 Things Every Java Programmer Should Know Isbn: ei tietoa Hinta: 26,80 Julkaisuvuosi: 2020 ``` ------------------ **Kirja.java** ``` public class Kirja { private String nimi, isbn; private double hinta; private int julkaisuvuosi; public void setNimi(String nimi) { this.nimi = nimi; } public void setIsbn(String isbn) { this.isbn = isbn; } public void setHinta(double hinta) { this.hinta = hinta; } public void setJulkaisuvuosi(int julkaisuvuosi) { this.julkaisuvuosi = julkaisuvuosi; } public String getNimi() { return this.nimi; } public String getIsbn() { return this.isbn; } public double getHinta() { return this.hinta; } public int getJulkaisuvuosi() { return this.julkaisuvuosi; } // Parametriton konstruktori public Kirja() { } // Parametrillinen konstruktori public Kirja(String nimi, String isbn, double hinta, int julkaisuvuosi) { this.setNimi(nimi); this.setIsbn(isbn); this.setHinta(hinta); this.setJulkaisuvuosi(julkaisuvuosi); } @Override public String toString() { return "Kirja [" + "nimi=" + this.nimi + ", isbn=" + this.isbn + ", hinta=" + this.hinta + ", vuosi=" + this.julkaisuvuosi + "]"; } } ``` ------------------ **KirjaOhjelma.java** ``` import java.text.DecimalFormat; import java.util.InputMismatchException; import java.util.Scanner; public class KirjaOhjelma { private static Kirja kirja = new Kirja(); private String kirjaData; public static void main() { // Luodaan olio: Parametriton KirjaOhjelma // Täällä saamme datan, jota voimme käsitellä parametrillisessa // oliossa. KirjaOhjelma kirjaJavaObject_1 = new KirjaOhjelma(); // Luodaan olio: Parametrillinen KirjaOhjelma KirjaOhjelma kirjaJavaObject_2 = new KirjaOhjelma( kirja.getNimi(), kirja.getIsbn(), kirja.getHinta(), kirja.getJulkaisuvuosi() ); System.out.println(kirja); System.out.println(kirjaJavaObject_2); } // Parametrillinen konstruktori public KirjaOhjelma(String nimi, String isbn, double hinta, int julkaisuvuosi) { DecimalFormat r2 = new DecimalFormat(".00"); this.kirjaData = String.format( "Nimi: %s\nIsbn: %s\nHinta: %s\nJulkaisuvuosi: %s\n", nimi, isbn, r2.format(hinta), julkaisuvuosi ); } @Override public String toString() { return this.kirjaData; } // Parametriton konstruktori public KirjaOhjelma() { Scanner syote = new Scanner(System.in); System.out.print("Anna nimi: "); kirja.setNimi(syote.nextLine()); System.out.print("Anna isbn: "); kirja.setIsbn(syote.nextLine()); try { System.out.print("Anna hinta: "); kirja.setHinta(syote.nextDouble()); } catch (InputMismatchException e) { System.err.println("Syöttämäsi hinta ei ole kelvollinen luku"); System.exit(1); } try { System.out.print("Anna julkaisuvuosi: "); kirja.setJulkaisuvuosi(syote.nextInt()); } catch (InputMismatchException e) { System.err.println("Syöttämäsi vuosi ei ole kelvollinen luku"); System.exit(1); } } } ```