Java 创建一个dog类和tester
您好,我被要求创建以下内容:Java 创建一个dog类和tester,java,class,Java,Class,您好,我被要求创建以下内容: 创建跟踪狗的行为的狗类 名字 年龄 重量 可使用以下方法: 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): vo
创建跟踪狗的行为的狗类
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() );
}
}
我很困惑,因为它想从公共void构造函数中得到什么,以及如何为这些构造函数设置测试程序。构造函数不是“void”,也不是真正的“返回”任何东西。当您这样做时:
new Dog("Balto");
这为Dog
对象分配空间,并调用构造函数对其进行初始化
要测试构造函数,您真正需要做的就是进行测试,以确保构造函数按其应有的方式运行。为构造器需要保留狗的状态定义一些明确的规则(这些通常称为“后条件”)。在您的情况下,查看代码,对于新的狗
:
- 名称必须设置为传递给构造函数的参数
- 年龄和体重初始化为0
因此,在构建新的狗之后,您需要做的就是验证这些条件是否正确。获取狗的名称,查看它是否为预期值。获取年龄和体重,确保它们为零。如果是这样,那么您的构造函数将坚持您定义的“契约”,并且您的测试通过。构造函数不是“无效”,也不是真正的“返回”任何内容。当您这样做时:
new Dog("Balto");
这为Dog
对象分配空间,并调用构造函数对其进行初始化
要测试构造函数,您真正需要做的就是进行测试,以确保构造函数按其应有的方式运行。为构造器需要保留狗的状态定义一些明确的规则(这些通常称为“后条件”)。在您的情况下,查看代码,对于新的狗
:
- 名称必须设置为传递给构造函数的参数
- 年龄和体重初始化为0
因此,在构建新的狗之后,您需要做的就是验证这些条件是否正确。获取狗的名称,查看它是否为预期值。获取年龄和体重,确保它们为零。如果是这样的话,那么您的构造函数将坚持您定义的“契约”,并且您的测试通过。您的公共语句只是声明可以从类外部访问这些方法。另一方面,如果您不希望任何人在最初构建狗后改变狗的体重,您会将其设置为private
这里只有一个构造函数,其他语句是更改实例变量的方法:
public Dog(String initName)
{
name = initName;
age = 0;
weight = 0;
}
要进行测试,您需要创建一个dog,然后对其运行一些assert语句,以验证您的方法正在执行您希望它们执行的操作:
Dog d = new Dog("Pooch");
assertEquals("The name is incorrect", "Pooch", d.getName());
您的公开声明只是声明可以从类外部访问这些方法。另一方面,如果您不希望任何人在最初构建狗后改变狗的体重,您会将其设置为private
这里只有一个构造函数,其他语句是更改实例变量的方法:
public Dog(String initName)
{
name = initName;
age = 0;
weight = 0;
}
要进行测试,您需要创建一个dog,然后对其运行一些assert语句,以验证您的方法正在执行您希望它们执行的操作:
Dog d = new Dog("Pooch");
assertEquals("The name is incorrect", "Pooch", d.getName());
首先要解决的问题是在测试仪中使用对象中不存在的方法(例如addAge(双年))。这当然不会编译,也不会“测试”对象。我认为您的测试类不应该与用户交互,而应该报告测试是否成功。它应该简单地创建一些Dog
s,调用一些方法,并检查一些结果。另外,再看看setName
、setAge
和setWeight
。我觉得你的版本不对。首先要解决的问题是在你的测试仪中使用你的对象中不存在的方法(例如addAge(double years))。这当然不会编译,也不会“测试”对象。我认为您的测试类不应该与用户交互,而应该报告测试是否成功。它应该简单地创建一些Dog
s,调用一些方法,并检查一些结果。另外,再看看setName
、setAge
和setWeight
。在我看来,您的版本并不正确。您还需要明确指出,您在这里使用的是一个测试框架,如JUnit或TestNGGood call。。。。我应该提到,我假设您正在使用JUnit测试类进行测试。如果您不熟悉JUnit,我会做一些研究并为您的IDE下载适当的插件。测试驱动开发是一种理想的方法,因此您最好先创建这些测试用例,然后再构建dog类。您还需要明确指出,您在这里使用的是一个测试框架,如JUnit或TestNGGood call。。。。我应该提到,我假设您正在使用JUnit测试类进行测试。如果您不熟悉JUnit,我会做一些研究并为您的IDE下载适当的插件。测试驱动开发是一种理想的方法,因此您最好先创建这些测试用例,然后再构建dog类。