Commit 379c55f4 authored by Anya Helene Bagge's avatar Anya Helene Bagge 🦆

første del av forelesning

parent 0d58a1fe
......@@ -35,7 +35,20 @@ public abstract class Dyr {
return "dyr";
}
/**
* Dyret spiser litt, og blir større
*
* @param vekt Mengde mat dyret skal spise
*
* Forkrav: vekt må være mindre enn 0.5*getMass()
*
* Garanterer at getMass() øker med 0.05*vekt
*/
public void spis(double vekt) {
if(vekt > 0.5*getMass())
throw new IllegalArgumentException("For mye mat!");
System.out.println("Jeg spiser som et dyr!");
this.masse += vekt/10;
}
......
......@@ -18,9 +18,20 @@ public class Kanin extends Dyr {
pos = pos.go(Direction.EAST);
}
public void spis(int vekt) {
public void spis(double vekt) {
System.out.println("Jeg spiser som en kanin!");
// vi har et løsere forkrav, aksepterer opptil 1.0* massen
if(vekt > getMass())
throw new IllegalArgumentException("For stor porsjon!");
double oldMasse = masse;
// vi er mer effektive, legger på oss like mye som vi spiser
masse = masse + vekt;
// dette var minstekravet
assert masse >= 1.05*oldMasse;
}
@Override
......
......@@ -14,7 +14,23 @@ public class Ulv extends Dyr {
@Override
public void spis(double vekt) {
System.out.println("GRRRROAAOAO");
super.spis(vekt);
double oldMasse = getMass();
// super.spis(vekt);
// bryter Liskovs substitusjonsprinsipp: her har vi strenger
// krav til parameterne enn superklassen har :(
if(vekt > 0.1*getMass())
throw new IllegalArgumentException("blueergh!!");
// bryter også prinsippet, her øker vi massen for lite
// i forhold til parameteret.
masse = masse + vekt * 0.01;
// dette var minstekravet
assert masse >= 1.05*oldMasse;
}
@Override
......
......@@ -8,4 +8,18 @@ import inf101.games.simgame.ISimActor;
*/
public interface IWalker extends ISimActor {
// Has the same methods as ISimActor
/**
* This method is called (by the game), for every time step, so that the
* actor can act its turn.
*
* The object must be moved according to the game rules in RulesChecker (new
* position must be immediately east/west/south/north of old position, not
* occupied, not outside board)
*
* @param time
* A count of the number of steps since the game started
*/
void step(int time);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment