1 / 128

软件工程 第四章 面向对象技术

软件工程 第四章 面向对象技术. 4.1 面向对象的概念 4.2 Rational 统一开发过程 4.3 UML 统一建模语言. 4.1 面向对象的概念. 客观世界中的应用问题面对的主体都是物理的或概念的 实体 。 从这些实体出发,分析实体的 作用 、 责任 以及它们之间 协作 ,从而找出问题的解,是很自然的。 面向对象技术就是适合用这种方式分析和解决问题的方法。它的基石就是 问题领域中识别出来的各种对象 。依赖这些对象提供的服务和对象之间相互的协同(关系),实现期望的功能。 面向对象技术能够在解决方案中直接模拟问题领域,并与人类的思维习惯相一致。.

Télécharger la présentation

软件工程 第四章 面向对象技术

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 软件工程第四章 面向对象技术 4.1 面向对象的概念 4.2 Rational统一开发过程 4.3 UML统一建模语言 软件工程

  2. 4.1 面向对象的概念 • 客观世界中的应用问题面对的主体都是物理的或概念的实体。 • 从这些实体出发,分析实体的作用、责任以及它们之间协作,从而找出问题的解,是很自然的。 • 面向对象技术就是适合用这种方式分析和解决问题的方法。它的基石就是问题领域中识别出来的各种对象。依赖这些对象提供的服务和对象之间相互的协同(关系),实现期望的功能。 • 面向对象技术能够在解决方案中直接模拟问题领域,并与人类的思维习惯相一致。 软件工程

  3. 什么是面向对象 • Peter Coad 和 Edward Yourdon 提出面向对象方法的概念: 面向对象 = 对象 + 分类 + 继承 + 消息通信 • 采用这四个概念开发的软件系统就是面向对象的软件系统。 • 一个面向对象的程序的每一成份应是对象,计算是通过新的对象的建立和对象之间的通信来执行的。 软件工程

  4. 面向对象范型的特点 • 面向对象系统中的对象是数据抽象与过程抽象的综合体。 • 所谓过程抽象是指当使用某个过程时,无需关心过程内部的实现细节,只要知道如何调用该过程以及该过程完成什么功能即可。 • 所谓数据抽象是指使用结构或记录等方式把某个实体的数据集中起来,使得使用者能够以单元为单位使用数据。 • 面向对象范型在数据抽象中组织过程抽象。 软件工程

  5. 面向对象系统的状态分别保存在各个对象的数据存储中,而不是保存在一些全局变量中。面向对象系统的状态分别保存在各个对象的数据存储中,而不是保存在一些全局变量中。 • 系统解决问题的控制流包含在各个对象中的操作内。并通过消息传递,控制流从一个对象转移到另一个对象。 • 算法被分布到各种实体中。通过执行消息传递和对象中的操作实现算法的功能。 软件工程

  6. 面向对象的特点 • 抽象性:对象包含数据抽象和行为抽象; • 封装性:信息隐蔽(使用与实现分开); • 共享性: • 同一个类中所有对象共享相同的数据结构和行为; • 同一应用中的对象通过继承关系,共享共同的数据结构和行为; • 不同应用中的对象通过复用,共享数据结构和行为。 软件工程

  7. 对象(object) • 对象是系统中描述客观事物的实体,是构成系统的一个基本单元,由一组属性值和一组对属性进行操作的服务组成。 对象 = 对象名+数据(属性)+操作(行为) • 属性值一般只能通过执行对象的操作来改变。 • 操作(方法或服务)描述了对象执行的功能,若通过消息传递,还可以为其他对象使用。 • 对象可以是外部实体、信息结构、事件、角色、组织结构、地点或位置、操作规程等。 软件工程

  8. (56, 10) (20, 20) (23, 30) (60, 35) (46, 37) (50, 45) (10, 50) (50, 60) (35, 60) (35, 85) (50, 85) 计算机窗口中的三个多边形对象 软件工程

  9. quadrilateral1 triangle quadrilateral2 (46, 37) (50, 45) (60, 35) (56, 10) (10, 50) (20, 20) (23, 30) (35, 60) (35, 85) (50, 85) (50, 60) draw move(x, y) contains?(aPoint) draw move(x, y) contains?(aPoint) draw move(x, y) contains?(aPoint) 表示多边形的三个对象 软件工程

  10. 类(class) • 把具有相同属性(数据结构)和服务(操作)的对象归在一起就形成了类。 • 类的定义包括一组数据属性和在数据上的一组合法操作。 • 属于某一个类的各个对象都是该类的实例(instance),它们都可使用类中的操作。 • 类定义了各个实例所共有的数据结构,使用类的构造函数,可以在创建该类的实例时初始化这个实例的状态。 软件工程

  11. quadrilateral quadrilateral2 quadrilateral1 (35, 60) (35, 85) (50, 85) (50, 60) (46, 37) (50, 45) (60, 35) (56, 10) point1 point2 point3 point4 draw move(x, y) contains?(aPoint) draw move(x, y) contains?(aPoint) draw move(x, y) contains?(aPoint) 由两个四边形对象导出一个类 软件工程

  12. 消息(message) • 消息是一个对象向另一个对象传递的信息。有四类消息:发送对象请求接收对象提供服务、发送对象激活接收对象、发送对象询问接收对象、发送对象仅传送信息给接收对象。 • 消息的使用类似于函数调用,消息中指定了某一个实例,一个操作名和一个参数表(可能是空的),如quadrilateral1. move(15, 20)。 • 接收消息的实例执行消息中指定的操作,并将形式参数与参数表中相应的值结合起来。 软件工程

  13. 继承(inheritance) • 如果某几个类之间具有共性的东西 (属性和行为),抽取出来放在一个泛化类中,将各个类的特有的东西放在特化类中分别描述,则可建立起特化类对泛化类的继承。 • 继承是使用已有的类定义做为基础建立新类的定义技术。 • 已有的类可当做泛化类(父类)来引用,则新类相应地可当做特化类(子类)来引用。 软件工程

  14. 建立继承结构的好处: • 易编程、易理解 代码短, 结构清晰 • 易修改 共同部分只要在一处修改即可 • 易增加新类 只须描述不同部分 • 怎样建立一个好的继承层次 • 类可以从父类继承,父类又可以从它的父类继承,形成多层次的继承结构。 • 当增加一个新类时,不一定在最低层,可能需要插在中间层,这样可能需要调整原来的层次结构。 软件工程

  15. 汽车 起重车 载重车 大轿车 救火车 起重车 类 汽车类 • 建立一个新类起重车。它的底盘、发动机、轮胎、驱动装置等都在已有类汽车中。关系如右图所示。新类是已有类的特殊情形。这时直接让起重车类作为汽车类的子类即可。 软件工程

  16. 汽车 车辆 拖拉机 汽车 拖拉机 • 增加一个新类拖拉机。它的底盘、发动机等与汽车不同,但驱动装置、轮胎等与汽车相同。 • 调整继承结构。建立一个新的一般的车辆类,把拖拉机与汽车类的共性放到车辆类中,拖拉机与汽车类都成为车辆类的子类。 • 车辆是抽象类,相关操作到子类汽车找。 软件工程

  17. 六边形 多边形 四边形 三角形 三角形类 多 边 形 类 四边形类 • 另一种情形是在已有类的基础上加入新类,使得新类成为已有类的泛化类。 • 例如,已经存在三角形类,四边形类,想加入一个多边形类,并使之成为三角形和四边形类的泛化类。 软件工程

  18. 多继承 • 前三个情况主要是通过查找(应用领域)类库,找到可以原封不动地继承的类或可以通过调整继承层次结构继承的类。但如果在已有的继承层次中找不到可以继承的已有类,就从新开始完全独立地建立一个类。 • 如果一个类需要用到多个现有类的特征,可以从多个类中继承,称为多继承。 • 例如退休教师是继承退休者和教师这两个类的某些特征或行为而得到的一个新类。 软件工程

  19. 教师 退休教师 退休者 多态性和动态绑定 • 对象互相通信,即一个对象发消息给另一个对象,执行某些行为或又发消息给另外的对象,从而执行系统的功能。 软件工程

  20. 多态性指同名的函数或操作可在不同类型的对象中有各自相应的实现。例如多态性指同名的函数或操作可在不同类型的对象中有各自相应的实现。例如 • 整数“+”:整数加法 • 浮点数“+”:浮点数加法 • 字符串“+”:字符串连接 • 点“+”:两个点的坐标位置分别叠加 • 具有多态的函数或操作在运行时才根据实际的对象类型,执行相应实现程序的连接,此即动态绑定。 软件工程

  21. 例如,想要在屏幕上画一系列多边形,多态性允许发送消息draw,根据消息接收对象的类型不同,画出不同的多边形。例如,想要在屏幕上画一系列多边形,多态性允许发送消息draw,根据消息接收对象的类型不同,画出不同的多边形。 • draw针对的是一系列的类型(类族)而不仅仅是一个类型。 • 多态性的实现有 2 种: • 利用继承关系,把所有数据类型当作一个抽象数据类型的子类型。 软件工程

  22. 利用模板机制,把所有可能的数据类型用一个参数化的数据类型来代替。利用模板机制,把所有可能的数据类型用一个参数化的数据类型来代替。 • 动态绑定保证在程序执行时实施与对象 P 连接的操作。如果 P 是矩形类的实例,则执行与矩形连接的操作,如果 P 是三角形类的实例,则执行与三角形连接的操作。 • 动态绑定把函数调用与目标代码块的连接延迟到运行时进行。这样,只有发送消息时才与接收消息实例的一个操作绑定。 软件工程

  23. 4.2 Rational统一开发过程 • 最佳软件开发实践 为了以一种更好的、迭代的、可预测的方式开发软件产品,总结了软件开发的最佳实践: • 迭代式软件开发; • 需求管理; • 基于构件的软件体系结构; • 建立软件可视化模型; • 不断验证软件质量; • 控制变更。 软件工程

  24. Rational统一开发过程 软件开发过程的作用是: • 成为开发组活动顺序的向导。 • 详细说明需要开发哪些制品,何时开发。 • 指导每一个成员及整个开发组的工作。 • 提供监控和度量项目产品和活动所依据的准则。 • 如果没有一个良好定义的过程,开发组将各行其是,开发成功与否完全依赖个别优秀的人才,这不是能够长久的。 软件工程

  25. Rational统一开发过程(RUP, Rational Unify Process)描述了如何在软件开发组织中严格分配任务和职责的方法。 • RUP 是一个过程产品,"软件过程也是软件。" • RUP 采用二维的过程结构: • 横轴表明过程的生存周期,它反映了过程被激活时的动态情况,用周期、阶段、迭代和里程碑表示。 • 纵轴表明过程的静态状况,通过过程构件、活动、工作流、制品和工作人员描述过程。 软件工程

  26. 阶 段 移交 初始 细化 构造 工作流 业务建模 需求 沿内容轴的组织 分析与设计 实现 测试 实施 配置和变更管理 项目管理 环境 构造#1 细化#2 初始化 细化#1 移交#2 构造#3 移交#1 构造#2 迭代 沿时间轴的组织结构 软件工程

  27. 过程的静态描述:过程模型 过程模型中的主要模型元素有 4 种: • 工作人员:谁做(Who) • 活动:怎么做(How) • 制品:做什么(what) • 工作流:何时做(when) • 过程的中心概念是工作人员,工作人员不是指某一个人,而是指完成工作的角色。工作人员定义人们应履行的行为和职责。 软件工程

  28. 活动定义了工作人员所执行的工作。有 3 类步骤: • 思考步骤 • 执行步骤 • 评审步骤 • 制品是过程生产、修改或使用的一些信息。RUP 的制品分为 5 个信息集。 • 管理集:计划制品、操作制品 • 需求集:构想文档、项目相关人员需求、用例模型和业务模型 软件工程

  29. 设计集:设计模型、软件体系结构描述、测试模型设计集:设计模型、软件体系结构描述、测试模型 • 实现集:源代码和可执行程序、相关数据结构和数据文档 • 实施集:安装资料、用户文档、培训材料 • 工作流用来描述生成结果的活动序列,用以描述工作人员之间的交互。在 RUP 中共有 9 个核心过程工作流,包括 6 个核心工程工作流和 3 个核心支持工作流。 软件工程

  30. 业务建模工作流:描述业务过程的本质和执行情形。业务建模工作流:描述业务过程的本质和执行情形。 • 需求工作流:定义系统构想,使用用例模型和补充规格说明定义系统软件需求,管理系统范围和需求变更。 • 分析和设计工作流:研究实现环境和系统构件的效用,定义软件的组织结构,把需求获取结果转化为实现规格。 • 实现工作流: 建立代码的分层结构,实现类和对象,进行单元测试和系统集成。 软件工程

  31. 测试工作流:根据事先定义的度量和准则检查产品,确认产品是否满足或者超出事先定义并被一致接受的需求。测试工作流:根据事先定义的度量和准则检查产品,确认产品是否满足或者超出事先定义并被一致接受的需求。 • 实施工作流:在实际使用环境中测试软件、包装要交付的软件、发布软件产品、培训最终用户及销售人员。 • 核心支持工作流有 • 项目管理工作流 • 配置和变更管理工作流 • 环境工作流 软件工程

  32. 初始 细化 构造 移交 时间 生存周期 构架里程碑 生存周期 目标里程碑 最初运行 能力里程碑 产品发布 里程碑 • 过程的动态描述:迭代开发 • 将一个大项目分解为可连续应用瀑布模型的几个小部分。在对一部分进行分析、设计、实现并确认后,再对下一部分进行分析、设计、实现和确认。以此进行下去,直到整个项目完成。在 RUP 中,迭代过程分为几个阶段。 软件工程

  33. 初始阶段:确定最终产品的构想及其用例,定义项目范围。初始阶段:确定最终产品的构想及其用例,定义项目范围。 • 细化阶段:计划需完成活动和资源,详细说明产品特性并设计软件体系结构。 • 构造阶段:构造整个产品,逐步完善软件体系结构和计划,直到产品(完整的构想)已完全准备好交付给用户。 • 移交阶段:移交产品给用户,包括制造,交付,培训,支持及维护产品。 软件工程

  34. V1 I E C T 初始开发周期 V2 I E C T 进化周期 V3 I E C T • 这 4 个阶段构成开发周期,周期结束时产生一代新的软件产品。 • 软件产品产生于初始开发周期,随着重复执行同样的过程,软件发展到下一代产品,这一时期即为软件的进化周期。 软件工程

  35. Actor use case • Rational统一过程的特点: • 用例驱动的、以体系结构(架构)为中心的、迭代和增量的过程。 • 用例建模技术可以用为大多数项目相关人员理解的形式来表述问题。 • 参与者(Actor) • 用例(Use Case) • 场景(scenario) • 事件流(event flow) 软件工程

  36. 转账 检察账户余额 提款 储户 • 用例和参与者的事例 银行储户通过自动取款机(自动柜员机)提款,转账或检查账户余额。用一组用例表达如下: 软件工程

  37. 用例模型 • 将整个系统或子系统的所有用例,以及与之交互的参与者集合起来构成系统的用例模型。 • 用例模型给出系统预期功能模型和系统上下文环境模型,它成为开发人员和用户之间的契约。 • 用例模型的目的是确保系统能处理所有的功能性需求。 软件工程

  38. 用例驱动的过程 • “用例驱动” 指开发过程是基于用例,从一个工作流向下一个工作流,逐步前进的。 • 开发初期,人们使用用例获取用户需求,建立用例模型,描述系统的全部功能。 • 基于用例模型,人们创建一系列实现这些用例的分析模型、设计模型和实现模型。 • 测试人员测试实现确保系统正确实现了用例。 软件工程

  39. 以体系结构为中心的过程 • 用例的选择不是孤立的,它与软件的体系结构是密切相关的。 • 软件体系结构的作用与一个建筑的体系结构类似。对于一个建筑,可以从框架结构、供热、上下水、供电、天然气、其他服务管线等不同角度来考察它。使得施工人员在施工前就能全面了解这个建筑。 • 软件的体系结构也从不同角度描述了即将构造的系统,包括系统的静态特征和动态特征。 软件工程

  40. 每一种产品都有功能和表现形式两个方面。用例就是功能,体系结构就是表现形式。每一种产品都有功能和表现形式两个方面。用例就是功能,体系结构就是表现形式。 • 在开发过程中,必须兼顾功能和表现形式,做出适当权衡,才能得到好的产品。因此,用例和体系结构必须在迭代中并行演进。 • 为了找到可以演进的体系结构,设计师必须从全面了解系统的主要功能(即主要用例)入手。 软件工程

  41. 4.3 统一建模语言UML • UML 是Unified Modeling Language的缩写。 它是一种标准的语言,以直观的表述、定义、构造和文档化软件为主的系统的工作制品。 • UML聚集了来自下列建模的精髓: • 数据建模(实体关系图ERD) • 业务建模 (工作流) • 对象建模 • 构件建模 • 它可用于软件生命周期各个过程,并适用于各种不同的实现技术。 软件工程

  42. UML的特点 • 统一标准 • 融合了当前一些流行的面向对象开发方法的主要概念和技术,成为一种面向对象的标准化的统一建模语言。 • 提供了标准的面向对象的模型元素的定义和表示法,有标准的语言工具可用。 • 已成为工业标准化组织OMG的正式标准。 • 面向对象 • 支持面向对象的主要概念,提供了一批基本的模型元素的表示图形和方法。 软件工程

  43. 可视化,表示能力强大 • 一种图形化语言,系统的逻辑模型和实现模型都能用UML的模型图形清晰地表示。 • 可以处理与软件的说明和文档有关的问题。 • 提供了语言的扩展机制,用户可以根据需要增加定义自己的衍型(StereoType)、标记值和约束等。 • 可用于各种复杂类型的软件系统的建模。 • 独立于过程 • 系统建模语言,独立于开发过程。 软件工程

  44. 容易掌握使用 • 概念明确,建模表示法简洁明了,图形结构清晰,容易掌握使用。 • 着重学习三个方面的主要内容: (1) UML的基本模型元素 (2) 组织模型元素的规则 (3) UML语言的公共机制 • 与程序设计语言的关系 • 用Java,C++ 等编程语言可实现一个系统。 • 一些CASE工具可以根据 UML所建立的系统模型来产生Java、C++ 等代码框架。 软件工程

  45. UML的定义 • UML定义有两个组成部分:语义和表示法。 • 语义用自然语言描述,表示法定义了UML的可视化标准表示符号,这决定了UML是一种可视化的建模语言。 • 在语义上,模型是元模型的实例。UML定义给出了语法结构的精确定义。 • 使用UML时,要从不同的角度观察系统,为此定义了概念“视图”。视图是对系统的模型在某方面的投影,注重于系统的某个方面。 软件工程

  46. UML的构成 • UML的三个主要组成元素 • 基本构造块(basic building blocks ) • 组织构造块的规则(rules) • 运用于整个UML的公共机制 (common mechanisms) • UML包括三种基本构造块: • 事物(things) • 关系(relationships) • 图(diagrams) 软件工程

  47. 类名 类名 Window 属性 属性 origin size 操作 操作 open( ) close( ) move( ) display( ) ISpelling UML 事物 —结构事物 • Class(类) • Interface(接口) • 描述了一个类或构件的服务(操作)集。 软件工程

  48. 实现 实现 Place Order 协作 协作 用例 Order Management • Collaboration(协作) • 合作完成某个特定任务的一组类及其关联的集合,用于对用例的实现建模。 • Use Case(用例) • 表示系统想要实现的行为,不关心这些行为是怎样实现的。 用例 软件工程

  49. EventManager suspend() flush() Orderform .java • Active Class(主动类) • 与一般类相同,但它至少拥有一个进程或线程,故能够启动控制活动。 • Component(构件) • 系统中物理的、可替 代的部件。 软件工程

  50. 数据库 服务器 应用 服务器 课程 管理 成绩 管理 • Node(节点) • 系统在运行时存在的物理元素。 软件工程

More Related