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