这是我在这里发表的第一篇文章,所以如果没有人会因为我的问题而生气,我很高兴,并希望因为我的英语...这不是我的母语: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
,{{1}等其他属性等等?
我的问题是,给出了一些属性,但我不知道,如果我只是通过查看方法来添加其他属性......
答案 0 :(得分:0)
作为对您问题的一般回答:
caloryGoal
是一个参数,它不需要设置"它由方法的调用者提供。
您需要确保提供fitnessequipment.caloryConsumption
所需的所有内容(例如Fitnessequipment
处于有效状态),以使该方法有效。
根据经验,不允许创建一个在调用其方法时会导致RuntimeExceptions
的对象,这是一个好的做法。让自己处于使用您没有编写API的人的位置,除非他们在构造函数中需要,否则他们不会知道哪些字段是强制性的。
答案 1 :(得分:0)
我希望我不会误解你的问题,但这里有:
caloryGoal
是由调用goalReached()
的任何内容传入的参数,因此caloryGoal不是你需要在构造函数中初始化的东西。如果在调用构造函数后需要指定的对象中有值(如果在实例化后了解该值应该是什么),则可以使用setter方法。这是一个例子:
public void setWorkoutTime(int newWorkoutTime) {
workoutTime = newWorkoutTime;
}
调用此方法后,workoutTime
将包含您传入newWorkoutTime
的内容的值。
答案 2 :(得分:0)
有点不清楚您描述的功能的目的是什么。 如果我理解正确,那么goalReached是一个接收数字的函数,如果caloryGoal> =在此会话中烧掉的卡路里(此实例),则返回true。 因此它应该看起来像这样:
public boolean goalReached (int caloryGoal) {
return (this.caloryConsumption(workoutTime) >= caloryGoal))
}
当caloryConsumption将是一个返回每个会话燃烧的实例卡路里的函数。为此,我应该添加一个名为CaloriesPerMinute的新文件,它将指示锻炼每分钟燃烧多少卡路里并更新构造函数。然后在CaloriesPerMinute中我会添加计算。 基本上你需要知道你想要什么。也许写合同会对你有帮助。