From 5d99ce1925782eea1920b393fb97e25ccacdb87e Mon Sep 17 00:00:00 2001
From: ljenck <ljenck@utu.fi>
Date: Mon, 17 Apr 2023 20:00:49 +0300
Subject: [PATCH] "3 commit"

---
 .../fi/utu/tech/ooj/exercise1/Apurutiinit.java | 18 +++++++++++++++++-
 .../java/fi/utu/tech/ooj/exercise1/Main.java   |  9 ++++++---
 .../fi/utu/tech/ooj/exercise1/Opiskelija.java  |  5 ++---
 .../tech/ooj/exercise1/Tehtava4Vastaukset.txt  |  5 +++++
 .../fi/utu/tech/ooj/exercise1/VuosiKurssi.java |  3 ++-
 5 files changed, 32 insertions(+), 8 deletions(-)

diff --git a/src/main/java/fi/utu/tech/ooj/exercise1/Apurutiinit.java b/src/main/java/fi/utu/tech/ooj/exercise1/Apurutiinit.java
index 6c65362..44934fe 100644
--- a/src/main/java/fi/utu/tech/ooj/exercise1/Apurutiinit.java
+++ b/src/main/java/fi/utu/tech/ooj/exercise1/Apurutiinit.java
@@ -24,7 +24,23 @@ public class Apurutiinit {
     }
 
     public static void luoPalindromi() {
-         teksti = teksti + new StringBuilder(teksti).reverse().toString().substring(1);
+        teksti = teksti + new StringBuilder(teksti).reverse().toString().substring(1);
     }
 
 }
