你好,我被要求创建以下内容:
创建一个跟踪狗的狗类
有下列方法可供使用:
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() );
}
}我感到困惑,因为它希望从公共的空构造函数中得到什么,以及如何为这些构造函数设置一个测试器。
发布于 2013-11-18 17:29:55
构造函数不是“空”,也不是真正的“返回”任何东西。当你这样做时:
new Dog("Balto");这将为Dog对象分配空间,并调用构造函数对其进行初始化。
要测试构造函数,您真正需要做的就是测试,以确保构造函数按其应有的方式运行。为构造函数需要保留一个Dog的状态定义一些明确的规则(这些规则通常称为“后置条件”)。在您的例子中,看一下代码,似乎对于一个新的Dog
因此,您所需要做的就是,在构建了一个新的Dog之后,验证这些条件是否为真。得到狗的名字,看看它是否是期望值。得到年龄和体重,确保它们为零。如果是这样的话,那么您的构造函数将坚持您定义的“契约”,您的测试就通过了。
发布于 2013-11-18 17:34:36
您的公开声明只说明可以从类外部访问这些方法。另一方面,如果你不想让任何人改变狗的重量后,最初建立了狗,你会把它设置为私人。
这里只有一个构造函数,其他语句是用来更改实例变量的方法:
public Dog(String initName)
{
name = initName;
age = 0;
weight = 0;
}要进行测试,您需要创建一个狗,然后对它运行一些assert语句,以验证您的方法是否正在执行您希望它们做的事情:
Dog d = new Dog("Pooch");
assertEquals("The name is incorrect", "Pooch", d.getName());https://stackoverflow.com/questions/20053874
复制相似问题