面向对象的关联示例
【摘要】 1 关联简介面向对象编程中的关联、聚合和组合,本文介绍面向对象编程中的关系概念。在网络上找到关联、组合和聚合的多种定义,但其中大多数都有复杂的解释,没有实际应用。这三个术语描述了类之间的不同关系。类之间五种关系(关联、聚合、组合、依赖、泛化)的解释及在 Go 中的实现示例。 2. 关联(Association)关联是两个类之间的连接,表示它们相互协作。常见的关联是通过指针来表示。实现代码 ...
1 关联简介
面向对象编程中的关联、聚合和组合,本文介绍面向对象编程中的关系概念。在网络上找到关联、组合和聚合的多种定义,但其中大多数都有复杂的解释,没有实际应用。
这三个术语描述了类之间的不同关系。类之间五种关系(关联、聚合、组合、依赖、泛化)的解释及在 Go 中的实现示例。
2. 关联(Association)
关联是两个类之间的连接,表示它们相互协作。常见的关联是通过指针来表示。
实现代码
package main
import "fmt"
type Customer struct {
Name string
}
type Order struct {
OrderID string
Customer *Customer // 关联:一个订单关联到一个客户
}
func main() {
customer := &Customer{Name: "Alice"}
order := &Order{OrderID: "12345", Customer: customer}
fmt.Printf("Order %s is associated with customer %s\n", order.OrderID, order.Customer.Name)
}
小结
在面向对象的通用软件设计中,一个对象的功能与另一个对象功能之间的关系称为关联。请注意,两个对象之间的关联与两个类之间的继承不是一回事。关联意味着一个对象使用另一个对象或该另一个对象中的函数/方法。换句话说,关联定义为当一个对象具有对其他对象的一个或多个引用时,对象之间的关系。
以下是关联和继承之间的核心区别:
继承意味着两个对象是相同类型的对象。一个对象恰好是另一个对象的更通用或更具体版本。关联发生在两个不同的对象之间。
继承被称为 IS-A 关系,而关联被称为 HAS-A 关系。
继承的模式取决于编程语言的功能。例如,Java 不支持多重继承,但 C++ 支持多重继承。另一方面,任何语言都可以在对象之间具有一对一、一对多和多对多关联。
对象之间有两种类型的关联:组合和聚合。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)