+/**
+ * 'kuplaLajittelu' rutiinilla on sivuvaikutus, koska se muuttaa alkuperäistä taulukkoa sen sijaan, että tekisi siitä kopion ja muuttaisi kopiota.
+ *
+ * Kuplalajittelu on hyödyllinen silloin kun halutaan muuttujan muuttuvan pysyvästi ja silloin voidaan myös käyttää useampaa rutiinia peräkkäin jolloin alkuperäinen
+ * muuttujan arvo voidaan muokata millaiseksi tahansa, joka voisi olla hyödyllinen esimerkiksi tiedon suojaamisessa. Kuplalajittelu on haitallinen siinä tapauksessa, jos halutaan säilyttää alkuperäinen taulukko ja esimerkiksi
+ * käyttää samaa taulukkoa useassa eri rutiinissa.
+ *
+ * Koodilla on sivuvaikutuksia, koska 'teksti' muuttujan arvo muuttuu useammassa rutiinissa.
+ * Sivuvaikutukset mukauttavat jatkuvasti 'teksti' muuttujan arvoa, mikä voi olla hyvä asia siinä tapauksessa, jos halutaan sen muuttuvan.
+ * Jos useampi henkilö käyttää ohjelmaa samanaikasesti ja suorittaa samat tehtävät täysin samanaikaisesti, niin 'teksti' muuttujan arvon muuttuminen johtaisi vähintääkin virheeseen.
+ *
+ * Tässä tapauksessa olisi kannattavampaa vain palauttaa muuttunut teksti ilman, että se muuttaa 'teksti' muuttujaa.
+ * 'teksti' muuttujan arvoa voidaan muuttaa 'asetaArvot(lkm, teksi)' rutiinilla, mikä johtaa siihen, että luokka on kapseloitu paremmin
+ * eikä asiakas pääse muuttamaan arvoja mitenkään muuten kuin käyttämällä tätä rutiinia, mikä johtaa vähemmän virhealttiiseen ohjelmaan.
+ *
+ */
diff --git a/src/main/java/fi/utu/tech/ooj/exercise1/Main.java b/src/main/java/fi/utu/tech/ooj/exercise1/Main.java
index 98be484..8a0f9a8 100644
--- a/src/main/java/fi/utu/tech/ooj/exercise1/Main.java
+++ b/src/main/java/fi/utu/tech/ooj/exercise1/Main.java
@@ -77,7 +77,7 @@ public class Main {
     * @.post RESULT sisältää kaikki syötteen alkiot ja on järjestetty nousevaan järjestykseen
      */
     public static int[] kuplaLajittelu(int[] inArr) {
-        int[] outArr = inArr;
+        int[] outArr = Arrays.copyOf(inArr, inArr.length);
         int n = outArr.length;
         int temp = 0;
         for(int i=0; i < n; i++){
@@ -103,7 +103,7 @@ public class Main {
         System.out.println("*** Harjoitustyöpohja käynnistyy ***");
 
         /*Kuplalajittelun testaus
-        * */
+         * */
         int[] lukuja = {1, 34, 2, 67, 4, 3, 10, 5};
         System.out.println(Arrays.toString(kuplaLajittelu(lukuja)));
 
@@ -128,7 +128,10 @@ public class Main {
         System.out.println(Apurutiinit.getTeksti());
 
 
-        
+
+
+
     }
 }
 
+
diff --git a/src/main/java/fi/utu/tech/ooj/exercise1/Opiskelija.java b/src/main/java/fi/utu/tech/ooj/exercise1/Opiskelija.java
index 6a87e4f..4b4add7 100644
--- a/src/main/java/fi/utu/tech/ooj/exercise1/Opiskelija.java
+++ b/src/main/java/fi/utu/tech/ooj/exercise1/Opiskelija.java
@@ -5,9 +5,8 @@ public class Opiskelija {
     /* Tehtävä 2A Määrittele luokkainvariantti
      *
      * Luokkainvariantti:
-     * Mikään muuttujista ei saa olla null ja 1900 <= 'syntymavuosi' <= (nykyinen vuosi - 18)
-     * 'etunimi' eikä 'sukunimi' saa sisältää numeroita
-     * 'opiskelijanumero' tulee sisältää pelkästään numeroita
+     * 1900 <= 'syntymavuosi' <= (nykyinen vuosi - 18)
+     * getEtunimi() != null & getSukunimi() != null & getOpiskelijaNumero() != null
      */
     private String etunimi;
     private String sukunimi;
diff --git a/src/main/java/fi/utu/tech/ooj/exercise1/Tehtava4Vastaukset.txt b/src/main/java/fi/utu/tech/ooj/exercise1/Tehtava4Vastaukset.txt
index e69de29..04819e6 100644
--- a/src/main/java/fi/utu/tech/ooj/exercise1/Tehtava4Vastaukset.txt
+++ b/src/main/java/fi/utu/tech/ooj/exercise1/Tehtava4Vastaukset.txt
@@ -0,0 +1,5 @@
+A. Tietueluokka sopisi tähän, koska tiedetään etteivät tiedot muutu ja rivit voidaan helposti esittää tietueina ja niitä voidaan tallentaa listaan niin monta kuin
+tarvitaan.
+
+B. Abstrakti luokkaa voitaisiin käyttää, koska se toimii hyvin pohjana alaluokille ja alaluokat voisivat helposti toteuttaa haluttuja metodeja käyttäen Vaatekokoja.
+Tälle abstrakti luokalle voitaisiin helposti myös tehdä staattinen rutiini joka hakee numeerisia kokoja kirjaintunnusten perusteella.
\ No newline at end of file
diff --git a/src/main/java/fi/utu/tech/ooj/exercise1/VuosiKurssi.java b/src/main/java/fi/utu/tech/ooj/exercise1/VuosiKurssi.java
index b86ea05..bd3cab2 100644
--- a/src/main/java/fi/utu/tech/ooj/exercise1/VuosiKurssi.java
+++ b/src/main/java/fi/utu/tech/ooj/exercise1/VuosiKurssi.java
@@ -7,7 +7,8 @@ public class VuosiKurssi {
     /* Tehtävä 2A Määrittele luokkainvariantti
      *
      * Luokkainvariantti:
-     * 1920 <= 'kurssinAloitusvuosi' <= nykyinen vuosi, eikä se voi olla null
+     * 1920 <= 'kurssinAloitusvuosi' <= nykyinen vuosi
+     * getKurssinAloitusvuosi() != null & getOpiskelijat() != null
      * 'opiskelijat listan pituus on vähintään 0 ja enintään vuosikurssille sallittu opiskelijoiden määrä esim. 500
      */
     private int kurssinAloitusvuosi;
-- 
GitLab