面向对象系统分析与设计_第1页
面向对象系统分析与设计_第2页
面向对象系统分析与设计_第3页
面向对象系统分析与设计_第4页
面向对象系统分析与设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象系统分析与设计面向对象系统分析与设计 Object-Oriented Systems Analysis and Design河北农业大学信息科学与技术学院滕桂法 教授第四章第四章 面向对象编程面向对象编程分析、设计、编程的流程分析、设计、编程的流程分析、设计、编程的关系分析、设计、编程的关系设计项目设计项目 从静态构造、动态行为、功能处理、物理因素来考虑从静态构造、动态行为、功能处理、物理因素来考虑 各个阶段都是以静态构造为中心模型各个阶段都是以静态构造为中心模型阶段间的距离阶段间的距离 各阶段距离小。分析和设计比设计和编程的距离要大。各阶段距离小。分析和设计比设计和编程的距离要大。面

2、向对象编程面向对象编程程序的处理分配,程序的处理分配,文件分配文件分配程序的处理分配,程序的处理分配,文件分配文件分配-物理模型操作的设计部,操作的设计部,编程部编程部处理的流程处理的流程(处理(处理IPO)处理的输入输出数处理的输入输出数据(处理的据(处理的I/O)功能模型操作的调用操作的调用(表明)(表明)对象间的消息通信对象间的消息通信时点,对象状态时点,对象状态对象间的消息通信对象间的消息通信顺序,对象的状态顺序,对象的状态动态模型类定义,类定义,事例定义事例定义类的静态构造类的静态构造 ,事例的静态构造事例的静态构造对象(类)的静态对象(类)的静态构造构造静态模型编程设计分析阶段面向

3、对象编程面向对象编程对象模型对象模型动态模型动态模型功能模型功能模型类定义,类定义,类间关系类间关系主要事件的主要事件的流程(表明)流程(表明)针对操作的针对操作的数据输入输出数据输入输出分析模型分析模型编程编程从分析模型到编程的实现从分析模型到编程的实现充充分分利利用用3个个模模型型面向对象编程面向对象编程从分析得到的抽象数据的实现从分析得到的抽象数据的实现用户接口用户接口窗口窗口利用分析分析编程编程class Windowprivate: int xPos, yPos; bool isVisibile;public: show(); hide(); move(int direction,

4、int amount);数据类型数据类型类定义类定义操作函数群操作函数群分析的抽象数据类型和编程的抽象数据类型分析的抽象数据类型和编程的抽象数据类型面向对象编程面向对象编程从分析得到的抽象数据的实现从分析得到的抽象数据的实现分析分析编程编程class Windowprivate: int xPos, yPos; bool isVisibile;public: show(); hide(); move(int direction, int amount);分析的封装化和编程的封装化分析的封装化和编程的封装化 窗口窗口 xpos ypos isVisible show() hide() move(

5、.)分析中的原则:分析中的原则:属性隐蔽、操作公开属性隐蔽、操作公开编程中:编程中:private,public关键词指定隐蔽和公开关键词指定隐蔽和公开面向对象编程面向对象编程从分析得到的继承的实现从分析得到的继承的实现分析分析编程编程class Windowprivate: int xPos, yPos;public:move(.);class ResizableWindow :public Windowprivate: int xSize,ySize;public: resize();分析的继承和编程的继承分析的继承和编程的继承 窗口窗口 xpos ypos move(.) 可变窗口可变窗

6、口 xSize ySize resize(.) is-a面向对象编程面向对象编程从分析得到的消息通信的实现从分析得到的消息通信的实现分析分析编程编程分分析析的的消消息息通通信信和和编编程程的的消消息息通通信信用户接口用户接口窗口窗口Show,Hide,Moveclass Windowprivate: int xPos, yPos; bool isVisible;public: show(); hide(); move(int directuion, int amount);Window theTarget; theTarget.show(); theTarget.move(); theTarg

7、et.hide();消息通信消息通信面向对象编程面向对象编程从分析得到的状态的实现从分析得到的状态的实现改改变变状状态态的的处处理理和和不不改改变变状状态态的的处处理理确认大小确认大小检查字符串检查字符串清空清空追加追加清空清空追加追加确认大小确认大小检查字符串检查字符串:改变状态的处理:改变状态的处理:不改变状态的处理:不改变状态的处理初期状态字符串登录状态存在的存在的4种问题种问题(之一之一)功能中心的弊病功能中心的弊病 编编 程程-过程语言开发过程语言开发 分析设计分析设计-以功能为中心把握问题以功能为中心把握问题 事事 实:实:“事物的结构事物的结构” 比比 “功能功能”自自然然 分析

8、设计分析设计以以“事物的结构事物的结构”为中心为中心 并非不是最佳方法并非不是最佳方法 而是,用过程语言开发不能实现而是,用过程语言开发不能实现 系统分析系统分析 vs 用户要求用户要求 产生差异产生差异存在的存在的4种问题种问题(之二之二)数据与行为分离的弊病数据与行为分离的弊病 过程性语言:数据的访问没有限制过程性语言:数据的访问没有限制 程序员:可自由的更新和参照程序员:可自由的更新和参照 但要求对数据构造全部理解但要求对数据构造全部理解 缺乏限制数据变更所进行的处理的范围缺乏限制数据变更所进行的处理的范围 通过某一特制函数来访问某一重要数据通过某一特制函数来访问某一重要数据 由于没有制

9、约这种违反原则的手段由于没有制约这种违反原则的手段 现状是规则不彻底现状是规则不彻底 存在的存在的4种问题种问题(之三之三)重复开发的弊病重复开发的弊病 费事:不易于扩展已有处理或数据结构费事:不易于扩展已有处理或数据结构 仅一部分的修改也得全部拷贝再仅一部分的修改也得全部拷贝再 实施修改,这样就重复具有类似实施修改,这样就重复具有类似 程序的处理或数据。程序的处理或数据。 错误难免:因为是复制的,所以原有错错误难免:因为是复制的,所以原有错 误就有可能重复出现误就有可能重复出现 出现修改两处同样的错误的现象(因前出现修改两处同样的错误的现象(因前 后没有逻辑关系)后没有逻辑关系) 存在的存在

10、的4种问题种问题(之四之四)利用顺序靠默契的弊病利用顺序靠默契的弊病 数据和处理是分离的,所以即使是操作同一数据和处理是分离的,所以即使是操作同一数据的处理之间,也没有表示他们有联系的手数据的处理之间,也没有表示他们有联系的手段,也没有表示他们的处理顺序的手段。段,也没有表示他们的处理顺序的手段。 处理的使用者需推测程序的提供者所想象的处理的使用者需推测程序的提供者所想象的利用顺序来利用这些处理利用顺序来利用这些处理为了解决这些问题,出现了面向对象方法为了解决这些问题,出现了面向对象方法利用过去方法未能解决的问题利用过去方法未能解决的问题利用过去方法利用过去方法未能解决的问题未能解决的问题利用

11、面向利用面向对象方法解决对象方法解决(1)重视编程、功能为主)重视编程、功能为主(2)数据与处理的分离)数据与处理的分离(3)类似软件的重复开发)类似软件的重复开发(4)利用顺序以)利用顺序以默契默契为前提为前提(2)封装化)封装化(1)抽象化)抽象化(3)继承)继承(4)状态状态基本概念基本概念(抽象化)(抽象化)抽象化抽象化 功能中心功能中心事物中心事物中心(不仅解决编程而且整个系统开发问题)(不仅解决编程而且整个系统开发问题) OO法:法:数据数据+行为行为 = 一个对象单位一个对象单位 可以记述对象之间消息的传递可以记述对象之间消息的传递 不是将现实原封不动的表示为对不是将现实原封不动

