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);
}
}
}