From 17967bb458bea0b389ff2521e0a3a4d40810462f Mon Sep 17 00:00:00 2001 From: Matias Kokko <matias.v.kokko@utu.fi> Date: Sun, 21 May 2023 20:50:16 +0300 Subject: [PATCH] 2 done --- .../java/fi/utu/tech/ooj/exercise3/Kirja.java | 32 +++++++++++++- .../utu/tech/ooj/exercise3/KirjaKokoelma.java | 28 ++++++++++++ .../fi/utu/tech/ooj/exercise3/Kirjasto.java | 43 ++++++++++++++++--- .../java/fi/utu/tech/ooj/exercise3/Main.java | 37 +++++++++++++++- 4 files changed, 133 insertions(+), 7 deletions(-) diff --git a/src/main/java/fi/utu/tech/ooj/exercise3/Kirja.java b/src/main/java/fi/utu/tech/ooj/exercise3/Kirja.java index 13d735c..c1270d4 100644 --- a/src/main/java/fi/utu/tech/ooj/exercise3/Kirja.java +++ b/src/main/java/fi/utu/tech/ooj/exercise3/Kirja.java @@ -1,5 +1,7 @@ package fi.utu.tech.ooj.exercise3; +import java.util.Objects; + public class Kirja { private String kirjanNimi; private String kirjailijanNimi; @@ -35,5 +37,33 @@ public class Kirja { this.julkaisuVuosi = julkaisuVuosi; } - + public Kirja clone(){ + return new Kirja( + kirjanNimi, + kirjailijanNimi, + julkaisuVuosi + ); + } + @Override + public String toString() { + return "Kirja {" + + "kirjan nimi: " + kirjanNimi + '\'' + + ", kirjailijan nimi: " + kirjailijanNimi + '\'' + + ", julkaisuvuosi: " + julkaisuVuosi + + '}'; + } + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + Kirja kirja = (Kirja) o; + return julkaisuVuosi == kirja.julkaisuVuosi && kirjanNimi.equals(kirja.kirjanNimi) && kirjailijanNimi.equals(kirja.kirjailijanNimi); + } + @Override + public int hashCode() { + return Objects.hash(kirjanNimi, kirjailijanNimi, julkaisuVuosi); + } } + diff --git a/src/main/java/fi/utu/tech/ooj/exercise3/KirjaKokoelma.java b/src/main/java/fi/utu/tech/ooj/exercise3/KirjaKokoelma.java index 285fd40..28b2a1c 100644 --- a/src/main/java/fi/utu/tech/ooj/exercise3/KirjaKokoelma.java +++ b/src/main/java/fi/utu/tech/ooj/exercise3/KirjaKokoelma.java @@ -3,6 +3,7 @@ package fi.utu.tech.ooj.exercise3; import java.io.PrintStream; import java.util.ArrayList; import java.util.List; +import java.util.Objects; public class KirjaKokoelma { @@ -30,4 +31,31 @@ public class KirjaKokoelma { kirjaListaus.add(teos); } + public KirjaKokoelma clone(){ + KirjaKokoelma output = new KirjaKokoelma(kokoelmanNimi); + for(Kirja kirja : kirjaListaus){ + output.lisaaKirja(kirja.clone()); + } + return output; + } + @Override + public String toString() { + return "Kirjakokoelma {" + + "kokoelman nimi: " + kokoelmanNimi + '\'' + + ", kirjalistaus: " + kirjaListaus.toString() + + '}'; + } + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + KirjaKokoelma that = (KirjaKokoelma) o; + return kokoelmanNimi.equals(that.kokoelmanNimi) && kirjaListaus.equals(that.kirjaListaus); + } + @Override + public int hashCode() { + return Objects.hash(kokoelmanNimi, kirjaListaus); + } } diff --git a/src/main/java/fi/utu/tech/ooj/exercise3/Kirjasto.java b/src/main/java/fi/utu/tech/ooj/exercise3/Kirjasto.java index 2478ff6..e3e4e97 100644 --- a/src/main/java/fi/utu/tech/ooj/exercise3/Kirjasto.java +++ b/src/main/java/fi/utu/tech/ooj/exercise3/Kirjasto.java @@ -1,9 +1,6 @@ package fi.utu.tech.ooj.exercise3; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; public class Kirjasto { @@ -11,6 +8,7 @@ public class Kirjasto { private String osoite; private List<KirjaKokoelma> kokoelmat = new ArrayList<>(); private Set<Kirjasto> sivukirjastot = new HashSet<>(); + private java.util.Objects Objects; public Kirjasto(String kirjastonNimi, String osoite) { this.kirjastonNimi = kirjastonNimi; @@ -57,5 +55,40 @@ public class Kirjasto { sivukirjastot.add(input); } - + public Kirjasto clone(){ + Kirjasto output = new Kirjasto( + kirjastonNimi, + osoite + ); + for(Kirjasto kirjasto : sivukirjastot){ + output.lisaaSivukirjasto(kirjasto.clone()); + } + for(KirjaKokoelma kokoelma : kokoelmat){ + output.lisaaKokoelma(kokoelma.clone()); + } + return output; + } + @Override + public String toString() { + return "Kirjasto {" + + "kirjaston nimi: " + kirjastonNimi + '\'' + + ", osoite: " + osoite + '\'' + + ", kokoelmat: " + kokoelmat.toString() + + ", sivukirjastot: " + sivukirjastot.toString() + + '}'; + } + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + Kirjasto kirjasto = (Kirjasto) o; + return kirjastonNimi.equals(kirjasto.kirjastonNimi) && osoite.equals(kirjasto.osoite) && kokoelmat.equals(kirjasto.kokoelmat) && sivukirjastot.equals(kirjasto.sivukirjastot); + } + @Override + public int hashCode() { + return Objects.hash(kirjastonNimi, osoite, kokoelmat, sivukirjastot); + } } + diff --git a/src/main/java/fi/utu/tech/ooj/exercise3/Main.java b/src/main/java/fi/utu/tech/ooj/exercise3/Main.java index 0c5fb2a..9865586 100644 --- a/src/main/java/fi/utu/tech/ooj/exercise3/Main.java +++ b/src/main/java/fi/utu/tech/ooj/exercise3/Main.java @@ -18,7 +18,42 @@ public class Main { /* * Testin jälkeen alla olevan rivin voi joko kommentoida tai poistaa. */ - System.out.println("*** Harjoitustyöpohja käynnistyy ***"); + + Kirja ekaKirja = new Kirja( + "Kirja1", + "kirjailija1", + 2023 + ); + Kirja tokaKirja = new Kirja( + "Kirja2", + "kirjailija2", + 2022 + ); + KirjaKokoelma kokoelma = new KirjaKokoelma( + "kirjaKokoelma" + ); + Kirjasto ekaKirjasto = new Kirjasto( + "ekaKirjasto", + "lahella" + ); + Kirjasto tokaKirjasto = new Kirjasto( + "tokaKirjasto", + "suhteellisen lahella" + ); + Kirjasto kolmasKirjasto = new Kirjasto( + "kolmasKirjasto", + "kaukana" + ); + + kokoelma.lisaaKirja(ekaKirja); + kokoelma.lisaaKirja(tokaKirja); + ekaKirjasto.lisaaKokoelma(kokoelma); + tokaKirjasto.lisaaKokoelma(kokoelma); + ekaKirjasto.lisaaSivukirjasto(tokaKirjasto); + ekaKirjasto.lisaaSivukirjasto(kolmasKirjasto); + + System.out.println(ekaKirjasto.equals(ekaKirjasto.clone())); + System.out.println(ekaKirjasto.toString()); HashSet<Ajoneuvo> ajoneuvot = new HashSet<Ajoneuvo>(); HashSet<HenkiloAuto> henkiloautot = new HashSet<HenkiloAuto>(); -- GitLab