class A 和 class C 使用什么 UML 关系,其中 class C 是 Class B 和 Class A 的成员取决于 Class乙
What UML relation to use for class A and class C, where class C is a member of Class B and Class A depends on Class B
这是一个代码示例。
class C;
/* B is a container of class C */
class B
{
public:
size_t size() const;
C const& operator[](size_t index) const {
return elements[index];
}
std::vector <C> elements;
}
class D
{
public:
D(C const& c);
}
/* A is a container of class D */
class A
{
public:
A(B const& b) {
// TO construct Class D instance, A needs to pass reference to class C
// to class D's constructor.
for (int i = 0; i < b.size(); ++i) {
elements.emplace_back(b[i]);
}
}
std::vector <D> elements;
}
这里,
作文 D
B 作文 C
A 依赖 B
D 依赖 C
在 A 和 C 之间使用哪个 UML 关系?
从A到C是单向关联?
这就是你所说的(由于我的 Cxx 知识有限,所以不太确定你的代码):
你可以清楚地看到,A 也依赖于 C,因为它是 B 的成员。但是你不需要用依赖来表达它,因为它很明显。
注意:根据@Ister的评论,A
不直接依赖于C
,因为它不使用它。 UML 图表明了这一点。这种依赖只是间接的,因为(可能)B
需要 C
才能正常工作。这就是为什么 C
第一手放在 B
里面。但是在这里绘制从 A
到 C
的依赖关系是错误的。
这是一个代码示例。
class C;
/* B is a container of class C */
class B
{
public:
size_t size() const;
C const& operator[](size_t index) const {
return elements[index];
}
std::vector <C> elements;
}
class D
{
public:
D(C const& c);
}
/* A is a container of class D */
class A
{
public:
A(B const& b) {
// TO construct Class D instance, A needs to pass reference to class C
// to class D's constructor.
for (int i = 0; i < b.size(); ++i) {
elements.emplace_back(b[i]);
}
}
std::vector <D> elements;
}
这里,
作文 D
B 作文 C
A 依赖 B
D 依赖 C
在 A 和 C 之间使用哪个 UML 关系?
从A到C是单向关联?
这就是你所说的(由于我的 Cxx 知识有限,所以不太确定你的代码):
你可以清楚地看到,A 也依赖于 C,因为它是 B 的成员。但是你不需要用依赖来表达它,因为它很明显。
注意:根据@Ister的评论,A
不直接依赖于C
,因为它不使用它。 UML 图表明了这一点。这种依赖只是间接的,因为(可能)B
需要 C
才能正常工作。这就是为什么 C
第一手放在 B
里面。但是在这里绘制从 A
到 C
的依赖关系是错误的。