我已经阅读了一些关于这3种关系之间差异的文章,我想我明白了重点。
我只是想知道,在编码时,它们是否都是相同的写法?
问题1:这3种关系都只是实例变量中对象类型的值吗?
class A {
public $b = ''
public function __construct($object) {
$this->b = $object // <-- could be a association, aggregation or a composition relation?
}
}
问题2:它必须是实例变量还是可以是静态变量?
class A {
public static $b = '' // <-- nothing changed?
public function __construct($object) {
$this->b = $object
}
}
问题3:对象创建的位置有区别吗?
我倾向于认为组合对象是在对象内部创建的:
class A {
public $b = ''
public function __construct() {
$this->b = new Object // is created inside the object
}
}
并聚合/关联通过构造函数或另一个方法传递:
class A {
public $b = ''
public function __construct($object) { // passed through a method
$this->b = $object
}
}
问题4:为什么/何时知道这很重要。我是否必须在另一个对象内注释其关系,还是在UML图表中进行?能否有人解答这些问题?