




已阅读5页,还剩86页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章 面向对象技术与 UML l2.1 面向对象技术概述 l2.2 面向对象的分析 l2.3 面向对象的设计 l2.4 基于UML的面向对象分析、设计过 程 软件开发的难点 l结构化软件开发方法的主要思想: 对问题进行功能分解,如果分解后得到的功能过大,那 么再对这些功能进行分解,直到最后分解得到的功能能比 较方便地处理和理解为止。(功能分解法 ) 在结构化方法中,现实世界被映射为功能(函数)的集合。 结构化方法的特点: 结构化程序设计:程序 = 算法 + 数据结构 从算法的角度进行建模,大量精力都集中在控制流程 和算法的分解上(功能分解)。 缺点:需求变动、维护困难 2.1 面向对象技术概述 l面向对象 方法的引 入:软件 复杂性的 增长, 使 软件开发 越来越困 难。 l面向对象 的方法按 照人类的 自然思维 的方式, 面对客观 世界建立 软件模型 。 l软件现实业务映射到计算机 l面向对象软件开发方法的主要思想: 安照人类的自然思维的方式,对客观世界建立软件模型。 l客观实体和实体之间的联系构成了现实世界的所有问题。 l面向对象技术将现实世界中的实体及相互关系映射为对象 及对象间的关系,实体间的相互作用被映射为对象间的消 息发送等。 面向对象方法的主要优点 l把易变的数据结构和部分功能封装在对象内并加以隐藏 保证了对象行为的可靠性 对其修改并不会影响其它对象,有利于维护,对需求变 化有较强的适应性 l封装性和继承性有利于复用对象 把对象的属性和操作捆绑在一起,提高了对象(作为模 块)的内聚性,减少了与其它对象的耦合,为复用对象提 供了可能性和方便性 在继承结构中,特殊类对一般类的继承,本身就是对一 般类的属性和操作的复用 什么叫问题域? l开发一个软件是为了解决某些问题,这些问 题所涉及的业务范围称为该软件的问题域。 l不同问题域中同一事务描述的角度就不相同 。 l问题域的范围也对软件开发的复杂程度有一 定的影响。 2.1.1 面向对象的基本概念 lCoad和Yourdon: 面向对象=对象+类+继承+通信 面向对象技术基于对象概念,以对象为中心 ,以类和继承为构造机制,充分利用接口和 多态提供灵活性,来认识、理解、刻划客观 世界和设计、构建相应的软件系统。 2.1.1 面向对象的基本概念 l面向对象技术的基本观点: 客观世界由对象组成,任何客观实体都是对 象,复杂对象可以由简单对象组成。 具有相同数据和操作的对象可归纳成类,对 象是类的一个实例。 类可以派生出子类,子类除了继承父类的全 部特性外还可以有自己的特性。 对象之间的联系通过消息传递来维系。 2.1.1 面向对象的基本概念 l面向对象的核心元素: 对象 类 抽象 封装 继承 多态性 消息 结构与连接 1. 对象 l客观世界里的任何实体都可以被称为对象。 l对象可以是具体的、有形的物,也可以是无形的事物或概 念。 l对象是问题域或实现域中某些事物的一个抽象。不同的角 度和不同的问题域对一个对象的描述有所不同。 l对象是一个封装数据属性和操作行为的实体。 l系统中的对象在软件生命周期的各个阶段可能有不同的表 示形式。例如:分析设计阶段和编码阶段不同。 对象的标识(名字) l每一个对象都有一个唯一的标识, 即使其状态有 可能与其它对象一样。 no1 no2 no3 对象的状态(数据属性) l一个对象的状态是它反映于现实世界的一系 列属性: l基本描述 载客人数 飞机类型 l它与其它对象的关系 飞机驾驶员 所属的航空公司 l任一时刻的历史状态 可能的状态: 停泊 飞行 着陆 班机 747 对象的行为(操作行为) l定义当其它对象发出请求时,该对象如何反应 l由对象定义的一系列操作决定 班机 747 核对出发时间 (返回 9:27) 机票代理 动作: 起飞 着落 UML中的对象表示 注意:对象名下有下划线 1.1. 命名对象命名对象 2. 2. 匿名对象匿名对象 对象名对象名 对象名:类名对象名:类名 :类名:类名 2. 类 l类是一组具有相同数据结构和相同操作的对 象的集合,类是对象的抽象,它为属于该类 的对象提供了统一的抽象描述。 在下面这副图中您看到了什么类? 属性 l属性是类的特征或特性 l属性的值是某一特定对象的属性值 l在类中属性名必须是唯一的 l同类的对象具有相同的属性,但属性值会有所不 同。 银行帐户类属性 帐号 银行名称 拥有者 金额 Mary的银行帐户属性值 12345678 First National Bank Mary Smith $1024.48 UML对象的绘制 注意:对象名下有下 划线 属性取决于视点 l 从销售人员的角度 l 型号 l 价格 l 颜色 l 里程数 一辆汽车具有的属性: l 从维修人员的角度 l 马达类型 l 传动类型 l 维修记录 操作 l对象的行为是由为此对象定义的一系列操作 决定的。 l操作访问或修改对象的属性值。 l一个类可能同时存在多个实例,也可能在某 一时刻没有实例。 l一个类的所有实例都可以使用在这个类中定 义的操作。 l 从销售人员的角度 l处理客户定单 l准备销售合同 l加入清单 l从清单中删除 一辆汽车具有的操作: l 从维修人员的角度 l测试刹车 l修理刹车 l转动轮胎 l检查马达速度 操作取决于视点 类和对象 对象对象实体实体 类类抽象数据类型抽象数据类型 计算机世界计算机世界 实实 例例 化化 抽抽 象象 映映 射射 映映 射射 现实世界现实世界 类是生成对象的模板 l类是生成对象的模板 l类的定义中包含有产生和删除对象的操作。 (构造函数和析构函数) l一个类定义了使用哪种数据表示法来描述属性 l每一个实例都采用有属性值的数据表示法。 l一个类通过一系列操作来定义行为 l这种操作能在每个实例中激活。 类和对象的关系 l每一个对象都是某一个类的实例。 l每一个类在某一时刻都有零个或更多的实体 。 l类是静态的;它们的存在、语义和关系在执 行前就已经定义好了。 l对象是动态的; 它们在程序执行时可以被创 建和删除。 3.抽象 l抽象是从众多的事物中抽取出共同的、本质性 的特征 。 l抽取对问题域有帮助的对象属性和行为。 l l 问题域不同,抽象结果也不同。问题域不同,抽象结果也不同。 Sample-Object and Class 现实世界中的学生对象和对Student类的建模 Bob John KateBeverly Student 属性 方法 一些Student对象 Student类 抽象为 一个项目的抽象依赖于定义抽象的问题域一个项目的抽象依赖于定义抽象的问题域 问题域不同,抽象程度也不同问题域不同,抽象程度也不同 4. 封装 (encapsulation) l封装是面向对象方法的一个重要原则。 l封装有两个含义: 结合性(数据抽象):把对象的属性和方法结合起 来,形成一个不可分割的单位。 信息隐蔽性:尽可能隐藏对象的内部细节,对象的 私有数据不能被外界存取,对外使用接口与外部发 生联系。 例如:电视机 为什么要封装 结构化程序设计:程序 = 算法 + 数据结构 全局数据全局数据 算法 算法 算法 算法 一个大问题:如何保证数据的 一致性和安全性? 面向对象程序设计:程序 = 对象s + 消息 对象1算法 + 数据结构 . 对象n 算法 + 数据结构 封装 信息隐藏的过程 有选择的数据隐藏 防止意外的数据破坏,保证数据的一致性和安全性 更易于隔离和修复错误 封装的目的 l将对象的使用者和对象的设计者分开,使用者不必知道 行为实现的细节,只需用设计者提供的消息来访问该对 象。 l把定义和实现分开,可以大大提高软件的可维护性、可 修改性。 在类的外部不能访问 在类的外部可以访问 私有 公有 类 可见性问题 lVisibility可见性 l层次 lpublic: + lprotected: # lprivate: - lfriend 友元 UML 类图 ROSE画 出的类图 5. 继承 l继承性是面向对象程序设计语言不同于其他语 言的最主要特点。 l继承是指子类可以自动拥有父类的全部属性与 操作的机制。 l父类(基类) l子类(派生类) 动物 l继承性表示类之间的层次关系。 l类间具有共享特征 l类间具有差别或新增部分 l类间具有层次关系 继承关系是“is a ”或“kind of”的关系。 继承的好处 l通过继承可实现代码复用,可降低软件开发 和维护的费用,继承是OO技术和非OO技术 的一个很明显的区别。 l继承的另一个好处是可以保证类之间的一致 性,父类可以为所有的子类定制规则,子类 必须去遵守这些规则。如C+中的虚函数, Java中的接口。 继承的描述 子类可以继承父类的全部属性与操作 ,并可以添加或重新定义所继承的方 法。 如果是重新定义,称为覆盖。 注意:覆盖和重载是不同的。 l覆盖的例子 public class A String name; public String getValues() return “Name is”+name; public class B extends A String address; public String getValues() return “address is”+address; l重载的例子 public class A String name; public String getValues() return “Name is”+name; public class B extends A String address; public String getValues(String name) return “address is”+address; l继承性又分为单重继承和多重继承两类。 单重继承:子类只有一个父类 多重继承:有多个父类的继承 思考一下? lC+是否支持多继承? lJAVA是否支持多继承? l 继承是否具有传递性? 6. 多态性 l定义:同一操作作用于不同的对象,可以有 不同的解释,产生不同的执行结果。 l例子: 动物叫 l多态性是指在父类中定义的属性和操作被子类 继承后,可以表现出不同的行为。 l在父类与子类的类层次结构中,利用多态性可 以使不同层次的类之间共享一个方法名,而个 自有不同的操作。当一个对象接收到一个请求 消息时,所采取的操作将根据该对象所属的类 决定。 l多态性分为两种: 1.编译时的多态性。通过重载和对象调用实现 。 (静态绑定) 2.运行时的多态性。通过指向基类的指针实现 ,并且需要虚函数。 (动态绑定) 接口(Interface)的概念 l接口是一组没有相应方法实现的操作,非常类 似于仅包含抽象方法的抽象类。 l接口是对对象行为的描述,但是并不给出对象 的实现和状态。(通俗的说,接口只是说明函 数应该做什么(what),但没有定义函数如何 做(how)。) l接口只包含操作而不包含属性,并且接口也没 有对外界可见的关联。 l一个类可以实现多个接口。使用接口比使用 抽象类要安全得多,因为它可以避免许多与 多重继承相关的问题。 这也是为什么像Java和C#等新型编程语言允 许类实现多个接口,但只能继承一个通用或 抽象类。 1. 通过接口实现多态性 接口描述类需要实现实现的操作以及每个操 作需要接收和返回的参数类型,但将操作的特 定实现留给实现接口的类去完成。 多个类可以实现相同的接口。 单个类可以实现一个或多个接口。 实现某接口的类都有此接口定义操作的不同实 现方式。 多态性的实现方式: 2.通过继承实现多态性: 多个类可以从单个基类继承,子类不仅接收基 类的所有方法,还可以重写基类的操作以提供 不同的实现。 3通过抽象类实现的多态性 抽象类同时提供了继承和接口的元素。抽象 类本身不能实例化,必须被继承。抽象类的部 分或全部成员可能未实现,该实现由继承类提 供。已实现的成员仍可被重写,并且继承类可 以实现附加接口或其它功能。 7. 消息 message l消息是向对象发出的服务请求。 l一个消息包含消息名、接受对象的标志、服务(方 法)标志、输入信息、回答信息等。 l消息传递机制。 注意:消息和函数存在区别 消息可以包括同步消息和异步消息。如果消息是异 步的,则一个对象发送消息后,就继续自己的活动 ,不用等待消息接收者返回控制,而函数调用往往 是同步的,消息发送者要等待接收者返回。 l一个对象能够接收多个形式、内容不同的消 息 l相同形式的消息可以发送给不同的对象 l不同的对象对于形式形同的消息可以有不同 的解释,做出不同的反应。 面向对象例子 l面向对象(Object Oriented,简称OO)方法将世界看 作一个个相互独立的对象,相互之间并无因果关系。只 有在某个外部力量的驱动下,对象之间才会依据某种规 律相互传递信息。 如果一次成型一辆 汽车太过困难,我 们可以将汽车分解 为很多零件,分步 制造,再依据预先 设计好的接口把它 们安装起来,形成 最终的产品。 1. 当对象们被按规则组合起来以后,就能表达预期 的功能。其实世界就是这样组成的。平时看上去 每个对象都互无关系,然而当它们按图示规则组 织起来之后,踩下刹车,汽车便乖乖停住了。 2.每个对象都只与有限的其他对象有关系。每个对 象不再需要从整个系统的角度 来分析,需要关 心的只是与它有关系的那几个对象。 这使得我们在分析对象的时候需要考虑的信息量 大大减少,减化了我们所面对的复杂程度。 3.只要符合规则要求,这些标准零件就可以替 换!这给我们带来了极大的灵活性和扩展能 力。 4.抽象层次。站在汽车的抽象层次,我们会发现汽 车是由变速器、发动机、底盘等部件组成的; 站在发动机的抽象层次,我们会现发动机是由 汽缸、活塞等零件组成的;而站在活塞的抽象 层次,我们还会发现活塞是由拉杆、曲轴等更 小的零件组成的 l抽象层次的好处是不论在哪一个层次上,我们 都只需要面对有限的复杂度和有限的对象结构 ,从而可以专心地了解这个层次上的对象是如 何工作的;抽象层次的另一个更重要的好处是 低层次的零件更换不会影响高层次的功能,设 想一下更换了发动机的火花塞以后,汽车并不 会因此而不能驾驶。 8. 结构与连接 l 问题域中对象关系之间的描述:对象的分类关 系、对象之间的组成关系,对象属性之间的静 态关系,对象行为之间的动态关系。 l面向对象方法用以下四种方法描述对象之间的 关系。 一般/特殊结构 整体/部分结构 实例连接 消息连接 1.一般/特殊结构 l一般/特殊结构又称做分类结构,是一组由一般/ 特殊关系的类所组成的结构。 单继承 树形结构 多继承 网络结构 2.整体/部分结构 整体/部分结构又称为组装(成)结构,描述对 象之间的组成关系。 3.实例连接 l反映对象和对象间的静态关系。 可通过对象 的属性表达 出来。 Class Driver /. . . ; Class Car Driver d; /. . . ; 4.消息连接 l描述对象之间的动态联系。 l 一个对象需要另一个对象对它提供服务。 l消息连接是有向。连接从消息发送者指向消息 接收者。 可通过对象 之间发送消 息。 实例:“东北一家人?” l东北人都是活雷锋 l人、东北人、雷锋 l老张开车去东北 撞啦! l老张、汽车、开车 l撞啦 class Region class 人 Region 籍贯; interface 雷锋 helpPeople() class 东北人 extends 人 implements 雷锋 籍贯 = 东北; helpPeople() class Car DriveTo(Region) throws Exception (撞车) 人 Driver; main() 人 老张; Car 夏利; 夏利.Driver = 老张; try 夏利.DriveTo(东北); catch (Exception) 2.1.2 面向对象的开发语言 l1. 面向对象的建模语言 l2. 面向对象的程序设计语言 1. 面向对象的建模语言 Unified Modeling Unified Modeling LanguageLanguage( (UML)UML)(统一建模语(统一建模语 言)是对象管理组织言)是对象管理组织(OMGOMG) 制定的一个制定的一个通用通用的、的、可视化可视化的 建模语言建模语言标准,可以用来标准,可以用来可视可视 化化(visualizevisualize) 、描述描述( specifyspecify)、)、构造构造(constructconstruct )和)和文档化文档化(documentdocument)软件)软件 密集型系统的各种工件(密集型系统的各种工件( artifactsartifacts,又译制品),又译制品) 。 UML-Unified Modeling Language UML-Unified Modeling Language 语义 语法 UML诞生 公 众 反 馈 OOPSLA95 Unified Method 0.8 工业 化 标准 化 统一 化 分散 的 各部 分 Booch93 OMT-2 1996.6和1996.10 UML 0.9&0.91 1997.9公布 UML 1.1 1997.1公布 UML 1.0合作伙伴 意见 1997.11.171997.11.17 UML 1.1UML 1.1被被OMG OMG 接纳为标准接纳为标准 Booch91 OMT-1 其他方法 OOSE OMG (Object Management Group ) 对象管理组织 UML的发展过程 UML发展现状 l目前通用的是UML 1.x版 l主要UML 1.3、UML 1.4 l2003年3月正式发布UML 1.5 lUML 2.0 l2003年6月OMG采纳了UML 2.0的 Superstructure的提案 l正处于发展阶段 UML的应用领域 l信息系统: 与数据库有关的系统 l技术系统:处理和控制技术设备 l嵌入式系统:控制像移动电话这样的设备以 及家用设备 l分布式系统:分布式系统(distributed system)是建立在网络之上的软件系统。 基于web的分布式应用(client-sever结构) l系统软件:操作系统和编写系统实用程序 l业务系统:与工作流有关的系统 UML语言的特点 l不是一种可视化的程序设计语言,而是一 种可视化的建模语言。 l 是一种建模语言规格说明,是面向对象分 析与设计的一种标准表示。 l 不是过程,也不是方法,但允许任何一种 过程和方法使用它。(RUP:Rational Unified Process ) l 简单并且可扩展,具有扩展和专有化机制 ,便于扩展,无需对核心概念进行修改。 lUML独立于实现技术(如开发语言),在 软件开发各个环节都可能用到。 l 为面向对象的设计与开发中涌现出的高级 概念(如协作、框架、模式和组件)提供 支持,强调在软件开发中,对架构、框架 、模式和组件的重用。 UML 与 RUP lUML并不是一个方法,而只是一种语言。UML定义了 基本元素,定义了语法,但是如果要做一个软件项目 ,还需要有方法的指导。 lRUP(Rational Unified Process)统一过程。统一 过程归纳和整理了很多在实践中总结出来的软件工程 的最佳实践,是一个采用了面向对象思想,使用UML 作为软件分析设计语言,并且结合了项目管理、质量 保证等许多软件工程知识综合而成的一个非常完整和 庞大的软件方法。 lRUP定义了软件开发过程中最重要的阶段和工作(四 个阶段和九个核心工作流),定义了参与软件开发过 程的各种角色和他们的职责,还定义了软件生产过程 中产生的工件(见注),并提供了模板。最后,采用 演进式软件生命周期(迭代)将工作、角色和成果物 串在一起,形成了统一过程。 74 UML主要作用 使用可视化建模来获取并表现商业逻辑和对象 使用可视化建模来分析和设计计算机应用程序 UML是客户、系统分析员和程序员之间的“桥梁” ,用图形的方式展现系统,建立模型是为了更好 地理解我们开发的系统,便于交流。 用例图 类图 对象图 活动图 状态图 时序图 组件图 部署图 75 UML主要作用 UML从客户的角度将复杂的系统整理清楚。(用 例图分析需求和测试) 76 UML主要作用 开发人员可以从不同角度整体上理解 我们要开发的系统 UML主要作用 文档化我们所作出的决定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电网侧独立储能示范项目数字化方案(参考模板)
- 2025年可生物降解有机垃圾厌氧发酵装置项目合作计划书
- 2025年不孕不育医院项目建议书
- 2025年血液灌流吸附器项目合作计划书
- 我国基本法宪法知识竞赛题库及答案277题
- 文化遗产保护的数字化策略
- 2025年重氮化合物项目发展计划
- 保险行业数字化理赔服务在自然灾害应对中的实战分析报告
- 2025年教育信息化基础设施建设中网络安全问题研究报告
- 2025年远程医疗服务在分级诊疗中的远程医疗人才培养报告
- 中国服饰演变史课件
- 100以内加减乘除能力提升专项练习1000题(可打印)
- 牛屠宰检疫培训
- 2025标准版的还建房买卖合同
- 有限空间监理实施细则
- s7-1200plc编程及应用第三版-廖常初-课后习题答案
- 晶体植入术的术后护理
- 劳动通论学习通超星期末考试答案章节答案2024年
- ISO56002-2019创新管理体系管理手册及程序文件
- 新教材北师大版必修第一册unit1 life choices单词短语句型写作知识点提炼
- 贵州省贵阳市2023-2024学年七年级下学期期末考试生物试题(无答案)
评论
0/150
提交评论