added comments

This commit is contained in:
2018-03-11 21:00:26 +01:00
parent 23a6fcd4b9
commit 711d8b69c3
2 changed files with 59 additions and 14 deletions

View File

@@ -166,7 +166,7 @@ public class Worm {
private void setLocation(Tuple<Double, Double> location) throws IllegalArgumentException { private void setLocation(Tuple<Double, Double> location) throws IllegalArgumentException {
if (!isValidLocation(location)) if (!isValidLocation(location))
throw new IllegalArgumentException("Illegal value for location"); // TODO add decent exception msg throw new IllegalArgumentException("Illegal value for location");
this.location = location; this.location = location;
} }
@@ -624,7 +624,9 @@ public class Worm {
// region Jump // region Jump
//=================================================================================== //===================================================================================
/** this constant contains the gravity */ /**
* this constant contains the gravity
* */
public static final double G = 5.0; public static final double G = 5.0;
/** /**

View File

@@ -3,57 +3,94 @@ package worms.util;
import be.kuleuven.cs.som.annotate.Immutable; import be.kuleuven.cs.som.annotate.Immutable;
import be.kuleuven.cs.som.annotate.Value; import be.kuleuven.cs.som.annotate.Value;
import java.lang.reflect.Array;
import java.util.Objects; import java.util.Objects;
/** /**
* A tuple (pair) implementation * A class of 2-tuples or pairs.
* *
* @param <T1> first element type * @param <T1> first element type
* @param <T2> second element type * @param <T2> second element type
* *
* *
* @version 1.1 * @version 1.2
* @author Arthur Bols & Leen Dereu * @author Arthur Bols & Leen Dereu
*/ */
@Value @Value
public class Tuple<T1, T2> { public class Tuple<T1, T2> {
/**
* The variable referencing the first item of this Tuple.
*/
public final T1 item1; public final T1 item1;
/**
* The variable referencing the second item of this Tuple.
*/
public final T2 item2; public final T2 item2;
/** /**
* Initialize this new Tuple as a Tuple with the given items.
* *
* @param item1 * @param item1
* The first element for this tuple * The first element for this tuple.
* @param item2 * @param item2
* The second element for this tuple * The second element for this tuple.
*/ */
public Tuple(T1 item1, T2 item2) throws IllegalArgumentException { public Tuple(T1 item1, T2 item2) throws IllegalArgumentException {
/*if (item1 == null)
throw new IllegalArgumentException("item1 may not be null");
if (item2 == null)
throw new IllegalArgumentException("item2 may not be null");*/
this.item1 = item1; this.item1 = item1;
this.item2 = item2; this.item2 = item2;
} }
/**
*
* @param item1
* The value for the first element.
* @param item2
* The value for the second element.
* @return
* The Tuple created from item1 and item2.
* | result == new Tuple<>(item1, item2);
*/
@Immutable @Immutable
public static <T1, T2> Tuple<T1, T2> create(T1 item1, T2 item2){ public static <T1, T2> Tuple<T1, T2> create(T1 item1, T2 item2){
return new Tuple<>(item1, item2); return new Tuple<>(item1, item2);
} }
/**
* Return a new Tuple created from the elements of the array.
*
* @param arr
* The Array to create the tuple of.
* @return The Tuple created from the elements of the given array.
* | result == new Tuple<>(arr[0], arr[1])
* @throws IllegalArgumentException
* The given array is null or the length of the given array
* is not 2.
* | arr == null || arr.length != 2
*/
@Immutable @Immutable
public static Tuple<Double, Double> create(double[] arr) throws IllegalArgumentException { public static <T1> Tuple<T1, T1> create(T1[] arr) throws IllegalArgumentException {
if (arr == null || arr.length != 2) if (arr == null || arr.length != 2)
throw new IllegalArgumentException("Invalid parameter arr"); throw new IllegalArgumentException("Invalid parameter arr");
return new Tuple<>(arr[0], arr[1]); return new Tuple<>(arr[0], arr[1]);
} }
/**
*
* @param o
* The object to compare to.
* @return True if and only if the given object is this Tuple.
* | if (this == 0) then result == true
* Otherwise, true if the given object is a Tuple and
* the items are the same as this Tuple.
* | else result ==
* | Objects.equals(item1, tuple.item1) &&
* | Objects.equals(item2, tuple.item2);
*/
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if (this == o) return true; if (this == o) return true;
@@ -63,9 +100,15 @@ public class Tuple<T1, T2> {
Objects.equals(item2, tuple.item2); Objects.equals(item2, tuple.item2);
} }
/**
*
* @return The hash code of item1 and item2
* | result == Objects.hash(item1, item2)
*/
@Override @Override
public int hashCode() { public int hashCode() {
return Objects.hash(item1, item2); return Objects.hash(item1, item2);
} }
} }
/