我正在创建一个程序,记录运行100米的短跑运动员的数据。为此,我设计了一个名为" Entry"用于记录用户运行100m的日期以及用户运行它的秒数的类。创建Entry对象时,用户输入日期和秒,并且对象计算其他一些数据,例如平均速度跑步和(估计)最高速度。当用户保存"条目"时,数据将被写入文件(其中包含其中之前日期的其他条目)。我的问题是应该只将日期和秒写入文件,并在从文件加载数据时再次计算其他信息(如平均/最高速度)?或者我应该只将所有数据写入文件,以便不再需要计算信息?
注意:关于将所有数据写入文件的一个问题是我必须创建某种方法,可能是构造函数,用于设置条目对象的平均/最高速度(加载数据时)从文件)。这意味着使用此对象的人可以自己设置平均/最高速度,这是我不想要的。我希望对象本身负责确定信息,没有其他人。
我包含了该类的一些代码,以防它有所帮助。 非常感谢任何帮助或建议!
class Entry
{
// Class fields
private const int DISTANCE = 100;
private const double ADDEDMPH = 3.5;
private int _month;
private int _day;
private int _year;
private double _seconds;
private double _averageSpeed = 0;
private double _topSpeed;
// Constructors
public Entry()
{ }
public Entry(double secs)
{
_seconds = secs;
validateSeconds();
if(secondsChecked)
calcTopAndAverageSpeed();
}
public Entry(int month, int day, int year)
{
_month = month;
_day = day;
_year = year;
validateDate();
}
public Entry(double secs, int month, int day, int year)
{
_seconds = secs;
_month = month;
_day = day;
_year = year;
validateAll();
if(secondsChecked)
calcTopAndAverageSpeed();
}
// Class properties - when something is entered, it should be checked. If something is invalid, when it is accessed, it should return -1
public double Seconds
{
get
{
if (secondsChecked == true)
return _seconds;
else
return -1;
}
set
{
_seconds = value;
validateSeconds();
if(secondsChecked)
calcTopAndAverageSpeed();
}
}
public int Day
{
get
{
if (dayChecked == true)
return _day;
else
return -1;
}
set
{
_day = value;
validateDay();
}
}
public int Month
{
get
{
if (monthChecked == true)
return _month;
else
return -1;
}
set
{
_month = value;
validateMonth();
}
}
public int Year
{
get
{
if (yearChecked == true)
return _year;
else
return -1;
}
set
{
_year = value;
validateYear();
}
}
// Class Methods
// Calculating methods
void calcAverageSpeed()
{
_averageSpeed = (DISTANCE / _seconds);
}
void calcTopSpeed()
{
_topSpeed = ((DISTANCE / _seconds) + ADDEDMPH);
}
void calcTopAndAverageSpeed()
{
_averageSpeed = (DISTANCE / _seconds);
_topSpeed = _averageSpeed + ADDEDMPH;
}
}
答案 0 :(得分:0)
如果要保存数据库中的所有信息,则需要空间。同样在插入过程中,您需要对其进行计算,因此插入时间会更长(不会更长,但这取决于您的性能目标)。如果您不保存它,那么您将需要更少的空间,但需要在检索期间计算。
因此,这一切都取决于您的要求。如果您没有任何特定要求,那么我不会将其保存在数据库中,因为它们可以被计算出来,并且没有限制(要求)在检索期间不应该计算它。
再次,取决于具体情况。