(0)当类Foo包含Predicate<Bar>类型的字段或类似类型的字段时,Foo与Bar的关系是什么
class Foo {
Predicate<Bar> validator;
}(1)如果一个类Foo包含一个Bar的泛型容器(不一定是列表;可能是一个Bar的盒子),那么Foo与Bar的关系是什么
class Foo {
SomethingThatHasA<Bar> barContainer;
}(2)如果一个类Foo有一个Bar类型的可以为空的成员,那么Foo是否仅仅依赖于Bar,与之有关联,或者是它的组合
class Foo {
Bar bar; // may be null
}(3) (这在C++中可能比在其他地方更有意义)如果类Foo通常由Bar对象组成(即,没有Bar就不能生存),但允许有一个默认构造函数,该构造函数将其所有字段置零/作废,作为一种空白石板状态,直到稍后填充才会有用处,Foo是否仍然与Bar有组合关系
class Foo {
private:
Bar* bar; // or possibly just a non-pointer Bar
public:
Foo() : bar(nullptr) {}
Foo(/* whatever */) : bar(/* something */) {}
};发布于 2016-09-05 17:56:54
(0)和(1):UML依赖在这里是合适的:一个从Foo指向Bar的虚线箭头。
(2)至少一个协会。如果Foo和Bar的含义是这样的,那么Bar可以被认为是Foo的一部分,那么您可以使用聚合(开放菱形),例如在汽车和发动机的情况下。此外,如果Foo引用的Bar实例的生存时间不长于其Foo,则可以使用组合(填充菱形),即使并非每个Foo都有Bar,也不是每个Bar都包含在Foo中。
(3)是
发布于 2016-08-29 01:38:02
(0)无- Foo只知道通过验证器来验证Bar的实例。
(3)是。具有无效Bar%s的Foo-s属于不死类别(因为...即没有酒吧就活不下去)
https://stackoverflow.com/questions/39193730
复制相似问题