如何制作一种更新类属性的方法?

时间:2019-01-10 08:53:50

标签: java methods attributes

我应该使用以下类图来编写Java代码。UML Class Diagram

在我的任务说明中,陈述了以下内容; “类图,用于更新属性的方法完全缺少一件事。这是因为系统的客户端已决定不允许对其进行更新。但是,我们知道这一要求至少会随着年龄的变化而改变。因此,任务还包括设计和实现一种更新年龄的方法。这样做时,请记住年龄只会增加,而永远不会减少。”

因此,我的问题是我该如何制作一种方法来更新类的属性-在这种情况下会增加年龄? :)

下面还有2个其他要求(所以您知道我为什么要在我的代码中包括它)... “狗的尾巴长度可以用整齐的公式计算: 尾巴长度=ålder⋅vikt10svanslängd=ålder⋅vikt10 该公式适用于除出租车以外的所有犬只。一税总尾长为3.7。由于狗窝的价值是国际性的,因此系统必须正确处理瑞典语“ tax”和英语“ dachshund”。”

这是我的代码:

public class Dog {
    private String name;
    private String breed;
    private int age;
    private int weight;

    public String getName() {
        return name;
    }

    public String getBreed() {
        return breed;
    }

    public int getAge() {
        return age;
    }

    public int getWeight() {
        return weight;
    }

    public double getTailLength() {
        double length;
        // Undantag för taxar/dachshunds (alltid svanslängd 3,7). 
        if (breed.equalsIgnoreCase ("Tax")  || breed.equalsIgnoreCase("Dachshund")) {
            length = 3.7;
        } else {
            //Formel för svanslängd
            length = (double)(age * weight) / 10;
        }

        return length;
    }

    public String toString() {
        return String;
    }
}

8 个答案:

答案 0 :(得分:0)

您应该创建一个set方法

public void setAge(int newAge) {
    age = newAge;
}

答案 1 :(得分:0)

您可以添加一种更新年龄的方法

public void updateAge(int age) {
    if (age <= this.age) { // use < instead of <= if the age can remain the same
       throw new RuntimeException("Invalid age");
    }
    this.age = age;
}

它验证通过的年龄至少是当前年龄。如果不是,则抛出异常。您可以在此处抛出任何适当的异常。

如果您不想引发异常,则可以让该方法返回一个布尔值以反映更新是否成功。

public boolean updateAge(int age) {
    if (age <= this.age) {
       return false;
    }
    this.age = age;
    return true;
}

答案 2 :(得分:0)

用于更新属性的方法通常称为Setter。 在Java中,通常每个属性都有一个get / set方法。 因此,您要做的是为这个年龄创建一个二传手。 这是非常基本的Java,强烈建议您在Getters和Setters上进行搜索/阅读,而不要有人告诉您确切的操作(即为您编写代码)。它将对您的理解和学习Java有很大帮助。

我刚刚在Google上进行了搜索,但这是一个可以帮助您的教程示例: https://www.codejava.net/coding/java-getter-and-setter-tutorial-from-basics-to-best-practices

答案 3 :(得分:0)

按照约定,您应该有一个setter方法来修改值(因为getter返回值),基本方法是:

public void setAge(int age) {
    this.age = age;
}

  1. 您可以添加验证,例如ex,如果您只想增加年龄

    public void setAge(int age) {
        if(age > this.age)
            this.age = age;
    }
    
  2. 或创建一个oneMoreYear()方法以增加一个

    public void oneMoreYear() {
        age++;
    }
    

答案 4 :(得分:0)

这取决于更新的类型。

允许设置任何年龄:

public void setAge(int newAge) {
    if (newAge > age) {        
       this.age = newAge;
    }
}

每次通话只能增加一年:

public void increaseAge() {
    this.age++;
}

答案 5 :(得分:0)

您可以创建一个方法,该方法可以调用其他名称,例如'addAge',在此方法中,您可以执行addAge,可以在此方法中进行服务

答案 6 :(得分:0)

我认为就像年龄一样,该属性不能更改,但是您必须创建setAge,并且在setAge中,您什么也不做,也不显示皱纹,创建其他方法来增加年龄

答案 7 :(得分:0)

只需保持getter和setter不变-在这方面遵循Java bean规范。 您正在尝试做的事情不仅仅是设置值-例如,对于setter for age属性。在这种情况下,最好有另一种方法,该方法根据您要插入的逻辑来延长使用期限。选择新方法将一如既往地要求拥有适当的Javadoc。 >