java UML与泛型和可空字段的关系
(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
,与之关联,或者是Bar
的组合
class Foo {
Bar bar; // may be null
}
(3)(如果C++中的一个类{{CD1}}通常由一个^ {CD4}对象组成(即不能没有^ ^ {CD4}}),但它可以有一个默认构造函数,它将所有字段作为一种空白板岩状态进行零化/取消,直到填入之后才可用,这是在C++中比其他地方更具意义的。Foo
是否仍然与Bar
存在组合关系
class Foo {
private:
Bar* bar; // or possibly just a non-pointer Bar
public:
Foo() : bar(nullptr) {}
Foo(/* whatever */) : bar(/* something */) {}
};
# 1 楼答案
(0)和(1):UML依赖关系在这里是合适的:一个从Foo指向Bar的虚线箭头
(2)至少有一个协会。如果Foo和Bar的含义是这样的,那么Bar可以被视为Foo的一部分,那么您可以使用聚合(开放菱形),例如在汽车和发动机的情况下。此外,如果Foo所指的酒吧实例的寿命不比他们的Foo长,那么你可以使用合成(填充钻石),即使不是每个Foo都有酒吧,即使不是每个酒吧都包含在Foo中
(3)是的