12、的表示为对 象,而是仅着重问题的重要侧面,象,而是仅着重问题的重要侧面, 或者说是强调所注目的问题的侧或者说是强调所注目的问题的侧 面,这就叫抽象化面,这就叫抽象化 对象就具有了表示数据和操作以及处理什么如对象就具有了表示数据和操作以及处理什么如何么处理的手段,何么处理的手段, 抽象化是抽象化是OO的特征之一的特征之一EnlargeRotateIsequalShow面向对象面向对象以以 前前抽象化抽象化数据+行为数据+行为数据+行为现实事物中心现实事物中心抽出重要的侧面(性质)自然的联想联想的转换计算机计算机系统开发系统开发功能中心事物中心基本概念基本概念(抽象化)(抽象化)抽象化的效果抽象化

13、的效果-把握对象容易把握对象容易化化(3个)个)功能中心变成事物中心功能中心变成事物中心着眼于事物的构造着眼于事物的构造仅将重要的侧面模型化仅将重要的侧面模型化对于变更较安定对于变更较安定自然地表示现实自然地表示现实分析的焦点明确化分析的焦点明确化具有相同性质的对象再抽象成具有相同性质的对象再抽象成类(类(Class),将类再抽象将类再抽象成抽象的类,这样就可以掌握事物的构造体系了成抽象的类,这样就可以掌握事物的构造体系了基本概念基本概念(封装)(封装)封装(信息隐蔽)封装(信息隐蔽) 数据与处理的分离数据与处理的分离 数据为中心的处理一体化数据为中心的处理一体化 对象所有的数据从外部是不可视

14、的,仅对象所有的数据从外部是不可视的,仅通过行为才可以对对象数据进行操作。这通过行为才可以对对象数据进行操作。这样的情形比喻成样的情形比喻成“封装封装”或叫或叫“信息隐信息隐蔽蔽”。 见下图示例。见下图示例。以以 前前需要的文件在何处需要的文件在何处放回何处好,用户定放回何处好,用户定需要的文件在何处需要的文件在何处放回何处好,由管放回何处好,由管理人员安排理人员安排面向对象面向对象 用 户(操作) 用 户(操作)文件箱(数据)文件箱(数据)文件箱(数据)文件箱(数据) 管理人员(操作)封装的效果封装的效果 对象的用户与提供者之间的责任分担明确化。对象的用户与提供者之间的责任分担明确化。 对象

15、的用户没有必要知对象的用户没有必要知 用户易用户易 道对象的内部数据构造道对象的内部数据构造 于利用于利用 对象的提供者即使改变对象的提供者即使改变 便于提供便于提供 内部数据构造,对用户内部数据构造,对用户 者修改者修改 也没有影响也没有影响基本概念基本概念(封装)(封装)基本概念基本概念(封装)(封装)封装封装(encapsulation) 是将相关的概念组成一个单元,其后可以通过是将相关的概念组成一个单元,其后可以通过一个名称来引用它。一个名称来引用它。面向对象封面向对象封装(装(object-oriented) 是将表示状态的操作和属性包装成一个对象类是将表示状态的操作和属性包装成一个

16、对象类型,使得对状态的访问或修改只能通过封装提型,使得对状态的访问或修改只能通过封装提供的接口进行。供的接口进行。状态保持:状态保持: 调用后,其状态或值仍保留(见调用后,其状态或值仍保留(见后叙)。后叙)。基本概念基本概念(继承)(继承)继承继承 重复开发重复开发再利用再利用 上一级类在向下一级类传递的同时。还可以上一级类在向下一级类传递的同时。还可以追加上级类中没有的新的性质,引入了追加上级类中没有的新的性质,引入了“继承继承”机制。这样,不仅解决了前后不一致或矛盾的机制。这样,不仅解决了前后不一致或矛盾的现象,而且提供了已有资源的有效的再利用和现象,而且提供了已有资源的有效的再利用和提高

17、开发效率的手段。提高开发效率的手段。基本概念(继承)超类、子类超类、子类 有类C,后发现类D除了一些额外的属性和操作外与类C几乎是一样的,怎么办? (1)简单地复制C的所有属性和操作,然后将其放到D中。(维护麻烦、复制成本增加) (2)继承 让类D向类C“请求使用其操作” 继承(从C到D)是指类D在类C中隐式地定义其每个属性和操作,跟这些属性和操作是在类D中定义一样。C称为D的超类;D称为C的子类。超超 类类子子 类类显示器键盘软驱显示器键盘软驱鼠标喇叭显示器键盘软驱触摸板新定义计算机笔记本电脑台式机 继承部分新定义新定义继承部分基本概念(继承)继承的效果继承的效果 揭示了类似构成元素间的理论

18、关系揭示了类似构成元素间的理论关系部件可以体系化部件可以体系化差异编程差异编程(仅定义与(仅定义与上层概念不同的部分)上层概念不同的部分)已有代码和扩展已有代码和扩展代码的分离代码的分离部件的易修改性部件的易修改性部件的易扩展性部件的易扩展性部件的易检索性部件的易检索性基本概念(状态)状态状态 面向对象方法就是把数据及其对操作处理这些数据的一系列行为定义成对象单位。但是,具体对象中这些行为的可用与否,实际上是由内部的数据的值来决定的。也就是说,通过特定的内部数据值,将对象分成多个不同的“状态”,在每个对象状态里,明确可利用的行为。通过执行行为,可以表现状态的迁移,这样就可以在设计书里明确行为的执行顺序。提供者可以靠“状态”向使用者传递正确的“行为的利用顺序”。(下图所示)面向对象打开关闭读写初始状态关闭打开打开状态读出写入打开读关闭打开关闭读o.k.N.G.有关对象利用的约定函数的利用顺序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论