Skip to content
Snippets Groups Projects
Commit e86383a1 authored by Läspä Vili Valtteri's avatar Läspä Vili Valtteri
Browse files

vaihe 5.1. Lisätty liike luokka sekä liikkeet luokka

parent d7c4e7a5
No related branches found
No related tags found
No related merge requests found
......@@ -8,5 +8,6 @@
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.fx.ide.jdt.core.JAVAFX_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/ohj2"/>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/>
<classpathentry kind="output" path="bin"/>
</classpath>
/**
*
*/
package puntti;
import java.io.PrintStream;
import testaus.ErilaisetArvonnat;
/**
* |------------------------------------------------------------------------|
* | Luokan nimi: Liike | Avustajat: |
* |-------------------------------------------------------------------------
* | Vastuualueet: | |
* | | |
* | (- ei tiedä puntista mitään, eikä kättöliittymästä)| |
* | - tietää liikkeen kentät( oteleveys, stoppi, suori-| |
* | tusväline, syvyys) | |
* | - tarkistaa kenttien oikeellisuuden(syntaksin) | |
* | - osaa muuttaa 1|penkkipunnerrus|..| merkkijonon | |
* | liikkeen tiedoiksi. | |
* | - osaa antaa merkkijonona i:n kentän tiedot | |
* | - osaa laittaa merkkijonon i:neksi kentäksi | |
* |-------------------------------------------------------------------------
*
* @author laspa
* @version 4.3.2025
*
*/
public class Liike {
private int lid = 0;
private String liike = "";
private String oteLeveys = "";
private int stoppi = 0;
private String syvyys = "";
private String suoritusValine = "";
private static int seuraavaLid = 1;
/**
* Alustaa liikkeiden tiedot tyhjiksi
*/
public Liike(){
//ei käytössä, sillä tiedot on jo alustettu
}
/**
* Tulostetaan liikeen tiedot
* @param out tietovirta johon tulostetaan
*/
public void tulosta(PrintStream out) {
out.println(String.format("%03d", lid, 3) + " " + liike + " ");
out.println("Oteleveys " + oteLeveys + " ");
out.println("Stoppi " + stoppi + " s ");
out.print("Syvyys " + syvyys + " ");
out.println("Suoritusväline " + suoritusValine + " ");
}
/**
* Antaa liikkeelle suraavan liike id:n eli lid
* @return liikkeen id:n
* @example
* <pre name="test">
* Liike kyykky1 = new Liike();
* kyykky1.getLid() === 0;
* kyykky1.lisaaLiike();
* Liike kyykky2 = new Liike();
* kyykky2.lisaaLiike();
* int n1 = kyykky1.getLid();
* int n2 = kyykky2.getLid();
* n1 === n2-1;
* </pre>
*/
public int lisaaLiike() {
this.lid = seuraavaLid;
seuraavaLid++;
return this.lid;
}
/**
* täyttää liikkeen tiedot
*/
public void taytaKyykky() {
liike = "Kyykky";
oteLeveys = ErilaisetArvonnat.arvontaL();
stoppi = ErilaisetArvonnat.arvontaS(1,10);
syvyys = "Syvä";
suoritusValine = "Tanko";
}
/**
* Palauttaa liikkeen liike id:n
* @return liikkeen liike id:n
*/
public int getLid() {
return lid;
}
/**
* @param args ei käytössä
*/
public static void main(String[] args) {
Liike kyykky = new Liike();
Liike kyykky2 = new Liike();
kyykky.lisaaLiike();
kyykky2.lisaaLiike();
kyykky.tulosta(System.out);
kyykky2.tulosta(System.out);
kyykky.taytaKyykky();
kyykky2.taytaKyykky();
kyykky.tulosta(System.out);
kyykky2.tulosta(System.out);
}
}
package puntti;
/**
*
* |------------------------------------------------------------------------|
* | Luokan nimi: Liikkeet | Avustajat: |
* |-------------------------------------------------------------------------
* | Vastuualueet: | |
* | | - Liike |
* | - Pitää yllä liikkeitä. Osaa poistaa ja lisätä | |
* | liikkeen | |
* | - lukee ja kirjoittaa liikkeet tiedostoon | |
* | - osaa etsiä ja lajitella | |
* |-------------------------------------------------------------------------
* @author laspa
* @version 5.3.2025
*
*/
public class Liikkeet {
private static final int MAX_LIIKKEITA = 5;
int lkm = 0;
private Liike[] alkiot;
/**
* Alustava taulukko liikkeistä
*/
public Liikkeet() {
this.alkiot = new Liike[MAX_LIIKKEITA];
}
/**
* Lisää uuden liikkeen tietorakenteeseen. Ottaa liikkeen omistukseensa.
* @param liike Lisättävän liikkeen viite. Tietorakenne muuttuu omistajaksi.
* @throws SailoException jos tietorakenteesee nei enää mahdu lisää.
* <pre name="test">
* #THROWS SailoException
* Liikkeet liikkeet = new Liikkeet();
* Liike kyykky1 = new Liike(), kyykky2 = new Liike();
* liikkeet.getLkm() === 0;
* liikkeet.lisaa(kyykky1); liikkeet.getLkm() === 1;
* liikkeet.lisaa(kyykky2); liikkeet.getLkm() === 2;
* liikkeet.lisaa(kyykky1); liikkeet.getLkm() === 3;
* liikkeet.anna(0) === kyykky1;
* liikkeet.anna(1) === kyykky2;
* liikkeet.anna(2) === kyykky1;
* liikkeet.anna(1) == kyykky1 === false;
* liikkeet.anna(1) == kyykky2 === true;
* liikkeet.anna(3) === kyykky1; #THROWS IndexOutOfBoundsException
* liikkeet.lisaa(kyykky1); liikkeet.getLkm() === 4;
* liikkeet.lisaa(kyykky1); liikkeet.getLkm() === 5;
* liikkeet.lisaa(kyykky1); #THROWS SailoException
* </pre>
*/
public void lisaa(Liike liike) throws SailoException {
if (lkm >= alkiot.length) throw new SailoException("Liikaa alkioita");
this.alkiot[this.lkm] = liike;
this.lkm++;
}
/**
* Palauttaa viitteen i:teen liikkeeseen
* @param i monennen liikken viite halutaan
* @return viite liikkeeseen jonka indeksi on i
* @throws IndexOutOfBoundsException jos i ei ole sallitulla alueella.
*/
public Liike anna(int i) throws IndexOutOfBoundsException{
if (i < 0 || lkm <= i)
throw new IndexOutOfBoundsException("Ei sallittu indeksi: " + i);
return alkiot[i];
}
/**
* Palauttaa liikkeiden määrän
* @return liikkeiden määrän
*/
public int getLkm() {
return lkm;
}
/**
* @param args ei käytössä
*/
public static void main(String[] args) {
Liikkeet liikkeet = new Liikkeet();
Liike kyykky = new Liike();
Liike kyykky2 = new Liike();
kyykky.lisaaLiike();
kyykky.taytaKyykky();
kyykky2.lisaaLiike();
kyykky2.taytaKyykky();
try {
liikkeet.lisaa(kyykky);
liikkeet.lisaa(kyykky2);
System.out.println("__________Liikkeet testi__________");
for (int i = 0; i < liikkeet.getLkm(); i++) {
Liike liike = liikkeet.anna(i);
System.out.println("Liike indeksi " + i);
liike.tulosta(System.out);
}
} catch (SailoException ex) {
System.out.println(ex.getMessage());
}
}
}
package puntti;
public class SailoException extends Exception{
private static final long serialVersionUID = 1L;
/**
* Poikkeuksen uodostaja jolle tuodaan viesti poikkeuksesta
* @param viesti Poikkeuksen sattuessa tuleva viesti
* @example
*/
public SailoException(String viesti) {
super(viesti);
}
}
package puntti.test;
// Generated by ComTest BEGIN
import static org.junit.Assert.*;
import org.junit.*;
import puntti.*;
// Generated by ComTest END
/**
* Test class made by ComTest
* @version 2025.03.04 23:56:18 // Generated by ComTest
*
*/
@SuppressWarnings("all")
public class LiikeTest {
// Generated by ComTest BEGIN
/** testLisaaLiike67 */
@Test
public void testLisaaLiike67() { // Liike: 67
Liike kyykky1 = new Liike();
assertEquals("From: Liike line: 69", 0, kyykky1.getLid());
kyykky1.lisaaLiike();
Liike kyykky2 = new Liike();
kyykky2.lisaaLiike();
int n1 = kyykky1.getLid();
int n2 = kyykky2.getLid();
assertEquals("From: Liike line: 75", n2-1, n1);
} // Generated by ComTest END
}
\ No newline at end of file
package puntti.test;
// Generated by ComTest BEGIN
import static org.junit.Assert.*;
import org.junit.*;
import puntti.*;
// Generated by ComTest END
/**
* Test class made by ComTest
* @version 2025.03.05 15:29:25 // Generated by ComTest
*
*/
@SuppressWarnings("all")
public class LiikkeetTest {
// Generated by ComTest BEGIN
/**
* testLisaa40
* @throws SailoException when error
*/
@Test
public void testLisaa40() throws SailoException { // Liikkeet: 40
Liikkeet liikkeet = new Liikkeet();
Liike kyykky1 = new Liike(), kyykky2 = new Liike();
assertEquals("From: Liikkeet line: 44", 0, liikkeet.getLkm());
liikkeet.lisaa(kyykky1); assertEquals("From: Liikkeet line: 45", 1, liikkeet.getLkm());
liikkeet.lisaa(kyykky2); assertEquals("From: Liikkeet line: 46", 2, liikkeet.getLkm());
liikkeet.lisaa(kyykky1); assertEquals("From: Liikkeet line: 47", 3, liikkeet.getLkm());
assertEquals("From: Liikkeet line: 48", kyykky1, liikkeet.anna(0));
assertEquals("From: Liikkeet line: 49", kyykky2, liikkeet.anna(1));
assertEquals("From: Liikkeet line: 50", kyykky1, liikkeet.anna(2));
assertEquals("From: Liikkeet line: 51", false, liikkeet.anna(1) == kyykky1);
assertEquals("From: Liikkeet line: 52", true, liikkeet.anna(1) == kyykky2);
try {
assertEquals("From: Liikkeet line: 53", kyykky1, liikkeet.anna(3));
fail("Liikkeet: 53 Did not throw IndexOutOfBoundsException");
} catch(IndexOutOfBoundsException _e_){ _e_.getMessage(); }
liikkeet.lisaa(kyykky1); assertEquals("From: Liikkeet line: 54", 4, liikkeet.getLkm());
liikkeet.lisaa(kyykky1); assertEquals("From: Liikkeet line: 55", 5, liikkeet.getLkm());
try {
liikkeet.lisaa(kyykky1);
fail("Liikkeet: 56 Did not throw SailoException");
} catch(SailoException _e_){ _e_.getMessage(); }
} // Generated by ComTest END
}
\ No newline at end of file
package testaus;
/**
* @author laspa
* @version 5.3.2025
*
*/
public class ErilaisetArvonnat {
/**
* Arpoo satunnaisen kokonaisluvun välille [ala,yla]
* @param ala arvonnan alaraja
* @param yla arvonnan yläraja
* @return satunnainen luku väliltä [ala,yla]
*/
public static int arvontaS(int ala, int yla){
double n = (yla-ala)*Math.random() + ala;
return (int)Math.round(n);
}
/**
* Arpoo satunnisen leveyden [ala,yla]
* @return satunnainen luku väliltä [ala,yla]
*/
public static String arvontaL(){
int luku = arvontaS(1,3);
if(luku == 1) return "kapea";
if(luku == 2) return "neutraali";
if(luku == 3) return "leveä";
return "";
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment