Php 如何编写关联、聚合和组合?
我读过一些关于这三种关系之间差异的帖子,我想我明白了 我只是想知道,在编写代码时,所有这些都是一样的吗 问题1:所有3个都只是实例变量中对象类型的值Php 如何编写关联、聚合和组合?,php,oop,Php,Oop,我读过一些关于这三种关系之间差异的帖子,我想我明白了 我只是想知道,在编写代码时,所有这些都是一样的吗 问题1:所有3个都只是实例变量中对象类型的值 class A { public $b = '' public function __construct($object) { $this->b = $object // <-- could be a association, aggregation or a composition relation
class A {
public $b = ''
public function __construct($object) {
$this->b = $object // <-- could be a association, aggregation or a composition relation?
}
}
聚合/关联通过构造函数或其他方法传递:
class A {
public $b = ''
public function __construct($object) { // passed through a method
$this->b = $object
}
}
问题4:为什么/什么时候知道这一点很重要。我是否必须在另一个对象中注释一个对象,它是关于什么关系的,还是在UML图中进行注释
有人能解释一下这些问题吗?可能有你最好的定义。您的示例中没有一个区分关联、聚合或组合。没有对A是什么或B是什么的任何定义,就没有对它们之间关系的定义。如何获得对另一个对象的引用与类图无关。您是对的,这些对象通常被实现为对象引用,当然,它们通常只是某些类的成员字段。这只是因为它在面向对象系统中是很自然的,它可以映射到不同上下文中的其他内容,例如关系数据库中的外键 正如@erisco所提到的,关系的细节只能在整体模型的上下文中考虑。例如,我们可以这样读取采购订单和订单行之间的组合关系(例如):采购订单包含一个或多个订单行 我通常将你给出的三个解释如下:
因此,语言本身无法解释两个对象之间的关系。它只显示在UML图中,以便我们程序员理解这些对象之间的关系,对吗?因为我只是想知道是否有一种特定的方式来编码这些关系,但似乎不是这样。这些关系应该在代码中作为注释输入,还是仅在UML中输入?参见本文:
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
}
}