繁体   English   中英

如何为我的程序正确设置类设计(C#.Net)

[英]How to properly setup class design for my program (C# .Net)

我是一名自学成才的程序员。 我设计了一个赛马程序,该程序读取一个文件,该文件包含有关每场比赛中每匹马的信息,包括有关该赛马之前10场比赛的信息。 然后将信息输出为可读格式,类似于赛马形式或程序。

例如,在8月10日星期六,丘吉尔唐斯(Churchill Downs)有9场比赛,每场比赛有8匹马。 因此,当天的csv文件将包含72匹马。 这些赛马中的每匹也都会有最近10场比赛的统计数据。

我目前所做的是将csv文件中的内容读取到列表中。 然后,我将列表中包含的信息传输到马对象列表,该对象基本上存储了每匹马的所有信息。

我觉得使用类存储所有信息所获得的唯一好处是,由于不必记住索引,因此更容易操作该数据。

我想知道是否有更好的方法来设计此程序? 有见识吗?

如果您考虑一下这里真正发生的事情,那么您会拥有赛马,种族以及特定种族在特定种族中的表现。

因此,如果允许您的班级设计遵循此规则,则可能会有以下内容:

public class Horse
{
    public string Name { get; set; }
    public Gender Gender { get; set; }
    public Breed Breed { get; set; }
    public DateTime WhenBorn { get; set; }
    // etc...

    public TimeSpan GetAge()
    {
        return DateTime.Now - WhenBorn;
    }
}

public class Race
{
    public string Venue { get; set; }
    public DateTime WhenStarted { get; set; }
    public DateTime WhenFinished { get; set; }
    // etc...
}

public class HorseRace
{
    public Race Race { get; set; }
    public Horse Horse { get; set; }
    public int? PlaceFinished { get; set; } // null if did not finish
    public string JockeyName { get; set; }
    public double HorseWeighIn { get; set; } // weight of horse at time of race
    public double JockeyWeighIn { get; set; } // weight of jockey at time of race
    // etc...
}

public enum Gender
{
    Colt,
    Filly
}

public enum Breed
{
    // fill in breeds here
}

有了自己喜欢的课程设计后,您就可以开始考虑如何存储数据,以使其最容易进入课堂。 对于每个类,您可以有一个单独的文件,而不是一个包含大量重复数据的巨型csv文件,因此是Horses.csv,Races.csv,HorseRaces.csv。 最终,您可能希望从CSV升级到基于文件的小型数据库。

最终,您希望拥有三个列表: HorsesRacesHorseRaces 要显示这些列表,您可以遍历HorseRaces ,并且只需使用HorseRace的属性以及随后的RaceHorse的属性即可轻松获取所需的所有数据。 例如, horseRace.Horse.Name

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM