码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象的核心特征之:聚合/组合、接口/实现、抽象

时间:2020-02-25 00:00:33      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:通过   abs   相关   rac   关系   领域   更改   系统   就是   

1.聚合/组合 Aggregation/Composition

首先继承(Inheritance 它表述的是一种“is a”的关系,即一个类继承了另一个类的特征,比如:A car is a vehicle(汽车是一种交通工具)   A student is a person(学生是一类人)
聚合(Aggregation)它表述的是一种“has a”的关系,即一个对象是另一个对象的一部分,比如:A car has wheels (汽车有轮子)  A person has legs (人有腿)
? 聚合一个对象包含一组其他对象。如,大学 是由学生、老师组成的
? Aggregation relationships are transitive 聚合是可传递的。如,if A contains B an B contains C, then A contains C
? Aggregation relationships are asymmetric 聚合是不对称的。如,If A contains B, then B does not contain A

组合:

聚合关系的一个变种,称为组合。整体控制着部分的生命。

即整体与部分之间是命运相关体,比如手掌与手指(手掌没了手指自然就不存在了)
部分对象只能存在于整体对象之中,整体对象控制部分对象的生命周期
注意:? 有些时候,聚合与组合的关系不是很明确。  如,房间 与 门(这时候就统一认为是聚合即可,当关系不明确的时候使用聚合即可)

2.接口/实现 Interface /Implementation

? 生活中的例子,比比皆是
? 电视机接口 、水管接口等,举例:汽车里面有哪些接口?
? 对于软件系统
? 软件系统的内部是由大量的互相关联的类构成的,当对其中某一个类的局部进行修改的时候,不能影响其它的类
? 接口 interface
? describe how users of the class interact with the class 描述一个类的用户如何与这个类交互
? 实现 Implementation
? 完成接口所定义的功能,如类、构件等完成的任务
? A change to the implementation should not require a change to the user‘s code.(对实现的修改,不需要对用户代码进行更改。)
? both the user and the implementation must conform to the interface specification(用户和实现都必须符合接口规范)
  举例如下图:

技术图片

 

 

 3.抽象 Abstraction

 定义:“抽象表示一个对象与其他所有对象相区别的基本特征,因此提供了同观察者角度有关的清晰定义的概念界限。 ”

简单地讲,抽象(abstraction)就是过滤掉对象的一部分特性和操作,直到只剩下你所需要的属性和操作。

抽象是一种思维方式、一种思维能力,“抽取比较像的部分出来”
? 客观世界的事物由各种各样的实体(对象)构成
? 每个对象都有各自的内部状态和运动(状态)规律
? 根据对象的属性和运动规律的相似性可以将对象分类
?   复杂对象由相对简单的对象组成
?   不同对象的组合及其之间的相互作用和联系构成了系统
?   对象间的相互作用通过消息传递,对象根据所接收到的消息做出自身的反应
? “继承” 的强大就在于它的抽象和组织技术
? 毛主席提出的“统一战线”、“论持久战”,都是高度抽象的结果
? 抽象错了,危害很大!如张国涛的“南下抗日!

抽象与具体的比较:

举例:

你要到飞机场去。坐进出租车,该如何描述?
? A: 师傅,请送我去飞机场!(抽象)
? B: 师傅,走!出门左拐、直行、过桥、右转、直行、红绿灯左拐后继续直行…..(具体)
?
抽象是面向对象领域发现类的主要方法
 

 





 




面向对象的核心特征之:聚合/组合、接口/实现、抽象

标签:通过   abs   相关   rac   关系   领域   更改   系统   就是   

原文地址:https://www.cnblogs.com/cdlyy/p/12359362.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!