03-抽象

定义

抽象是指对于一个过程的某些细节有目的的隐藏,以便把其他方面或细节表达得更加清楚。每个抽象层次,包括了某些信息,同时也忽略了另一些信息。

软件开发中使用到的抽象类型有:

  • 过程抽象
    • 划分系统的功能,强调功能完成的过程和步骤
    • 面向过程的软件开发采用这种抽象方法
  • 数据抽象
    • 把数据与这些数据上的操作结合在一起
    • 抽象成不同的抽象数据类型——把接口与实现分离开了

抽象的层次

一、团体——最高级别
程序被视为一个对象的团体,这些对象间相互作用,完成共同目标。
团体有两种含义:

  1. 指程序员的团体。
  2. 指程序员创建的对象的团体

他们都满足:相互作用,以完成共同目标

二、单元unit
协同工作的对象可以组合到一个单元中。如Java中的包package,C++中的命名空间namespace。
这些单元允许某些特定的名称暴露在单元以外,而其他特征则隐藏在单元中。

三、服务者与客户CS
用以处理两个独立对象间的交互。
服务者向客户提供服务,利用通信来交互。

此级别通常用接口来表示——定义行为,但不描述如何具体实现。

四、服务实现方式
即抽象行为的具体实现方式——比如顺序、链式、堆栈……

五、具体实现
方法的实现逻辑——具体过程或算法。

抽象的形式

特殊化、分治法、不同视角

一、特殊化/具体化

例:载运工具—>有轮的载运工具—>汽车

二、分治法

将一层划分成多个组成部分

若组件很多,用目录catalog来组织。如类的列表、类中方法列表等。

例:汽车—>发动机、传动机构、车身和车轮。

三、不同视角

对同一件物品提供不同的视角,每个视角可能会看到不一样的细节,描述出不同的特性。

例如,机械师眼里的汽车和外行眼里的汽车。

继承方式

ISA继承

描述类之间类与接口的继承关系。
如果A is-a B,那么B是A的基类(超类)。
“extends”

HASA组合

组合composition——由简单部分。根据一些组合规则,构建成复杂结构,允许合并机制,既可对初始形式进行组合,也可以对新形式进行组合。

"Has-a"代表的是对象和他成员的从属关系
如果A has-a B,B是A的组成部分。

抽象类

抽象类是不能被直接实例化的类,即它没有直接的实例。

抽象类通常包括一个或多个抽象方法(只有方法说明,没有方法体),抽象类的子类必须实现其父类定义的每一个抽象方法,除非该子类也是抽象类。

抽象类中既可以有一般方法,同时必须有抽象方法。

作用:使子类能够对方法有不同的实现方式。抽象超类能够避免模糊性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

边懵懵'.ㅅ'

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值