Создание классов и методов в Java - PullRequest
0 голосов
/ 30 апреля 2018

Это мой первый пост здесь, поэтому я был бы рад, если бы никто не рассердился из-за моего вопроса и, надеюсь, из-за моего английского ... это не мой родной язык: D

К вопросу: Для моего курса в университете мне нужно запрограммировать фитнес-приложение (оно станет намного больше в будущем). Сейчас я должен настроить некоторые классы и методы, которые я уже сделал, настолько хорошо, насколько мог. Вот пример:

public class Trainingsession {

    private int workoutTime;
    private int date;
    private int startingtime;
    private Fitnessequipment fitnessequipment;
    private int neededWorkoutTime;


    public Trainingsession(int workoutTime, int date, int startingtime, Fitnessequipment fitnessequipment) {
        this.workoutTime = workoutTime;
        this.date = date;
        this.startingtime = startingtime;
    }

    public boolean goalReached (int caloryGoal) {
        return (fitnessequipment.caloryConsumption(workoutTime) >= caloryGoal))
    }

    // ...

}

Когда я настраиваю свой метод goalReached, должен ли я сначала настроить caloryGoal вместе с другими моими атрибутами, такими как date, startingtime и т. Д.? Моя проблема в том, что некоторые атрибуты заданы, но я не знаю, нужно ли мне добавлять другие атрибуты, просто взглянув на методы ...

Ответы [ 3 ]

0 голосов
/ 01 мая 2018

Я надеюсь, что не ошибаюсь в вашем вопросе, но здесь говорится:

caloryGoal - это аргумент, передаваемый тем, кто вызывает goalReached(), поэтому caloryGoal - это не то, что вам нужно инициализировать в конструкторе. Если у вас есть значения в объекте, которые необходимо указать после вызова конструктора (например, если вы узнаете, каким должно быть значение после его создания), вы можете использовать методы установки. Вот пример:

public void setWorkoutTime(int newWorkoutTime) {
    workoutTime = newWorkoutTime;
}

После вызова этого метода, workoutTime будет иметь значение того, что вы передали как newWorkoutTime.

0 голосов
/ 01 мая 2018

Немного непонятно, для чего предназначены функции, которые вы описали. Если я правильно понял, то goalReached - это функция, которая получает число и возвращает значение true, если caloryGoal> = калории, которые были сожжены в этом сеансе (в этом примере). Для этого это должно выглядеть примерно так:

public boolean goalReached (int caloryGoal) {
    return (this.caloryConsumption(workoutTime) >= caloryGoal))
}

когда caloryConsuming будет функцией, которая возвращает количество сожженных экземпляров за сеанс Для этого я добавил бы новое поле под названием CaloriesPerMinute, которое будет указывать, сколько калорий сжигает упражнение в минуту, и обновлять конструктор. Тогда в CaloriesPerMinute я бы добавил какуляцию. В основном вам нужно знать, что вы хотите. возможно, написание контрактов поможет вам.

0 голосов
/ 01 мая 2018

Как общий ответ на ваш вопрос:

caloryGoal - это параметр, его не нужно «настраивать», он предоставляется вызывающей стороной метода.

Необходимо убедиться, что все, что требуется для fitnessequipment.caloryConsumption, предоставлено (например, Fitnessequipment находится в действительном состоянии), чтобы метод работал.

Как правило, хорошей практикой является запрещение создания объекта, результатом которого будет RuntimeExceptions при вызове его методов. Поставьте себя на место того, кто использует ваш API, который его не написал, они не будут знать, какие поля являются обязательными, если они не требуются в конструкторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...