UML 与泛型和可为空字段的关系
UML relationships with generics and nullable fields
(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 */) {}
};
(0( 和 (1( : UML 依赖关系在这里是合适的:从 Foo 指向 Bar 的虚线箭头。
(2(至少是一个协会。如果Foo和Bar的含义是这样的,那么Bar可以被认为是Foo的一部分,那么您可以使用聚合(开放菱形(,例如在汽车和发动机的情况下。此外,如果 Foos 提到的酒吧实例的寿命不比它们的 Foos 长,那么您可以使用组合物(填充菱形(,即使不是每个 Foo 都有一个酒吧,即使不是每个酒吧都包含在 Foo 中。
(3( 是
(0( none - Foo
只知道通过验证器验证 Bar 的实例。
(3(是的。 Foo
-s 具有无效Bar
s 属于不死类别(因为...即没有酒吧就活不下去(
相关文章:
- 将结构字段的类型展开为可变模板参数
- 将位字段导出到数组
- 为了方便起见,我应该避免公开私有字段变量吗
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 在java中读取c++字节的位字段
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- 私有字段对象与私有继承?
- 声明没有默认构造函数的字段
- C++内存模型和位字段的最大序列
- 声明为无效的变量或字段'...' Ardunio 编译器上的错误
- 如何在QByteArray中放置和检索位字段而不会感到痛苦?
- C++ win32 如何使密码字段可选并启用复制和粘贴?
- 如何通过UDP接收QByteArray并将其解析为位字段结构?
- 仅匹配集合中的某些字段
- 结构字段名称与 GDB 中的 STL 数组冲突
- 如何使用位字段将数据从二进制文件复制到结构中?
- 结构体和类的不同大小(),彼此具有相同的字段类型
- 如何避免在数据结构中包含存储为字段的类?
- 依赖注入:依赖关系需求字段/成员
- UML 与泛型和可为空字段的关系