3、面向对象设计:原理、实践与案例分析

面向对象设计:原理、实践与案例分析

1. 组合与聚合关系

在面向对象设计中,组合和聚合是两种重要的对象关系。在UML(统一建模语言)里,组合关系用实心菱形表示,聚合关系则用空心菱形表示。以国际象棋为例,棋盘和棋子作为棋具的一部分被存储,就如同棋具对象的属性引用它们一样。在实际应用中,一旦过了设计阶段,聚合和组合的区别往往变得不那么重要,因为在实现时,它们的行为很相似。不过,当团队讨论不同对象如何交互时,区分这两者还是有帮助的。通常可以将它们视为相同的事物,但在需要区分时,了解它们的差异就显得尤为重要,这也是抽象的体现。

2. 继承关系

2.1 继承的概念

除了组合和聚合,对象之间还有关联关系。但仅靠这些关系还不足以完整地定义国际象棋系统。例如,玩家可能是人类,也可能是具有人工智能的软件程序。这里就需要一种“是一个”(is - a)的关系,即继承。继承是面向对象编程中最著名、最常用但也常被过度使用的关系。它类似于家族树,就像姓氏和一些特征会在家族中传承一样,在面向对象编程中,一个类可以从另一个类继承属性和方法。

2.2 国际象棋棋子的继承示例

国际象棋棋具中有32个棋子,分为6种不同类型(兵、车、象、马、王、后),每种棋子移动时的行为不同。这些棋子类都有一些共同属性,如颜色和所属棋具,同时在棋盘上有独特的形状和不同的移动方式。可以让这6种棋子类继承自一个 Piece 类。空心箭头表示各个棋子类从 Piece 类继承,所有子类会自动拥有从基类继承的 chess_set color 属性。每个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值