版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章 面向对象的概念与模型思考题软件开发中为什么要使用面向对象方法?面向对象分析方法与结构化分析方法有哪些相似之处?有何区别?面向对象方法是对过去的一个完全突破,还是“换汤不换药”第1页,共72页。传统方法学的缺点存在的问题:生产率提高的幅度远不能满足需要;软件重用程度很低;软件仍然很难维护;软件往往不能真正满足用户需要。出现上述问题的原因很多,最根本的是瀑布型开发模型和结构化技术的缺点。第2页,共72页。传统方法学的缺点瀑布型模型的缺点:僵化 瀑布模型要求:生命周期各阶段间遵守严格的顺序。实际情况:软件开发往往在反复实践中完成。瀑布模型要求:预先定义并“冻结”软件需求。实际情况:某些系统的
2、需求的一个逐渐明确的过程,且预先定义的需求到软件完成时可能已经过时。第3页,共72页。传统方法学的缺点结构化技术的缺点 :本质上是功能分解,以实现功能的过程为中心,而用户的需求变化主要是针对功能的。这就使基于过程的设计不易被理解;且功能变化往往引起结构变化较大,稳定性不好。系统有明确的边界定义,且系统结构依赖于系统边界的定义,这样的系统不易扩充和修改。结构分析技术对处理的分解过程带有任意性,不同的开发人员开发相同的系统时,可能经过分解而得出不同的软件结构。 数据与操作分开处理,可能造成软构件对具体应用环境的依赖,可重用性(reusability)较差。第4页,共72页。解决问题的途径新的软件开
3、发模型,如快速原型方法、螺旋型方法等;新的软件开发方法学面向对象方法学。第5页,共72页。面向对象方法学OOM特点:尽可能模拟人类习惯的思维方式,即问题域与求解域在结构上尽可能一致。与传统方法相反,OOM以数据或信息为主线,把数据和处理结合构成统一体对象。这时程序不再是一系列工作在数据上的函数集合,而是相互协作又彼此独立的对象的集合。第6页,共72页。OO方法基于的“世界观”: 世界是由对象构成的; 对象有其自己的属性和内部运动规律; 对象之间的相互作用,构成了大千世界的 各式各样的不同系统。 第7页,共72页。面向对象的基本概念对象是现实世界中个体或事物的抽象表示,是面向对象开发模式的基本成
4、份。对象是指将属性(数据/状态)和操作(方法/行为)捆绑为一体的软件结构,代表现实世界对象的一个抽象。属性表示对象的性质,属性值规定了对象所有可能的状态。一般只能通过执行对象的操作来改变。操作描述了对象执行的功能,若通过消息传递,还可以为其它对象使用。第8页,共72页。第9页,共72页。第10页,共72页。类:物以类聚类(class)是一组具有相同属性和相同操作的对象的集合。类的定义包括该类的对象所需要的数据结构(属性的类型和名称)和对象在数据上所执行的操作(方法)。 类定义可以视为一个具有类似特性与共同行为的对象的模板,可用来产生对象。第11页,共72页。实例实例(instance)是从某类
5、创建的对象,它们都可使用类中提供的函数。对象的状态则包含在实例的属性中。 实例化 (instantiation)是指在类定义的基础上构造对象的过程。同一个类的不同对象的差别是通过不同对象的不同属性值的差别来体现的。 第12页,共72页。UML类图Blow: StudentDr. Brown: ProfessorUML对象图第13页,共72页。例: class Post_office private : loc_type location ; emp_type employee ; public : void send (req_type request, money_type payment)
6、; void sell (int goods, money_type payment) ; ; main ( ) Post_office My_PO ; req_type My_request ; money_type My_payment ; My_PO.Send ( My_request, My_payment) ; 第14页,共72页。封装封装encapsulation是指将对象的状态信息(属性)和行为(方法)捆绑为一个逻辑单元,并尽可能隐藏对象的内部细节。封装是面向对象的一个重要原则,它有两个涵义:第一个是把对象的全部属性和全部操作结合在一起,形成一个不可分割的独立对象。第二个是“信息
7、隐藏”,即尽可能隐藏对象的内部细节,对外形成一个边界,只保留有限的对外接口使之与外部发生联系。 封装可以提高事物的独立性,而且还可以有效地避免“交叉感染”和减少“波动效应”。第15页,共72页。继承 :相似性与多样性继承(inheritance):类可分层,下层子类与上层父类有相同特征,称为继承。继承是使用已存在的定义做为基础建立新定义的技术。新类的定义可以是既存类所声明的数据和新类所增加的声明的组合。新类复用既存的定义,而不要求修改继承类。既存类可当做基类来引用,则新类相应地可当做派生类来引用。第16页,共72页。第17页,共72页。使用继承设计一个新类,可以视为描述一个新的对象集,它是既存
8、类所描述对象集的子集合。这个新的子集合可以认为是既存类的一个特殊化。Quadrilateral类是Polygon类的特殊化。Quadrilateral是限制为四条边的多边形。我们还可以进一步地把类Quadrilateral特殊化为Rectangle 。第18页,共72页。类Quadrilateral的操作可以等同于类Polygon的操作,而Rectangle类的操作又与Quadrilateral类的操作相同。新类的操作还可以被看做是既存类操作的一个扩充操作。例如,从一个既存的车辆类派生的四轮驱动车类可能不仅是车辆类子集合定义的特殊化,而且还可能在新类的操作中引入新的能力。第19页,共72页。类
9、的继承层次第20页,共72页。在类的继承层次中,Quadrilateral的实际参数可以替换Polygon的形式参数。类Quadrilateral的操作与类Polygon的操作是相容的Quadrilateral的操作可响应Polygon操作的所有消息。 第21页,共72页。第22页,共72页。继承的好处继承使得导出类变得非常简洁明了,导出类中只包含那些使它们与父类不同的最本质的特性。通过继承,可以重复使用和扩展那些经过测试的没有修改过的代码。最好的方法是从现存的类中导出新的子类。分级分类是人类组织和利用信息的技能。按照这种方法组织规划软件,使得结构简单,易于维护和扩展。第23页,共72页。一旦
10、建立了类的层次结构,并且编写了一个应用程序的代码,改变非叶节点的类将对整个层次结构产生“波动影响”。所以,一旦一个应用程序的非叶节点类的代码编写完成后,就尽量避免向其中增加新的特征。 第24页,共72页。导出类的规则通过添加特性来扩展基本类研究从父类继承的操作子类执行父类的操作的特殊化处理是通过一种称为替换(overriding)的方法实现的。第25页,共72页。第26页,共72页。第27页,共72页。导出类的规则 cont.不能改变特征的语义(目的和含义) 不能替代属性 不能删除特性 第28页,共72页。多重继承 在一个类层次结构种任何给定的类都允许由两个或多个类作为直接父类 ,称为多重继承
11、 。第29页,共72页。消息 :合作之道消息(message):对象间只能通过发送消息进行联系,外界不能处理对象的内部数据,只能通过消息请求它进行处理(如果它提供相应消息的话)。第30页,共72页。消息是一个对象与另一个对象的通信单元,是要求某个对象执行类中定义的某个操作的规格说明。消息包括提供服务的对象标识、服务标识、输入信息、返回信息。发送给一个对象的消息定义了一个方法名和一个参数表(可能是空的),并指定某一个对象。一个对象接收的消息则调用消息中指定的方法,并将形式参数与参数表中相应的值结合起来。Message: = object_ID. method_ID (parameter(s);
12、第31页,共72页。例: class Post_office private : loc_type location ; emp_type employee ; public : void send (req_type request, money_type payment); void sell (int goods, money_type payment) ; ; main ( ) Post_office My_PO ; req_type My_request ; money_type My_payment ; My_PO.Send ( My_request, My_payment) ;
13、第32页,共72页。多态性 polymorphism多态性是指在一般类中定义的属性或操作被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为,使得同一个属性或操作在一般类及其各个特殊类中具有不同的语义。 第33页,共72页。与多态性的实现有关的语言功能有:重载overload在子类中对继承来的属性或操作进行重新定义;动态绑定dynamic binding在运行时根据对象接收的消息动态地确定要链接哪一段操作代码;类属generic操作参数的类型可以是参数化的。 第34页,共72页。重载Student类可以合理地定义不同的print()方法标识:boolean print(); void p
14、rint (String fileName); void print (int detailLevel); void print (int detailLevel, String fileName); void print (String reportTitle, int maxPage);第35页,共72页。关联 association关联:类之间存在的结构关系。 教授指导学生学生选修课程学位计划包括多门课程第36页,共72页。反身关联 反身关联 (reflexive association):在相同类的两个实例之间发生关系。一个课程是很多课程的预修课程,而且一个课程可以有很多的预修课程。
15、第37页,共72页。多元关联 一个学生可以选修一门课程、一个教授讲授一门课程、一个教授指导一个学生。 第38页,共72页。多值性多值性multiplicity是指某个类有多少对象可以和另一个类的单个对象关联。1:1 - 类A的一个实例仅对应着类B的一个实例 1:N - 对于类A的一个实例,有很多类B的实例通过某种关系与其关联。 N:N - 对于类A的一个实例,可能有很多类B的实例与之关联,反之亦然。 第39页,共72页。链接 link链接是对象之间存在的一种结构关系。一个对象是该类加入属性值之后的实例,同样,一个链接是一个实例加入成员对象之后的一个关联。关联是某些类的对象之间的一种潜在关系,链
16、接是那些类的对象之间的一种实际关系。第40页,共72页。链接advisesadvisesadvisesBlow: StudentLee: StudentSmith: StudentDr. Brown: Professor第41页,共72页。聚合聚合aggregation是关联的一种特殊形式,常被认为“包含”、“由组成”关系,即部分类与由它们组成的类之间是一种整体部分(part-whole)关联。聚合表示两个类之间的一种关系。 第42页,共72页。聚合第43页,共72页。面向对象的基本概念对象 (属性与方法)类与实例封装 (信息隐藏)继承(多重继承)消息多态性(重载、动态绑定)关联与链接聚合第4
17、4页,共72页。OOM = Object +Class +Inheritance +Communication with messages面向对象方法学第45页,共72页。传统方法数据与过程是分离的对象把数据和处理数据的方法封状成一个单元数据实体输入过程2过程1过程3输出属于该对象的数据对象处理数据的方法消息消息第46页,共72页。传统方法和面向对象方法的比较传统方法系统是过程的集合过程与数据实体交互过程接受输入并产生输出面向对象方法系统是交互对象的集合对象与人或其它对象交互对象发送与响应消息把问题当作一组相互作用的实体,并确定实体间关系面向功能 ,把系统看成一组功能第47页,共72页。OOM
18、:以object 为核心,强调对现实概念的模拟而不强调算法。“面向对象方法学的基本原则,是按照人们习惯的思维方式建立问题域的模型,开发出尽可能直观、自然地表现求解方法的软件系统”。 Class:由特殊到一般的归纳(induction) Inheritance:由一般到特殊的演绎(deduction) 传统方法:面向过程设计,以计算为核心,数据与操作分离,不易理解。OOM的优点第48页,共72页。OOM:以object模拟实体,需求变化不会引起结构的整体变化,因为实体相对稳定,故系统也相应稳定。 传统方法:结构依赖于功能,不稳定。传统方法:通过建立标准函数库来重用软构件。但标准函数缺少必要的“柔
19、性”,难以适应不同场合的不同需要。OOM:一个class所有的instances都可重用它的代码;由 inheritance派生出的新的class可重用其父类的代码,并且可以修改、扩充而不影响其父类的使用。第49页,共72页。稳定性好:软件功能需求的变化不牵动全局,只需局部修改;Class 独立性强:只要修改不涉及class的对外接口,则内部修改完全不影响外部调用;Inheritance和多态性(polymorphism)使其很容易被修改和扩充;容易理解; 传统方法:可维护性是最令人头痛的问题。 OOM:从以下几方面改善了可维护性 有这一条就什么都好办了! 容易测试、调试。这一点还可商榷第50
20、页,共72页。注:OOM并不是减少了开发时间,而是通过提高可重用性、可维护性,进行扩充和修改的容易程度等,从长远角度改进了软件的质量。OOM与Prototyping结合使用效果好。第51页,共72页。小结“面向对象”是一种认识客观世界的世界观,它将客观世界看成是有许多不同种类的对象构成的,每个对象有自己的内部状态和运动规律,不同对象之间的相互联系、相互作用就构成了完整的客观世界。“面向对象”是从结构组织的角度去模拟客观世界的一种方法,这种方法的基本着眼点是构成客观世界的那些成分对象。用“面向对象”的观点去认识客观世界,用“面向对象”的方法去模拟客观世界,这就构成了“面向对象”的完整含义。第52
21、页,共72页。对象模型化技术把分析时收集的信息构造在三类模型中,即对象模型、动态模型和功能模型。这个模型化的过程是一个迭代过程。通过不断更新、细化,直到切合系统的真正需求为止。6.4 面向对象建模动态模型对象模型功能模型第53页,共72页。6.5 对象模型是三个模型中最关键的一个模型,它的作用是描述系统的静态结构,包括构成系统的类和对象,它们的属性和操作,及它们之间的关系。在OMT中,类与类之间的关系叫做关联。关联代表一组存在于两个或多个对象之间的、具有相同结构和含义的具体连接。关联可以是物理的,也可以是逻辑的。第54页,共72页。类名属性操作类类的实例(类名)属性值类定义示例正方形边长位置边
22、界颜色内部颜色画图擦图移动第55页,共72页。聚合,代表整体与部分的关系,这是一种特殊形式的关联。 菱形框 表示整体侧对象限定,用以对关联的含义做某种约束。角色,用来说明关联的一端。由于多数关联具有两个端点,因而涉及到两个角色。附加的说明对象之间的连接的连接属性。(0个或1个)(0个或多个)1+(1个或多个)12,4(12个或4个)第56页,共72页。第57页,共72页。一般化关联也称为继承性。一般化关系包含基类和几个派生类。基类表示了一个较为一般、普遍的概念每个派生类则是它的某个特殊形态派生类除了自然地继承基类所具有的属性和操作外,还具有反映自身特点的属性和操作。第58页,共72页。第59页
23、,共72页。6.6 动态模型要想对一个系统了解得比较清楚,还应当考察在任何时刻对象及其关系的改变。系统的这些涉及时序和改变状况用动态模型来描述。动态模型着重于系统的控制逻辑。它包括两个图,一是状态图,一是事件追踪图。第60页,共72页。状态图状态图是一个状态和事件的网络,侧重于描述每一类对象的动态行为。在状态图中,状态是对某一时刻中属性特征的概括。而状态迁移表示这一类对象在何时对系统内外发生的哪些事件做出何种响应。第61页,共72页。操作是一个伴随状态迁移的瞬时发生的行为,与触发事件一起表示在有关的状态迁移之上。活动则是发生在某个状态中的行为,往往需要一定的时间来完成,因此与状态名一起出现在有
24、关的状态之中。动态模型由多个状态图组成。对于每一个具有重要动态行为的类都有一个状态图,从而表明所有系统活动的模式。第62页,共72页。事件一个事件发生在某一时刻每个事件都是单独发生的我们建立事件类,并给每个事件一个名字,以指明共同结构和行为。各个状态图并发地执行,并可以独立地改变状态。各种类的状态图可以通过共享事件组合到一个动态模型中。第63页,共72页。事件从一个对象向另一个对象传送信息。有些事件类可能传送的是简单的信号“要发生某件事”,而有些事件类则可能传送的是数据值。由事件传送的数据值叫做属性。 列车出发(线路、班次、城市) 揿下鼠标按钮(按钮、位置) 拿起电话受话器 数字拨号(数字)第64页,共72页。事件追踪图事件追踪图侧重于说明发生于系统执行过程中的一个特定“场景”。场景也叫做脚本,是完成系统某个功能的一个事件序列。场景通常起始于一个系统外部的输入事件,结束于一个系统外部的输出事件,它可以包括发生在这个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业危机管理与应对实战手册
- 设施设备维护计划确认函(4篇)范文
- 2026年老年人常用中药(黄芪)使用方法讲稿
- 2026年反脆弱思维构建企业的韧性与适应力
- 2026年校长教练式领导力推动教师反思与实践
- 自然资源守护有效推进承诺书(5篇)
- 2026年医疗废物处理成本核算与控制
- 2026年血液透析中心患者管理与感染控制年度总结
- 健康医疗设备管理承诺书4篇
- 2026年学生成长记录袋建立与使用指导
- 语文 第18课《井冈翠竹》课件+2024-2025学年统编版语文七年级下册
- 2022起重机械维护保养和检查规范
- 中学教育基础(上)知到课后答案智慧树章节测试答案2025年春陕西师范大学
- 2024年广东省中考数学试卷(含答案解析)
- 【培训课件】DCS基础培训课程(和利时)
- 酒店清洗合同范例
- GB/T 4706.9-2024家用和类似用途电器的安全第9部分:剃须刀、电理发剪及类似器具的特殊要求
- JT-T-1344-2020纯电动汽车维护、检测、诊断技术规范
- 《红色家书》读后感
- 公安机关录用人民警察政治考察表
- 2023年度高校哲学社会科学研究一般项目立项一览表
评论
0/150
提交评论