您好我被要求创建以下内容:
创建一个跟踪狗的
名称
年龄
可以使用以下方法:
1. getName(): String
2. setName(String): void
3. getAge():int
4. getDogYears():int (assume 1 human year = 5 dog years)
5. addAYear():void
6. setAge(int):void
7. getWeight(): double
8. setWeight(double): void
9. getDogData():String
创建一个DogTester类来测试上面的每个方法
我之前正在遵循这个模板,但我感到困惑,这是我到目前为止所做的 狗班:
public class Dog
{
//Instance vars
private String name;
private int age;
private double weight;
//constructor
public Dog(String initName)
{
name = initName;
age = 0;
weight = 0;
}
//methods
public String getName()
{
return name;
}
public void setName()
{
return name;
}
public int getAge()
{
return age;
}
public int getDogYears()
{
return age*5;
}
public void addAYear()
{
age = age + 1;
}
public void setAge()
{
return age;
}
public double getWeight()
{
return weight;
}
public void setWeight()
{
weight = weight;
}
public String getData()
{
String data = "";
data = name;
data = data + "\n\tAge: " + age;
data = data + "\n\tWeight: " + weight;
return data;
}
}
测试仪:
import java.util.Scanner;
public class DogTester
{
public static void main(String[] args)
{
Scanner in = new Scanner( System.in );
//Create two dogs to keep track of
Dog s1 = new Dog("Balto");
//get the dogs age
System.out.print("Enter the dog's age: "); //prompt
double grade = in.nextDouble(); //read
s1.addAge( years ); //store
//get the dogs weight
System.out.print("Enter the dog's weight: "); //prompt
s1.addWeight( in.nextDouble() ); //read AND store
//output their data
System.out.println( s1.getData() );
}
}
我很困惑,因为它需要公共空构造函数,以及如何为这些构建测试器
答案 0 :(得分:3)
构造函数不是“无效”,也不是真正“返回”任何东西。当你这样做时:
new Dog("Balto");
这为Dog
对象分配空间并调用构造函数来初始化它。
要测试构造函数,您真正需要做的就是测试以确保构造函数的行为正常。为构造函数需要保留Dog
的状态定义一些明确的规则(这些通常称为“后置条件”)。在您的情况下,查看代码,似乎对于新的Dog
:
因此,您需要做的就是,在构建新的Dog
之后,验证这些条件是否为真。获取狗的名字,看看它是否是预期值。获得年龄和体重,确保它们为零。如果是这样,那么你的构造函数会坚持你定义的“契约”,并且你的测试通过了。
答案 1 :(得分:1)
您的公开声明只是声明可以从课外访问这些方法。另一方面,如果您最初构建狗后不想让任何人改变狗的体重,您可以将其设置为私人。
这里只有一个构造函数,其他语句是更改实例变量的方法:
public Dog(String initName)
{
name = initName;
age = 0;
weight = 0;
}
要测试你需要创建一个狗,然后对它运行一些断言语句,以验证你的方法正在按照你的期望做到:
Dog d = new Dog("Pooch");
assertEquals("The name is incorrect", "Pooch", d.getName());