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类。