From 078fe744097f0597c08f2a64752967b5005f2411 Mon Sep 17 00:00:00 2001 From: Veritorakka <eemeli302@gmail.com> Date: Wed, 3 May 2023 16:18:00 +0300 Subject: [PATCH] =?UTF-8?q?Tein=20teht=C3=A4v=C3=A4n=201=20kohdan=20C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/fi/utu/tech/ooj/exercise2/Lasku.java | 71 +++++++++++++++++++ .../fi/utu/tech/ooj/exercise2/Laskurivi.java | 61 ++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 src/main/java/fi/utu/tech/ooj/exercise2/Lasku.java create mode 100644 src/main/java/fi/utu/tech/ooj/exercise2/Laskurivi.java diff --git a/src/main/java/fi/utu/tech/ooj/exercise2/Lasku.java b/src/main/java/fi/utu/tech/ooj/exercise2/Lasku.java new file mode 100644 index 0000000..9eea12e --- /dev/null +++ b/src/main/java/fi/utu/tech/ooj/exercise2/Lasku.java @@ -0,0 +1,71 @@ +package fi.utu.tech.ooj.exercise2; + +import java.util.ArrayList; + +public class Lasku { + private Asiakas asiakas; + private ArrayList<Laskurivi> rivit; + + /** + * Konstruktori luo uuden laskun annetulla asiakkaalla ja tyhjillä laskuriveillä. + * + * @param asiakas Laskun asiakas. + */ + public Lasku(Asiakas asiakas) { + this.asiakas = asiakas; + this.rivit = new ArrayList<Laskurivi>(); + } + + /** + * Metodi lisää tuotteen laskun riville. + * + * @param tuote Lisättävä tuote. + * @param maara Lisättävän tuotteen määrä. + */ + public void lisaaTuote(Tuote tuote, int maara, double alennus) { + Laskurivi rivi = new Laskurivi(tuote, maara, alennus); + this.rivit.add(rivi); + } + + /** + * Metodi poistaa tuotteen laskun riviltä. + * + * @param rivi Poistettava laskurivi. + */ + public void poistaRivi(Laskurivi rivi) { + this.rivit.remove(rivi); + } + + /** + * Metodi palauttaa laskun kokonaishinnan. + * + * @return Laskun kokonaishinta. + */ + public double getKokonaishinta() { + double kokonaishinta = 0.0; + + for (Laskurivi rivi : this.rivit) { + kokonaishinta += rivi.getRivihinta(); + } + + return kokonaishinta; + } + + /** + * Metodi palauttaa laskun asiakkaan. + * + * @return Laskun asiakas. + */ + public Asiakas getAsiakas() { + return this.asiakas; + } + + /** + * Metodi palauttaa laskun laskurivit. + * + * @return Laskun laskurivit. + */ + public ArrayList<Laskurivi> getRivit() { + return this.rivit; + } +} diff --git a/src/main/java/fi/utu/tech/ooj/exercise2/Laskurivi.java b/src/main/java/fi/utu/tech/ooj/exercise2/Laskurivi.java new file mode 100644 index 0000000..9a26dde --- /dev/null +++ b/src/main/java/fi/utu/tech/ooj/exercise2/Laskurivi.java @@ -0,0 +1,61 @@ +package fi.utu.tech.ooj.exercise2; + +/** + * Luokka kuvaa yksittäistä riviä laskussa. + */ +public class Laskurivi { + private Tuote tuote; + private int maara; + private double alennus; + + /** + * Konstruktori luo uuden laskurivin. + * + * @param tuote Laskurivin tuote. + * @param maara Laskurivin tuotteiden määrä. + * @param alennus Laskurivin tuotekohtainen alennus. + */ + public Laskurivi(Tuote tuote, int maara, double alennus) { + this.tuote = tuote; + this.maara = maara; + this.alennus = alennus; + } + + /** + * Metodi palauttaa laskurivin tuotteen. + * + * @return Laskurivin tuote. + */ + public Tuote getTuote() { + return this.tuote; + } + + /** + * Metodi palauttaa laskurivin tuotteiden määrän. + * + * @return Laskurivin tuotteiden määrä. + */ + public int getMaara() { + return this.maara; + } + + /** + * Metodi palauttaa laskurivin tuotekohtaisen alennuksen. + * + * @return Laskurivin tuotekohtainen alennus. + */ + public double getAlennus() { + return this.alennus; + } + + /** + * Metodi palauttaa laskurivin rivihinnan. + * + * @return Laskurivin rivihinta. + */ + public double getRivihinta() { + double hinta = this.tuote.getHintaAlv() * this.maara; + hinta -= hinta * (this.alennus / 100.0); + return hinta; + } +} \ No newline at end of file -- GitLab