Skip to content
Snippets Groups Projects
Commit 95d095d0 authored by Veritorakka's avatar Veritorakka
Browse files

Luokkainvarianttien tekeminen

parent 8eee05dc
Branches
No related tags found
No related merge requests found
package fi.utu.tech.ooj.exercise2; package fi.utu.tech.ooj.exercise2;
/** /**
* Asiakas-luokka sisältää tiedot yksittäisestä asiakkaasta. * Asiakas-luokka sisältää tiedot yksittäisestä asiakkaasta.
* Luokkainvariantti:
* Asiakkaan nimi ei saa olla null eikä tyhjä merkkijono. Katuosoitteen, postinumeron, postitoimipaikan ja puhelinnumeron tulee olla ei-null merkkijonoja, joiden pituus on vähintään yksi merkki.
* Postinumeron tulee olla viiden numeron mittainen merkkijono.
* Puhelinnumeron tulee sisältää vain numeroita, välilyöntejä, plus-merkkejä ja/tai miinusmerkkejä.
*/ */
public class Asiakas { public class Asiakas {
private String nimi; private String nimi;
......
...@@ -6,6 +6,10 @@ import java.util.ArrayList; ...@@ -6,6 +6,10 @@ import java.util.ArrayList;
* Asiakasrekisteri-luokka ylläpitää listaa kaikista asiakkaista. * Asiakasrekisteri-luokka ylläpitää listaa kaikista asiakkaista.
* Se mahdollistaa uusien asiakkaiden lisäämisen rekisteriin sekä * Se mahdollistaa uusien asiakkaiden lisäämisen rekisteriin sekä
* olemassa olevien asiakkaiden hakemisen ja poistamisen rekisteristä. * olemassa olevien asiakkaiden hakemisen ja poistamisen rekisteristä.
* Luokkainvariantti:
* Asiakasrekisteriin ei voi lisätä kahta samannimistä asiakasta.
* Tämä tarkoittaa sitä, että jos lisättävä asiakas löytyy jo rekisteristä samalla nimellä, sitä ei voida lisätä uudelleen.
* Tämä invariantti varmistaa sen, että rekisteriin ei tule duplikaattiasiakkaita.
*/ */
public class Asiakasrekisteri { public class Asiakasrekisteri {
private ArrayList<Asiakas> asiakkaat; private ArrayList<Asiakas> asiakkaat;
......
...@@ -2,6 +2,11 @@ package fi.utu.tech.ooj.exercise2; ...@@ -2,6 +2,11 @@ package fi.utu.tech.ooj.exercise2;
import java.util.ArrayList; import java.util.ArrayList;
/*
* Luokkainvariantti:
* Jokaisen laskurivin määrän tulee olla vähintään yksi (1) ja tuotekohtaisen alennuksen tulee olla välillä 0.0 ja 100.0 (sisältäen reunat).
* Lisäksi jokaisella laskurivillä tulee olla olemassa oleva Tuote-olio.
*/
public class Lasku { public class Lasku {
private Asiakas asiakas; private Asiakas asiakas;
private ArrayList<Laskurivi> rivit; private ArrayList<Laskurivi> rivit;
......
...@@ -2,6 +2,11 @@ package fi.utu.tech.ooj.exercise2; ...@@ -2,6 +2,11 @@ package fi.utu.tech.ooj.exercise2;
/** /**
* Luokka kuvaa yksittäistä riviä laskussa. * Luokka kuvaa yksittäistä riviä laskussa.
* Luokkainvariantti:
* Laskurivin määrän tulee olla vähintään 1.
* Laskurivin tuotteen tulee olla voimassa (eli ei-null).
* Laskurivin tuotteen hinnan tulee olla ei-negatiivinen.
* Laskurivin tuotekohtaisen alennuksen tulee olla ei-negatiivinen ja enintään 100.
*/ */
public class Laskurivi { public class Laskurivi {
private Tuote tuote; private Tuote tuote;
...@@ -14,8 +19,21 @@ public class Laskurivi { ...@@ -14,8 +19,21 @@ public class Laskurivi {
* @param tuote Laskurivin tuote. * @param tuote Laskurivin tuote.
* @param maara Laskurivin tuotteiden määrä. * @param maara Laskurivin tuotteiden määrä.
* @param alennus Laskurivin tuotekohtainen alennus. * @param alennus Laskurivin tuotekohtainen alennus.
* @throws IllegalArgumentException jos invariantti ei toteudu
*/ */
public Laskurivi(Tuote tuote, int maara, double alennus) { public Laskurivi(Tuote tuote, int maara, double alennus) {
if (maara < 1) {
throw new IllegalArgumentException("Laskurivin määrän tulee olla vähintään 1.");
}
if (tuote == null) {
throw new IllegalArgumentException("Laskurivin tuote ei voi olla null.");
}
if (tuote.getHintaAlv() < 0) {
throw new IllegalArgumentException("Laskurivin tuotteen hinta ei voi olla negatiivinen.");
}
if (alennus < 0 || alennus > 100) {
throw new IllegalArgumentException("Laskurivin tuotekohtaisen alennuksen tulee olla ei-negatiivinen ja enintään 100.");
}
this.tuote = tuote; this.tuote = tuote;
this.maara = maara; this.maara = maara;
this.alennus = alennus; this.alennus = alennus;
......
...@@ -3,6 +3,9 @@ package fi.utu.tech.ooj.exercise2; ...@@ -3,6 +3,9 @@ package fi.utu.tech.ooj.exercise2;
/** /**
* Tuote-luokka kuvaa Oy Jekku Ab:n myymää tuotetta. * Tuote-luokka kuvaa Oy Jekku Ab:n myymää tuotetta.
* Luokka sisältää tuotteen nimen, normaalihinnan ja ALV-prosentin. * Luokka sisältää tuotteen nimen, normaalihinnan ja ALV-prosentin.
* Luokkainvariantti:
* Normaalihinta ja ALV-prosentti määrittelevät yhdessä tuotteen kokonaishinnan.
* Kokonaishinta ei voi olla negatiivinen.
*/ */
public class Tuote { public class Tuote {
private String nimi; private String nimi;
......
...@@ -2,6 +2,10 @@ package fi.utu.tech.ooj.exercise2; ...@@ -2,6 +2,10 @@ package fi.utu.tech.ooj.exercise2;
import java.util.ArrayList; import java.util.ArrayList;
/*
* Luokkainvariantti:
* Tuotteiden lukumäärä ei voi olla negatiivinen.
*/
public class Tuoteluettelo { public class Tuoteluettelo {
private ArrayList<Tuote> tuotteet; private ArrayList<Tuote> tuotteet;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment