From 8a7ba9a6bfa4815f7438432b4b339295e23a5929 Mon Sep 17 00:00:00 2001
From: vesal <vesa.t.lappalainen@jyu.fi>
Date: Mon, 5 Feb 2024 09:39:26 +0200
Subject: [PATCH] live08

---
 luennot/live07/.classpath                     | 12 +++
 luennot/live07/.project                       | 17 +++++
 luennot/live07/src/testaaminen/Poista.java    | 70 +++++++++++++++++
 .../live07/src/testaaminen/PoistaTest.java    | 37 +++++++++
 .../src/testaaminen/test/PoistaTest.java      | 37 +++++++++
 luennot/live08/.classpath                     | 10 +++
 luennot/live08/.project                       | 17 +++++
 luennot/live08/src/elaimet/Kissa.java         | 55 ++++++++++++++
 luennot/live08/src/elaimet/Koira.java         | 52 +++++++++++++
 luennot/live08/src/oliot/aika/olio/Aika.java  | 75 +++++++++++++++++++
 .../src/oliot/aika/olio/AikaKokeilu.java      | 24 ++++++
 luennot/live08/src/poyta/Alisotku.java        | 60 +++++++++++++++
 luennot/luento10/src/astia1/Astia.java        |  2 +-
 13 files changed, 467 insertions(+), 1 deletion(-)
 create mode 100644 luennot/live07/.classpath
 create mode 100644 luennot/live07/.project
 create mode 100644 luennot/live07/src/testaaminen/Poista.java
 create mode 100644 luennot/live07/src/testaaminen/PoistaTest.java
 create mode 100644 luennot/live07/src/testaaminen/test/PoistaTest.java
 create mode 100644 luennot/live08/.classpath
 create mode 100644 luennot/live08/.project
 create mode 100644 luennot/live08/src/elaimet/Kissa.java
 create mode 100644 luennot/live08/src/elaimet/Koira.java
 create mode 100644 luennot/live08/src/oliot/aika/olio/Aika.java
 create mode 100644 luennot/live08/src/oliot/aika/olio/AikaKokeilu.java
 create mode 100644 luennot/live08/src/poyta/Alisotku.java

diff --git a/luennot/live07/.classpath b/luennot/live07/.classpath
new file mode 100644
index 0000000..fe54bca
--- /dev/null
+++ b/luennot/live07/.classpath
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
+		<attributes>
+			<attribute name="module" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry combineaccessrules="false" kind="src" path="/demot"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/luennot/live07/.project b/luennot/live07/.project
new file mode 100644
index 0000000..2ab71dd
--- /dev/null
+++ b/luennot/live07/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>live07</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/luennot/live07/src/testaaminen/Poista.java b/luennot/live07/src/testaaminen/Poista.java
new file mode 100644
index 0000000..1f27b55
--- /dev/null
+++ b/luennot/live07/src/testaaminen/Poista.java
@@ -0,0 +1,70 @@
+package testaaminen;
+
+
+/**
+ * Esimerkki testaamisesta
+ * @author vesal
+ * @version 29.1.2024
+ *
+ */
+public class Poista {
+
+    /**
+     * Poistetaan jonosta esiintymƤt niin ettei siinƤ ole yhtƤƤn
+     * poistettava osajonoa.
+     * @param jono MistƤ poistetaan
+     * @param poistettava mitƤ poistetaan
+     * @return jono ilman poistettavaa
+     * @example
+     * <pre name="test">
+     *   poista("Catcat"   ,"at")  =>  "Cc";
+     *   poista("Paatti"   ,"at")  ===  "Pi";
+     *   poista("Puatit"   ,"at")  ===  "Puit";
+     *   poista("Abba"     ,"bb")  ===  "Aa";
+     *   poista("Abbababba","ba")  ===  "Abb";
+     *   poista("AbbabaaB" ,"ba")  ===  "AB";
+     *   poista("Abba"     ,"Ab")  ===  "ba";
+     *   poista("Abba"     ,"cc")  ===  "Abba";
+     *   poista("Abba"     ,""  )  ===  "Abba";
+     *   poista(""         ,"Aa")  ===  "";
+     *   poista(""         ,""  )  ===  "";
+     *   poista(null       ,""  )  ===  "";
+     *   poista(null       ,"k"  ) ===  "";  //  # THROWS NullPointerException
+     *   poista("Kissa"    ,null)  ===  "Kissa";
+     * </pre>
+     */
+    public static String poista(String jono, String poistettava) {
+        return demo.d3.Poista.poista(jono, poistettava);
+        //return "Pi";
+    }
+    
+    
+    private static int poistatesti(String jono, String mita, String odotettuTulos) {
+        String vaihdettu = poista(jono, mita);
+        if ( vaihdettu.equals(odotettuTulos ) ) return 0;
+        System.out.println(jono + " => " + vaihdettu + " piti tulla "
+                + odotettuTulos);
+        return 1;
+    }
+    
+    
+    /**
+     * @param args ei kƤytƶssƤ
+     */
+    public static void main(String[] args) {
+        int v = 0;
+        v += poistatesti("Catcat", "at", "Cc");
+        v += poistatesti("Paatti", "at", "Pi");
+        v += poistatesti("Puatit", "at", "Puit");
+        v += poistatesti("Abba", "bb", "Aa");
+        v += poistatesti("Abbababba", "ba", "Abb");
+        v += poistatesti("AbbabaaB", "ba", "AB");
+        v += poistatesti("Abba", "Aa", "Abba");
+        v += poistatesti("Abba", "", "Abba");
+        v += poistatesti("", "Aa", "");
+        v += poistatesti("", "", "");
+        // if ( v != 0 )
+        System.out.println("VirheitƤ: " + v);
+    }
+
+}
diff --git a/luennot/live07/src/testaaminen/PoistaTest.java b/luennot/live07/src/testaaminen/PoistaTest.java
new file mode 100644
index 0000000..ad60496
--- /dev/null
+++ b/luennot/live07/src/testaaminen/PoistaTest.java
@@ -0,0 +1,37 @@
+/**
+ * 
+ */
+package testaaminen;
+
+import static org.junit.Assert.*;
+import static testaaminen.Poista.poista;
+
+import org.junit.Test;
+
+/**
+ * @author vesal
+ * @version 29.1.2024
+ *
+ */
+public class PoistaTest {
+
+    /**
+     * Test method for {@link testaaminen.Poista#poista(java.lang.String, java.lang.String)}.
+     */
+    @Test
+    public void testPoista() {
+        assertEquals("SelkeƤ","Cc", poista("Catcat","at"));
+    }
+    
+    /**
+     * Erikoisempia tapauksia
+     */
+    @Test
+    public void testPoista2() {
+        assertEquals("Poistaminen tuottaa uuden","Pi", poista("Paatti","at"));
+        assertEquals("Perusversio","Puit", poista("Puatit","at"));
+        assertEquals("Poistaminen tuotata uusia","Abb", poista("Abbababba","ba"));
+        assertEquals("Poistettavaa ei lƶydy","Abba", poista("Abba","Aa"));
+    }    
+
+}
diff --git a/luennot/live07/src/testaaminen/test/PoistaTest.java b/luennot/live07/src/testaaminen/test/PoistaTest.java
new file mode 100644
index 0000000..14c6539
--- /dev/null
+++ b/luennot/live07/src/testaaminen/test/PoistaTest.java
@@ -0,0 +1,37 @@
+package testaaminen.test;
+// Generated by ComTest BEGIN
+import static org.junit.Assert.*;
+import org.junit.*;
+import static testaaminen.Poista.*;
+// Generated by ComTest END
+
+/**
+ * Test class made by ComTest
+ * @version 2024.01.29 11:22:55 // Generated by ComTest
+ *
+ */
+@SuppressWarnings("all")
+public class PoistaTest {
+
+
+
+  // Generated by ComTest BEGIN
+  /** testPoista19 */
+  @Test
+  public void testPoista19() {    // Poista: 19
+    assertEquals("From: Poista line: 20", "Cc", poista("Catcat"   ,"at")); 
+    assertEquals("From: Poista line: 21", "Pi", poista("Paatti"   ,"at")); 
+    assertEquals("From: Poista line: 22", "Puit", poista("Puatit"   ,"at")); 
+    assertEquals("From: Poista line: 23", "Aa", poista("Abba"     ,"bb")); 
+    assertEquals("From: Poista line: 24", "Abb", poista("Abbababba","ba")); 
+    assertEquals("From: Poista line: 25", "AB", poista("AbbabaaB" ,"ba")); 
+    assertEquals("From: Poista line: 26", "ba", poista("Abba"     ,"Ab")); 
+    assertEquals("From: Poista line: 27", "Abba", poista("Abba"     ,"cc")); 
+    assertEquals("From: Poista line: 28", "Abba", poista("Abba"     ,""  )); 
+    assertEquals("From: Poista line: 29", "", poista(""         ,"Aa")); 
+    assertEquals("From: Poista line: 30", "", poista(""         ,""  )); 
+    assertEquals("From: Poista line: 31", "", poista(null       ,""  )); 
+    assertEquals("From: Poista line: 32", "", poista(null       ,"k"  ));  //  # THROWS NullPointerException
+    assertEquals("From: Poista line: 33", "Kissa", poista("Kissa"    ,null)); 
+  } // Generated by ComTest END
+}
\ No newline at end of file
diff --git a/luennot/live08/.classpath b/luennot/live08/.classpath
new file mode 100644
index 0000000..f00af9b
--- /dev/null
+++ b/luennot/live08/.classpath
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
+		<attributes>
+			<attribute name="module" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/luennot/live08/.project b/luennot/live08/.project
new file mode 100644
index 0000000..4444afd
--- /dev/null
+++ b/luennot/live08/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>live08</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/luennot/live08/src/elaimet/Kissa.java b/luennot/live08/src/elaimet/Kissa.java
new file mode 100644
index 0000000..8da106a
--- /dev/null
+++ b/luennot/live08/src/elaimet/Kissa.java
@@ -0,0 +1,55 @@
+package elaimet;
+
+/**
+ * Elain-luokka.  Kantaluokka elƤimille.
+ * @author Vesa Lappalainen
+ * @version 1.0, 06.02.2003
+ *
+*/
+public class Kissa {
+    private String nimi;
+    private double paino;
+
+    /**
+     * ElƤimen alustus
+     * @param nimi elƤimen nimi
+     * @param paino elƤimen paino g
+     */
+    public Kissa(String nimi, double paino) {
+        this.nimi = nimi;
+        this.paino = paino;
+    }
+
+
+    /**
+     * ElƤimen ƤƤntely
+     */
+    public void aantele() {
+        System.out.println("Miauuu");
+    }
+
+
+    /**
+     * @return elƤimen tiedot muodossa "Miuku 18000"
+     */
+    @Override
+    public String toString() {
+        return nimi + " " + paino;
+    }
+    
+    /**
+     * Testataan Kissa-luokkaa
+     * @param args ei kƤytƶssƤ
+     */
+    public static void main(String[] args) {
+
+        Kissa miuku = new Kissa("Miuku", 18000);
+        miuku.aantele();
+        System.out.println(miuku);
+
+        Kissa mirri = new Kissa("Mirri", 930);
+        mirri.aantele();
+        System.out.println(mirri.toString());
+    }    
+    
+}
diff --git a/luennot/live08/src/elaimet/Koira.java b/luennot/live08/src/elaimet/Koira.java
new file mode 100644
index 0000000..e33b146
--- /dev/null
+++ b/luennot/live08/src/elaimet/Koira.java
@@ -0,0 +1,52 @@
+package elaimet;
+
+/**
+ * Elain-luokka.  Kantaluokka elƤimille.
+ * @author Vesa Lappalainen
+ * @version 1.0, 06.02.2003
+ *
+*/
+public class Koira {
+    private String nimi;
+    private double paino;
+
+    /**
+     * ElƤimen alustus
+     * @param nimi elƤimen nimi
+     * @param paino elƤimen paino g
+     */
+    public Koira(String nimi, double paino) {
+        this.nimi = nimi;
+        this.paino = paino;
+    }
+
+
+    /**
+     * ElƤimen ƤƤntely
+     */
+    public void aantele() {
+        System.out.println("Wuff");
+    }
+
+
+    /**
+     * @return elƤimen tiedot muodossa "Miuku 18000"
+     */
+    @Override
+    public String toString() {
+        return nimi + " " + paino;
+    }
+    
+    /**
+     * Testataan Kissa-luokkaa
+     * @param args ei kƤytƶssƤ
+     */
+    public static void main(String[] args) {
+
+        Koira musti = new Koira("Musti", 12000);
+        musti.aantele();
+        System.out.println(musti);
+
+    }    
+    
+}
diff --git a/luennot/live08/src/oliot/aika/olio/Aika.java b/luennot/live08/src/oliot/aika/olio/Aika.java
new file mode 100644
index 0000000..60b9b1e
--- /dev/null
+++ b/luennot/live08/src/oliot/aika/olio/Aika.java
@@ -0,0 +1,75 @@
+package oliot.aika.olio;
+
+/**
+ * EnsimmƤinen kunnon olioesimerkki
+ * @author  Vesa Lappalainen @version 1.0, 01.02.2003
+ * @author Santtu Viitanen @version 1.1, 7.7.2011
+ * @example
+ * <pre name="test">
+ *  Aika a1 = new Aika(12,15);
+ *  a1.lisaa(55);    a1.toString() === "13:10";
+ * </pre>
+ */
+public class Aika {  // luokka
+    
+    private int h;  // attribuuti
+    private int m;
+
+    
+    /**
+     * alustetaan keskiyƶhƶn
+     */
+    public Aika() {
+        this.h = 0;
+        this.m = 0;
+    }
+     
+    
+    
+    /**
+     * Alustaa ajan
+     * @param h tunnit
+     * @param m minuutit
+     * @example
+     * <pre name="test">
+     * new Aika(12,15).toString() === "12:15";
+     * </pre>
+     */
+    public Aika(int h, int m) { // Muodostaja
+        this.h = h;
+        this.m = m;
+    }
+
+    
+    
+    /**
+     * LisƤƤ aikaan valitun minuuttimƤƤrƤn
+     * @param lisaMin lisƤttƤvƤ minuuttimƤƤrƤ
+     * @example
+     * <pre name="test">
+     *  Aika a1 = new Aika(13,16);
+     *  a1.lisaa(27);    a1.toString() === "13:43";
+     *  a1.lisaa(39);    a1.toString() === "14:22";
+     * </pre>
+     */
+    public void lisaa(int lisaMin) {
+        int yht_min = this.h * 60 + this.m + lisaMin;
+        this.h = yht_min / 60;
+        this.m = yht_min % 60;
+    }    
+    
+    
+    /**
+     * @return aika merkkijonona muodossa 12:05
+     * @example
+     * <pre name="test">
+     * new Aika(7,5).toString() === "07:05";
+     * new Aika(12,15).toString() === "12:15";
+     * </pre>
+     */
+    @Override
+    public String toString() {
+        return String.format("%02d:%02d", this.h, this.m);
+    }
+    
+}
diff --git a/luennot/live08/src/oliot/aika/olio/AikaKokeilu.java b/luennot/live08/src/oliot/aika/olio/AikaKokeilu.java
new file mode 100644
index 0000000..3f3071a
--- /dev/null
+++ b/luennot/live08/src/oliot/aika/olio/AikaKokeilu.java
@@ -0,0 +1,24 @@
+package oliot.aika.olio;
+
+/**
+ * @author vesal
+ * @version 30.1.2024
+ */
+public class AikaKokeilu {
+    /**
+     * @param args ei kƤytƶssƤ
+     */
+    public static void main(String[] args) {
+        Aika a1 = new Aika();  // olio  a1 on olioviite
+        System.out.println(a1.toString());
+        a1.lisaa(55);  
+        // a1.h = 175;
+        System.out.println(a1.toString());
+        Aika a2 = new Aika(12,15);  // olio  a1 on olioviite
+        System.out.println(a2.toString());
+        a2.lisaa(90);  
+        System.out.println(a2.toString());
+        System.out.println(a1.toString());
+    }
+
+}
diff --git a/luennot/live08/src/poyta/Alisotku.java b/luennot/live08/src/poyta/Alisotku.java
new file mode 100644
index 0000000..b348f54
--- /dev/null
+++ b/luennot/live08/src/poyta/Alisotku.java
@@ -0,0 +1,60 @@
+package poyta;
+
+/**
+ * MitƤ ohjelma tulostaa??
+ * @author  Vesa Lappalainen
+ * @version 1.0, 19.01.2003
+ */
+
+@SuppressWarnings("all")
+public class Alisotku {
+
+  /**
+   * Palauttaa merkkijonon kokonaislukuna
+   * @param s muutettava merkkijono
+   * @return merkkijonosta saatu kokonaisluku
+   */
+  private static int i(StringBuilder s) {
+    return Integer.parseInt(s.toString());
+  }
+
+  /**
+   * Sijoittaa kokonaisluvun arvon merkkijonoon
+   * @param s merkkijono johon tulos sijoitetaan
+   * @param i kokonaisluku joka sijoitetaan
+   */
+  private static void set(StringBuilder s,int i) {
+    s.delete(0, s.length()).append(""+i);
+  }
+// BYCODEBEGIN
+/* 01 */ static int a; static StringBuilder b; static int c;
+/* 02 */
+/* 03 */ private static void ali_1(StringBuilder a, int b)
+/* 04 */ {
+/* 05 */   int d;
+/* 06 */   d  = i(a);
+/* 07 */   c  = b + 3;
+/* 08 */   b  = d - 1;
+/* 09 */   a.append(""+(c - 5));
+/* 10 */ }
+/* 11 */
+/* 12 */ private static void ali_2(StringBuilder a, StringBuilder b)
+/* 13 */ {
+/* 14 */   int c;
+/* 15 */   c  = i(a) + i(b);
+/* 16 */   set(a,9 - c);
+/* 17 */   set(b,32);
+/* 18 */ }
+/* 19 */
+/* 20 */ public static void main(String[] args) {
+/* 21 */   StringBuilder d = new StringBuilder(); b = new StringBuilder();
+/* 22 */   a=1; set(b,2); c=3; set(d,4);
+/* 23 */   ali_1(d,c);
+/* 24 */   ali_2(b,d);
+/* 25 */   ali_1(d,3+i(d));
+/* 26 */   System.out.println("" + a + " " + b + " " + c + " " + d);
+/* 27 */ }
+// BYCODEEND
+
+}
+
diff --git a/luennot/luento10/src/astia1/Astia.java b/luennot/luento10/src/astia1/Astia.java
index 4f0385c..3bfa2c5 100644
--- a/luennot/luento10/src/astia1/Astia.java
+++ b/luennot/luento10/src/astia1/Astia.java
@@ -15,7 +15,7 @@ package astia1;
  * @version 1.0, 09.02.2003
  */
 public class Astia {
-    private double tilavuus;
+    private final double tilavuus;
     private double maara;
 
 
-- 
GitLab