首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与单独类具有关联关系的组合类

问与单独类具有关联关系的组合类
EN

Stack Overflow用户
提问于 2015-02-09 19:45:41
回答 1查看 63关注 0票数 0

使用模块和类,定义这种类关系的最佳方法是什么?

​

​

商品具有零或多个价格序列‘(聚合),并且通过选择ExcelFile对象的一部分创建价格系列对象。

( excel文件对象是已转换为类似json结构的excel工作簿)

我认为ExcelFile类应该是一个单独的类.然后我可以实例化商品(例如gold = Commodity.new("gold"))。我可以实例化一个Excel文件(例如yahoo_prices = ExcelFile.new(xlsx_file_name))。

但是现在我想使用商品命名空间之外的PriceSeries对象实例化一个ExcelFile对象(在商品对象中)。

我该怎么做?我该这么做吗?我在正确的轨道上吗?

我认为应该是这样的:

代码语言:javascript
复制
class ExcelFile
end

class Commodity 
    class PriceSeries
    end
end

这个“程序”将是一个大得多的程序中的一个特性。将所有这些类放在一个模块中,然后最终将其混合到“主”类中,这是个好主意吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-09 20:36:47

你走在正确的轨道上。但是,正如代码所示,图表显示的是聚合而不是内部类。所以它们不是完全一致的。我认为您应该使用图表并更改代码:

代码语言:javascript
复制
class ExcelFile
end

class Commodity
    PriceSeries[] myPriceSeriesArray
end

class PriceSeries
end

当然,它还有更多的功能:您必须有一种方法来创建PriceSeries实例,并将它们分配给myPriceSeriesArray数组。但这是基本的想法。

现在,您的图表中有一些内容:

  1. *是0..*的缩写。因为您至少需要一个PriceSeries和一个ExcelFile,所以需要将它们更改为1..*。(这假设您可以拥有任意数量的任意一个,只要您至少有一个。)
  2. 我建议您将<<file>>原型放在ExcelFile类中。
  3. 考虑让商品和PriceSeries之间的关联成为一种组合,而不是聚合(黑色菱形而不是白色)。这意味着您的PriceSeries类的生存期与商品类的生存期相关联。它看起来不像一个PriceSeries实例具有任何独立于商品的逻辑标识,所以当您处理一个商品对象时,我会认为您也会处理这个PriceSeries对象。如果您决定这样做,您的代码应该在商品构造函数中实例化必要的PriceSeries对象,并将它们分配给myPriceSeriesArray属性。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28417985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档