ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2020-02-24 22:54:02  阅读:525  来源: 互联网

标签:聚合 对象 contains Aggregation 接口 面向对象 抽象


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: 师傅,走!出门左拐、直行、过桥、右转、直行、红绿灯左拐后继续直行…..(具体)
 抽象是面向对象领域发现类的主要方法
 

 




 

 



 

标签:聚合,对象,contains,Aggregation,接口,面向对象,抽象
来源: https://www.cnblogs.com/cdlyy/p/12359362.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有