对具有变化属性的对象进行建模

Posted

技术标签:

【中文标题】对具有变化属性的对象进行建模【英文标题】:Modelling objects with changing attribute 【发布时间】:2012-07-21 01:31:32 【问题描述】:

我正在尝试用 Ruby 创建一个简单的程序来跟踪股票的价格走势,但我不完全确定应该如何设计。

基本上,我正在考虑一个 Stock 类,它具有所有属性,例如名称、描述等。但是,我不确定价格属性将如何工作。因为对于每只股票,我还想跟踪价格的历史并将它们绘制在图表上。所以,我的问题是,我应该创建另一个类,价格并将其与 Stock 相关联吗?还是有更好的方法?

我是 OOD 的新手,希望得到一些解释、有用的链接或其他建议。提前谢谢你。

【问题讨论】:

【参考方案1】:

其中一些取决于您选择的 DB:OO、文档或关系。如果您使用的是典型的关系数据库,那么您将有一个价格表,表示价格和库存之间的一对多关系。

您似乎应该有一个单独的价格类,因为我假设您希望随时间跟踪价格。我知道这不是 Ruby,但您的 Stock 类可能看起来像这样:

public class Stock

  public int Id  get; set; 
  public string Name  get; set; 
  public string Description  get; set; 
  public List<Price> PriceHistory  get; set; 

然后是价格:

public class Price

  public int StockId  get; set; 
  public DateTime PriceDate  get; set; 
  public decimal Price  get; set; 

注意:您需要忽略 ID 是公开的这一事实,因此可以由外部类更改。但是,为简单起见,以这种方式显示此代码。

希望对您有所帮助。

【讨论】:

感谢您保持简单。我现在看得更清楚了,Stock 对象将与 Price 具有一对多的关系,因为它在时间上具有不同的价格。顺便说一句,我可以学习对象建模的任何书籍推荐或资源?更适合 Web 应用程序? 这两个对我很有帮助:tinyurl.com/bl73f35 和 tinyurl.com/cqggdrj。我不知道 Web 应用程序的对象建模应该改变,除了跨线路使用 DTO。无论部署方案如何,您的域模型仍然是您的域模型。

以上是关于对具有变化属性的对象进行建模的主要内容,如果未能解决你的问题,请参考以下文章

用于建模具有任意属性的联网设备的最佳 API 以供学习?

UML笔记 - 类图

uml系统建模基础教程(清华大学出版社)课后题答案

如何在 CoreData 中对实体之间的相对分数进行建模

多边形建模的简介

利用边缘灰度变化建模,来提高圆环直径求取精度