diff --git a/src/main/java/fi/utu/tech/ooj/exercise2/Asiakas.java b/src/main/java/fi/utu/tech/ooj/exercise2/Asiakas.java
index f3d14899faa8ee4a68aa7a548c9055ae9ae002df..1c9ab899520182333eae45193f4d60ba575112b1 100644
--- a/src/main/java/fi/utu/tech/ooj/exercise2/Asiakas.java
+++ b/src/main/java/fi/utu/tech/ooj/exercise2/Asiakas.java
@@ -1,6 +1,10 @@
 package fi.utu.tech.ooj.exercise2;
 /**
  * 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 {
     private String nimi;
diff --git a/src/main/java/fi/utu/tech/ooj/exercise2/Asiakasrekisteri.java b/src/main/java/fi/utu/tech/ooj/exercise2/Asiakasrekisteri.java
index 179ce707ccc4cb914f9043bbe27432e8484860f4..3c0987a7e9a26e098b6909ce33379e06fc476265 100644
--- a/src/main/java/fi/utu/tech/ooj/exercise2/Asiakasrekisteri.java
+++ b/src/main/java/fi/utu/tech/ooj/exercise2/Asiakasrekisteri.java
@@ -6,6 +6,10 @@ import java.util.ArrayList;
  * Asiakasrekisteri-luokka ylläpitää listaa kaikista asiakkaista.
  * Se mahdollistaa uusien asiakkaiden lisäämisen rekisteriin sekä
  * 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 {
     private ArrayList<Asiakas> asiakkaat;
diff --git a/src/main/java/fi/utu/tech/ooj/exercise2/Lasku.java b/src/main/java/fi/utu/tech/ooj/exercise2/Lasku.java
index 708c09c8a03266ebfe989d2e3056a62b983e5bbe..e2a101932f1728fa0a907830fc3fe612eab6363b 100644
--- a/src/main/java/fi/utu/tech/ooj/exercise2/Lasku.java
+++ b/src/main/java/fi/utu/tech/ooj/exercise2/Lasku.java
@@ -2,6 +2,11 @@ package fi.utu.tech.ooj.exercise2;
 
 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 {
     private Asiakas asiakas;
     private ArrayList<Laskurivi> 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
index 40b2688003d158089a5bcfd78a3cd798a659cf21..229f8fbce10b1a0d3ca8201326f718a3fd0c4fa9 100644
--- a/src/main/java/fi/utu/tech/ooj/exercise2/Laskurivi.java
+++ b/src/main/java/fi/utu/tech/ooj/exercise2/Laskurivi.java
@@ -2,6 +2,11 @@ package fi.utu.tech.ooj.exercise2;
 
 /**
  * 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 {
     private Tuote tuote;
@@ -14,8 +19,21 @@ public class Laskurivi {
      * @param tuote Laskurivin tuote.
      * @param maara Laskurivin tuotteiden määrä.
      * @param alennus Laskurivin tuotekohtainen alennus.
+     * @throws IllegalArgumentException jos invariantti ei toteudu
      */
     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.maara = maara;
         this.alennus = alennus;
diff --git a/src/main/java/fi/utu/tech/ooj/exercise2/Tuote.java b/src/main/java/fi/utu/tech/ooj/exercise2/Tuote.java
index 470ad554d419cd507e77132c104907a35bc0e05f..f2757d2131019dc82c4c8abfc14c569057c2038d 100644
--- a/src/main/java/fi/utu/tech/ooj/exercise2/Tuote.java
+++ b/src/main/java/fi/utu/tech/ooj/exercise2/Tuote.java
@@ -3,6 +3,9 @@ package fi.utu.tech.ooj.exercise2;
 /**
  * Tuote-luokka kuvaa Oy Jekku Ab:n myymää tuotetta.
  * 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 {
     private String nimi;
diff --git a/src/main/java/fi/utu/tech/ooj/exercise2/Tuoteluettelo.java b/src/main/java/fi/utu/tech/ooj/exercise2/Tuoteluettelo.java
index 8c7098286d0cf7fe0046b0bf73f32b40fd3adc04..3e178a30e0a64b7d8cd697bbe228b8aec4907bc3 100644
--- a/src/main/java/fi/utu/tech/ooj/exercise2/Tuoteluettelo.java
+++ b/src/main/java/fi/utu/tech/ooj/exercise2/Tuoteluettelo.java
@@ -2,6 +2,10 @@ package fi.utu.tech.ooj.exercise2;
 
 import java.util.ArrayList;
 
+/*
+ * Luokkainvariantti:
+ * Tuotteiden lukumäärä ei voi olla negatiivinen.
+ */
 public class Tuoteluettelo {
     private ArrayList<Tuote> tuotteet;