1 / 55

软件工程

软件工程. 第九章 面向对象方法学引论. 第九章 面向对象方法学引论. 9 . 1 面向对象方法学概述 9 . 2 面向对象概念 9 . 3 面向对象建模 9 . 4 对象模型 9 . 5 动态模型 9 . 6 功能模型 9 . 7 三种模型之间的关系. 学习重点和难点. 理解面向对象技术中的基本思想、概念和原理等;理解面向对象建立的三种模型的功能和相互关系。. 9 . 1 面向对象方法学概述. 软件工程发展的两个重要阶段 传统软件工程 面向对象软件的工程. 传统软件工程. 以 面向过程的结构化程序设计 为基础;

Download Presentation

软件工程

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. 软件工程 第九章 面向对象方法学引论

  2. 第九章 面向对象方法学引论 • 9 . 1 面向对象方法学概述 • 9 . 2 面向对象概念 • 9 . 3 面向对象建模 • 9 . 4 对象模型 • 9 . 5 动态模型 • 9 . 6 功能模型 • 9 . 7 三种模型之间的关系

  3. 学习重点和难点 • 理解面向对象技术中的基本思想、概念和原理等;理解面向对象建立的三种模型的功能和相互关系。

  4. 9 . 1 面向对象方法学概述 • 软件工程发展的两个重要阶段 • 传统软件工程 • 面向对象软件的工程

  5. 传统软件工程 • 以面向过程的结构化程序设计为基础; • 遵循“程序=数据结构+算法”的思路; • 由“追求技巧与效率”到“清晰第一,效率第二” • 缺点: • 不太适应规模大、特别复杂的项目; • 难以解决软件重用的问题; • 难以适应需求的变化; • 难以彻底解决维护问题。

  6. 面向对象软件工程 • 按人类习惯的思维方法,以现实世界中客观存在的事物(即对象)为中心来思考和认识问题。 • 采用的思想方法与原则:抽象、分类、继承、聚合、封装等。 • 以易于理解的方式表达软件系统,建立问题域模型,使设计出的软件尽可能直接地描述现实世界,具有更好的可维护性

  7. 软件工程学家Codd 和Yourdon认为: • 面向对象=对象+类+继承+通信 • 如果一个软件系统采用这些概念来建立模型并予以实现,那么它就是面向对象的。

  8. 面向对象技术发展概述 • 初始阶段:上世纪 60 年代,挪威奥斯陆大学和挪威计算中心开发的 Simula67 的语言; • 70 年代中期, Xerox 研究中心开发的 Smallta Ik 语言,具备了面向对象语言的各种特征。 • 发展阶段:涌现大批面向对象编程语言(OOPL )。如 C ++、 objective-C 、 ob j ect Pascal 、 Eiffel 、 Actor 等。 • 成熟阶段:面向对象分析(OOA )和面向对象设计( OOD )的研究。出现各种著名的面向对象分析设计的方法,如: Coad/ Yourdon 的方法、 Booch 的方法、 OMT方法、 wirtf-Brock 的 RDD 方法、 Jacobson 的 OOSE 方法 … … 等。

  9. 面向对象技术的基本观点 • ① 任何客观的事物或实体都是对象。对象组成客观世界,复杂的对象可以由简单的对象组成。 • ② 具有相同数据和操作的对象可以归并为一个类(class ) ,对象是对象类的一个实例。 • ③ 类可以派生出子类,子类继承父类的全部特性(数据和操作),又可以有自己的新特性。子类与父类形成类的层次结构。 • ④ 对象之间通过消息传递相互联系。

  10. 面向对象方法学的优点 • 详见教材 P205 一 P208 页 • 1 、与人类习惯的思维方法一致 • 2 、稳定性好 • 3 、可重用性好 • 4 、较易开发大型软件产品 • 5 、可维护性好

  11. 传统的开发方法与面向对象的开发方法比较

  12. 9 . 2 面向对象的概念 • 9 . 2 . 1 对象( objoct ) • 在现实世界中有意义的、与所要解决的问题有关系的任何事物都可以作为对象,包括具体的物理实体的抽象、人为的概念、任何有明确边界和意义的东西。 • 如:一名职工、一本图书、贷款、生产计划、一场演出等。 • 对象既有静态的属性,又有动态的行为(操作)。

  13. 从软件开发的角度定义对象 • 系统中用来描述客观事物的实体,是构成系统的基本单位。 • 由一组属性和相关操作组成的服务组成。这是对象的两个基本要素: • 属性:用来描述对象静态特征的一个数据项; • 服务:用来描述对象动态特征(行为)的一个操作序列。 • 对象的属性和所有操作封装在一起,构成一个统一体。 • 属性一般只能通过执行对象的操作来改变。

  14. 表示内部状态的数据、实现各操作的代码及局部数据,被隐藏,无法从外面看见、访问或修改;表示内部状态的数据、实现各操作的代码及局部数据,被隐藏,无法从外面看见、访问或修改; • 使用对象的时候,只能通过对象与外界的界面来操作; • 操作时,只需知道该操作的名字和所需要的参数,不需要知道这些操作是如何实现的; • 简单、方便,安全性和可靠性高。

  15. 9.2.2 其他概念 • 1、类( Class ) • 具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述。 • “类”好比是一个对象模板,用它可以产生多个对象。 类的描述

  16. 例: • 类(class):是对象的“类型”(type) • 一般用关键字class来表示。 • Class CPeople{ • long ID; • string name; • void DoSomething(); • } • 对象是类的实例:CPeople Tom

  17. 2、实例(instance) • 实例是某个特定类所描述的一个具休对象。 • 如:“张三”“李四”是类“学生”的实例。 • 对象:可以是一个具体的对象,也可以泛指一般的对象。 • 实例:必然是指一个在客观世界中存在的具体对象。

  18. 3、消息(message) • 对象之间通信的手段,是一个对象要求另一对象执行类中定义的某个操作的规格说明。 • 通常一个消息由三部分组成: • 接收消息的对象 • 消息标识符(即消息名) • 零个或多个变元 • 例如: MyCircle.Show (Green ) • MyCircle是接收消息的对象的名字, Show 是消息名,Green是消息的变元。

  19. 4 、方法( method ) • 对象所能执行的操作称为方法,也就是类中所定义的服务。方法描述了对象执行的功能、响应消息的操作。 • 在 C + +中称为成员函数。

  20. 5 、属性( attribute) • 属性是对客观世界实体所具有的性质的抽象,是类中所定义的数据。 • 如:学生类属性有姓名、年龄、性别等。 • 不同对象的同一属性可以具有相同或不同的属性值。 • 如:张三的年龄为19 ,李四 的年龄为20。

  21. 6 、封装(encapsulation ) • 封装是把对象的属性和实现操作的代码结合成一个独立的系统单位,并尽可能隐藏对象的内部细节,对象以外的部分不能直接作用于对象的内部数据(属性),对象间的通信只能通过明确的消息来进行。

  22. 7、继承( inheritance) • 在现存类定义的基础上,建立新定义类的技术。 • 新类的定义可以是现存类所声明的数据、定义与新类所增加的声明的组合。 • 新类复用现存类的定义,而不要求修改现存类。 • 现存类可当作父类(泛化类、基类或超类)来引用,则新类相应地可当作子类(特化类、子女类或派生类)来引用。

  23. 实现继承机制的原理

  24. 父类、子类、超类 • 父类:一个类的上层是父类。 • 子类:一个类的下层是子类。 • 超类:若 C2 是 C1 的子类, C3 是 C2 的子类,则 C1 是 C3的超类。

  25. 单继承与多继承 • 单继承:一个类只允许有一个父类,即类等级为树形结构。 • 多继承:一个类允许有多个父类 • 继承的传递性: • 如果类 C 继承类 B , • 类 B 继承类 A ,则类 C 继承类 A 。

  26. 继承性的优点 • 使得相似的对象可以共享程序代码和数据结构,大大减少程序中的冗余信息。 • 便于软件修改维护。 • 用户在开发新系统时不必从零开始,可以继承原有相似功能或者从类库中选取需要的类,再派生新类。

  27. 8 、多态性(polymorphism ) • 指对象根据所接受的消息而做出动作,同样的消息为不同的对象接受时可导致完全不同的行动。

  28. 9 、重载( overloading) • 包括: • 函数重载:在同一作用域,若干个参数特征不同的函数可以使用相同的函数名字; • 运算符重载:同一个运算符可以施加于不同类型的操作数上面。

  29. 9 .3 面向对象建模 • 模型:是一组图示符号和组织这些符号的规则,利用它们来定义和描述问题域中的术语和概念。 • 面向对象模型的组成: 描述系统控制结构 描述系统数据结构 描述系统功能

  30. 一般的建模顺序: • ① 对象模型(object model ) :定义实体,描述系统数据,定义“对谁做” • ② 动态模型( dynamic model ) :描述系统控制结构,规定“何时做” • ③ 功能模型( functional model ) :描述系统功能,指明系统应“做什么”

  31. 几种著名的面向对象方法 • Booch 方法( 1991 ) • Coad 一 Yourdon 方法( 1991 ) • Rumbaugh 方法(简称 OMT ) ( object Modeling Technology , 1991 ) • Jacobson 方法(简称 OOSE , 1992 ) • 由 Rumbaugh 、 Booch 、 Jacobson 提出的统一建模语言 ( 简称 UML ) ( Unify Modeling Language , 1994 )

  32. UML 统一建模语言 • 一种可视化建模语言,能描述开发需要的各种视图,并以此为基础组建系统。 • 其发展过程如右图: • 常用的工具: Rational Rose

  33. 面向对象的软件开发模型 • 对象模型: 描述系统数据结构的对象模型; • 动态模型:描述系统控制结构; • 功能模型:描述系统功能。 • 一个典型的软件系统使用数据结构(对象模型),执行操作(动态模型),并且完成数据值的变化(功能模型)。

  34. 9 . 4 对象模型 • 描述系统内部对象的静态结构,包括对象本身的定义、对象的属性和操作、以及对象与其它对象之间的关系。 • UML 中,对象模型通常由“类图”组成。

  35. 9 . 4 . 1 类图的基本符号

  36. 9 . 4 . 2 表示关系的符号 • 类和类之间的联系称为“关系”;关系可以是物理的,也可以是逻辑的。 • 通常分为:关联、范化、依赖和细化四种。

  37. 1 、关联 • 表示:在类之间画一条连线。 • 角色:关联的端点,说明类在关联中的作用和角色。

  38. 关联的重数 • 表示类中有多少个对象与关联类中的一个对象相关。常见的描述有: • 未标明,默认为 1 ;0 .. 1 ; 0 ... *+或 *; • 0+ 或1 .. ;1 .. 5 ; 3

  39. 限定关联 • 对关联的含义做某种约束。通常用在一对多或多对多的关联关系中,把模型中的重数从一对多(或多对多)变成一对一(或多对一) 文件在目录内是唯一的

  40. 关联的属性 • 进一步说明对象间关联的性质,可引入一个关联类来记录这些附加信息。关联类通过一条虚线与关联连接。

  41. 类图

  42. 2、聚合 • 一种“整体与成员”的关系。表示整体类的那一端增加一个菱形框。 • 包括共享聚合和组合聚合。如:

  43. 4 、依赖和细化 • 依赖:一个模型元素是独立的,另一个依赖于这个独立的模型元素,若独立元素改变,将影响此元素。 • 如成绩依赖课程:

  44. A B 细化:同一事物在不同抽象层次上描述时,这些描述之间具有细化关系。 B在A的基础上更详细的描述

  45. 9 . 5 动态模型 • 状态图描述对象可能的状态及其转换,关心对象在某过程中的经历。 • 生命周期中的阶段也就是对象的状态。 • 一个触发行为称为一个事件. • 状态有持续性,它占用一段时间间隔。 • 事件表示时刻,状态代表时间间隔。 • 通过状态图来描绘对象的状态、触发状态转换的事件以及对象的行为。

  46. 建模实例:描述客房状态的状态图

  47. 9 . 6 功能模型 • 功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。 • UML提供的用例图也是进行需求分析和建立功能模型的强有力工具。 • 在UML中把用用例图建立起来的系统模型称为用例模型。 • 用例模型描述的是外部行为者(actor)所理解的系统功能。是其他视图的核心和基础。

  48. 关系 行为者 方框代表系统 椭圆代表用例 图9.16自动售货机系统用例图

More Related