2013-01-24 45 views
2

在下图中,类“复制”和类“书”显示聚合(书复制)。所有其他类都是“复制”类的子类。现在,假设有一个Member类,它必须访问类“Copy”的子类“Lending”和“Borrow”。 'Member'类应该知道的唯一事情是“accessionNumber”。在聚合类中实现连接

如果我们根据代码考虑这一点,我的“Book”类包含一个“Copy”的数组。

enter image description here

我怎么能知道某本书的accessionNumber?

假设我需要我的copies数组中第三本书的“accessionNumber”。但是该数组位于Book类中,并且与Copy类中的Book类没有关系。

如果我们创建一个连接回来,那会是像“复制有一本书”,或更有意义,像“Subject有学生”(以著名的聚集例如“学生主题)?

+0

@LuchianGrigore:因为这可以在任何这些实现​​。如果某人有能力使用Java(它是我的母语),那么我可以将它转换回C++,因为这只是它处理的方式。 –

+0

您可以始终使用SQL方式并创建一个将Book和Copy链接在一起的类。然而,这在C++程序中很少用到。 –

+0

@BartekBanachewicz:嗨,你的意思是我需要一个数据库?我不允许 –

回答

1

如果我们创建一个连接回来,那会是像“复制有一本书”

不,不会。一个简单的dependency关系(例如参考或非拥有在C++指针)不是与强有力的组织“拥有”或“拥有”的关系的聚合或组成。这听起来像你想在这里。

+0

你好,感谢您的回复。你的意思是“复制”类中的“Book * bookPtr”(指向书的指针)之类的东西? –

+0

@Yohan:是的,给'Copy'指针或引用其关联的'Book'。 –

+0

太好了。谢谢:)我真的很感激它:) –