面向对象技术PPT课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Nanjing University
2020/5/9
面向对象设计的相关问题
16
如何找到对象类型? 如何描述对象类型? 如何描述对象类型之间的关系和共性? 如何使用对象类型来构造程序?
Nanjing University
2020/5/9
对象刻画
17
考虑一类具有相似属性的对象而不是单个对象 定义对象的类型不是通过定义对象的物理表述,
而是通过定义它们的行为:即它们提供给外部 的服务
External, not internal view: ABSTRACT DATA TYPES
Nanjing University
2020/5/9
对象刻画问题
18
主要问题:如何描述程序对象(数据结构)?
Completely
Unambiguously
每月一发,有人每周一发哦 加个个人所得税系统接口 再加个图像用户界面,用来交互查询吧
……
Nanjing University
2020/5/9
“面向对象的软件构造”含义(1)
15
面向对象的软件构造(OOSC)乃是基于系统所 操作之对象类型(而非系统需实现之功能)来 架构系统的途径。
Meyer: “Object-oriented software construction is the approach to system structuring that bases the architecture of software systems on the types of objects they manipulate — not on “the” function they achieve.”
Paychecks
Nanjing University
2020/5/9
例:考虑一个工资系统
14
这种功能明确的系统确实适合结构化的开发方法:自顶向 下,逐步求精。
你完美地完成了任务。
而后,极有可能,客户会跑过来跟你说:
给我加个统计报表撒 下个月我想一些人发记时工资,一些人发计件工资啊行啊,有人
Nanjing University
2020/5/9
数据抽象发展
10
第一阶段:从无类型的二进制到基本数据类型
Fortran, Algol: 整型、实数、布尔数
第二阶段:从基本类型到用户自定义类型
Algol68, Pascal
第三阶段:从用户自定义类型到抽象数据类型 (Abstract Data Types)-- 面向对象
模块化程序设计和模块
Nanjing University
2020/5/9
面向对象的分解好在何处?
11
Reusability: 数据(结构)及其上之操作的整 体复用,而非仅仅复用操作功能;
Extendibility, Continuity: 对象更直接对应问题 空间的概念,因而较“功能”更稳定.
应变?
Nanjing University
2020/5/9
The first step
6
程序运行:在某个数据体上施以某些操作。 两个要素
操作(功能)Functions [or: Operations, Actions] 客体(对象)Objects [or: Data]
Action
Object
Processor
Nanjing University
2020/5/9
如何导出软件系统的结构?
7
两条途径:
从操作/功能入手 从客体/对象入手
形成两种抽象方法:
基于过程的抽象 基于数据的抽象
Nanjing University
2020/5/9
过程抽象 vs. 数据抽象
8wenku.baidu.com
过程抽象:指任何一个明确定义功能的操作都 可以被使用者看作单个的实体,尽管这个操作 实际上可能由一系列更低级的操作完成
Without overspecifying?
(Remember information hiding)
Nanjing University
2020/5/9
A stack, concrete object
capacity
19
(array_up)
count
“Push” operation: count := count + 1 representation [count] := x
The Big Name “E.W. Dijkstra”
开发过程侧面
自顶向下,逐步求精
程序设计侧面
小结构:顺序,选择,循环 大结构:过程抽象,避免全局变量
Nanjing University
2020/5/9
回顾:结构化软件开发
4
“结构化(structured)”的合理性
管理复杂性的有效手段
数据抽象:定义了数据类型和施加于该类型对 象上的操作,并限定了对象的值只能通过使用 这些操作修改和观察。包含了2个概念:
1. 模块封装 2. 信息隐蔽
Nanjing University
2020/5/9
数据抽象的意义
9
数据抽象提供了面向对象计算的起点:系统应 该被分解为概念上的实体,实体的内部细节应 该被隐藏!
Abstract Data Types
抽象数据类型
Nanjing University
2020/5/9
摘要
2
从面向过程到面向对象 如何规约对象?——抽象! Abstract data type ADT与软件开发
Nanjing University
2020/5/9
回顾:结构化软件开发
3
何谓“结构化(structured)”开发方法?
分解, 抽象, 层次
Correctness
规约与实现
Extendibility? Reusability?
Nanjing University
2020/5/9
从面向过程到面向对象
5
“结构化”的基本思想已经深入人心
但对于复杂、易变、交互性软件系统,以“功 能”为中心的分解方式有局限
完全自顶向下的功能分解? 线性过程式的程序组织?
Nanjing University
2020/5/9
现实世界
问题世界 软件世界
12
Reality 抽象
Nanjing University
2020/5/9
例:考虑一个工资系统
13
一开始,客户说他的需求很“简单明确”:
Employee information
Hours worked
Produce Paychecks
相关文档
最新文档