- 1、本文档共113页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九章 面向对象方法学引论 9.1 面向对象方法学引论 9.2 面向对象概念 9.3 面向对象建模 9.4 对象模型 9.5 动态模型 9.6 功能模型 目标 了解面向对象概念 掌握类及类的关联关系 掌握用例及用例之间的关系 传统软件工程方法与面向对象方法 Conventional methods 部分缓解了软件危机 适用于中、小规模的项目开发 Object-oriented Methodology 20世纪60年代提出(Simula-67) 20世纪70年代出现很多面向对象编程语言 80年代形成了面向对象方法学,被广泛应用 90年代成为首选的开发方法 面向对象方法学 (Object-oriented Methodology,OOM) 语义断层 OOM的特点 尽可能模拟人类习惯的思维方式 问题空间与求解空间在结构上尽可能一致 以数据或信息为主线,把数据和处理结合构成统一体——对象 软件系统:一系列离散的 集合 程序 OOM的四要素 对象(object) 类(class):data + methods OOM的四要素 对象(object) 类(class):data + methods 继承(inheritance) 消息通信(communication with messages) Coad Yourdon OOM = ① + ② + ③ + ④ 相关方法 基于对象的方法 ① + ④ = Object-based 基于类的方法 ① + ④ + ② = Class-based 面向对象方法 ① + ④ + ② + ③ = Object-oriented 面向对象方法组成 9.2、面向对象的概念 对象(Object) 类(Class) 实例(Instance) 消息(Message) 方法(Method) 属性(Attributes) 封装(Encapsulation) 继承(Inheritance) 多态性(Polymorphism) 重载(Overloading) 1. 对象(Object) (1)对象的定义 对象是具有相同状态的一组操作的集合 对象是对问题域中某个东西的抽象 对象是一台自动机 定义1 Object: :=(Oid, DS, OS, MI) Oid 对象名称(标识) DS={d1,d2,…,dn} 数据结构集 OS={o1,o2,…,om} 操作集 MI={m1,m2,…,mk} 消息名称集 定义2 Ojbect: :=(id, RM, DS, CS, ds, B) id 通讯地址,是定义1中Oid的具体化 RM 消息集 ReqM + FinM DS 数据结构集 CS 通信状态集idle+wait ds 数据DS初始值 B 对象行为 (2)对象的特点 数据为中心 主动的 数据封装 并行性 模块独立性好 2. 类(Class) 3. 实例(instance) 4. 消息(Message) 5. 方法(Method) 对象所能执行的操作 类中所定义的服务 (Operations, methods, services, responsibilities) 6. 属性(Attributes) 类中所定义的数据 对客观世界实体所具有的性质的抽象 7. 封装(Encapsulation) 把数据和实现操作的代码集中起来放在对象内部 封装性的条件 有一个清晰的边界 有确定的接口(即协议) 受保护的内部实现 类和对象 【例】 8. 继承(Inheritance) 子类自动地共享基类中定义的数据和方法的机制 类等级 类的继承机制 【例】类的继承机制 继承的传递性(transitivity) C?B,B?A ? C?A 一个 class 继承了上层全部 classes 的一切性质 单继承和多重继承 单继承 (single inheritance) 一个类只允许有一个父类 类等级为树形结构 多重继承(multiple inheritance) 一个子类可有多个父类 功能更强,使用更方便 注意避免二义性 多重继承的二义性(ambiguity) 多个父类中定义重名,但各具不同性质的方法 继承的优点 共享程序代码和数据结构,大大 减少了冗余信息 修改方便 扩充:调用基类方法并增加代码 改变:改写同名方法 新增:定义新方法 软件重用 9. 多态性(Polymorphism) 不同层次的 classes 可共享一个method名,而按各自的方式来实现该method 发送消息的对象不需要
文档评论(0)