Как сделать метод для обновления атрибутов класса? - PullRequest
0 голосов
/ 10 января 2019

Я должен создать код на 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 голосов
/ 10 января 2019

Просто оставьте методы получения и установки такими, как есть - следуйте спецификации Java-бинов в этом отношении. Вы пытаетесь сделать больше, чем просто установить значение - например, в случае установки для атрибута возраста. В этом случае будет лучше иметь другой метод, который увеличивает возраст в соответствии с логикой, которую вы хотите вставить. Выбор нового метода потребует наличия надлежащего Javadoc, как всегда.

0 голосов
/ 10 января 2019

вы можете создать метод, метод, который вы можете вызвать другое имя, например, 'addAge', в этом методе вы делаете addAge, вы можете в этом методе сделать сервис

0 голосов
/ 10 января 2019

я думаю, что как возраст, атрибут не может быть изменен, но вы должны создать setAge, а в setAge вы ничего не делаете или демонстрируете странности, создаете другой метод увеличения возраста

0 голосов
/ 10 января 2019

Это зависит от типа обновления.

Разрешить устанавливать любой возраст:

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

Разрешить увеличение только на один год с каждым звонком:

public void increaseAge() {
    this.age++;
}
0 голосов
/ 10 января 2019

Следуя соглашениям, у вас должен быть метод setter для изменения значения (как getter, возвращающий значение), базовый:

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

  1. Вы можете добавить подтверждение, например, если вы хотите, чтобы иметь возможность только увеличить возраст

    public void setAge(int age) {
        if(age > this.age)
            this.age = age;
    }
    
  2. Или создайте oneMoreYear() метод для увеличения на один

    public void oneMoreYear() {
        age++;
    }
    
0 голосов
/ 10 января 2019

Методы обновления атрибутов обычно называются сеттерами. В Java у вас обычно есть метод get / set для каждого атрибута. Поэтому то, что вы хотите сделать, это создать сеттер для возраста. Это очень базовая Java, и я настоятельно рекомендую вам искать / читать о методах получения и установки вместо того, чтобы кто-то точно говорил вам, что делать (т.е. писать код для вас). Это очень поможет вам понять и выучить Java.

Я только что погуглил, но вот пример учебника, который может вам помочь: https://www.codejava.net/coding/java-getter-and-setter-tutorial-from-basics-to-best-practices

0 голосов
/ 10 января 2019

Вы можете добавить метод для обновления возраста

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;
}
0 голосов
/ 10 января 2019

Вы должны создать метод набора

public void setAge(int newAge) {
    age = newAge;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...