版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件工程,第九章 面向对象方法学引论,2,第九章 面向对象方法学引论,9 . 1 面向对象方法学概述 9 . 2 面向对象概念 9 . 3 面向对象建模 9 . 4 对象模型 9 . 5 动态模型 9 . 6 功能模型 9 . 7 三种模型之间的关系,3,学习重点和难点,理解面向对象技术中的基本思想、概念和原理等;理解面向对象建立的三种模型的功能和相互关系。,4,9 . 1 面向对象方法学概述,软件工程发展的两个重要阶段 传统软件工程 面向对象软件的工程,5,传统软件工程,以面向过程的结构化程序设计为基础; 遵循“程序=数据结构+算法”的思路; 由“追求技巧与效率”到“清晰第一,效率第二” 缺
2、点: 不太适应规模大、特别复杂的项目; 难以解决软件重用的问题; 难以适应需求的变化; 难以彻底解决维护问题。,6,面向对象软件工程,按人类习惯的思维方法,以现实世界中客观存在的事物(即对象)为中心来思考和认识问题。 采用的思想方法与原则:抽象、分类、继承、聚合、封装等。 以易于理解的方式表达软件系统,建立问题域模型,使设计出的软件尽可能直接地描述现实世界,具有更好的可维护性,7,软件工程学家Codd 和Yourdon认为:,面向对象对象类继承通信 如果一个软件系统采用这些概念来建立模型并予以实现,那么它就是面向对象的。,8,面向对象技术发展概述,初始阶段:上世纪 60 年代,挪威奥斯陆大学和
3、挪威计算中心开发的 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,面
4、向对象技术的基本观点, 任何客观的事物或实体都是对象。对象组成客观世界,复杂的对象可以由简单的对象组成。 具有相同数据和操作的对象可以归并为一个类(class ) ,对象是对象类的一个实例。 类可以派生出子类,子类继承父类的全部特性(数据和操作),又可以有自己的新特性。子类与父类形成类的层次结构。 对象之间通过消息传递相互联系。,10,面向对象方法学的优点,详见教材 P205 一 P208 页 1 、与人类习惯的思维方法一致 2 、稳定性好 3 、可重用性好 4 、较易开发大型软件产品 5 、可维护性好,11,传统的开发方法与面向对象的开发方法比较,12,9 . 2 面向对象的概念,9 . 2
5、 . 1 对象( objoct ) 在现实世界中有意义的、与所要解决的问题有关系的任何事物都可以作为对象,包括具体的物理实体的抽象、人为的概念、任何有明确边界和意义的东西。 如:一名职工、一本图书、贷款、生产计划、一场演出等。 对象既有静态的属性,又有动态的行为(操作)。,13,从软件开发的角度定义对象 系统中用来描述客观事物的实体,是构成系统的基本单位。 由一组属性和相关操作组成的服务组成。这是对象的两个基本要素: 属性:用来描述对象静态特征的一个数据项; 服务:用来描述对象动态特征(行为)的一个操作序列。 对象的属性和所有操作封装在一起,构成一个统一体。 属性一般只能通过执行对象的操作来改
6、变。,14,表示内部状态的数据、实现各操作的代码及局部数据,被隐藏,无法从外面看见、访问或修改; 使用对象的时候,只能通过对象与外界的界面来操作; 操作时,只需知道该操作的名字和所需要的参数,不需要知道这些操作是如何实现的; 简单、方便,安全性和可靠性高。,15,9.2.2 其他概念,1、类( Class ) 具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述。 “类”好比是一个对象模板,用它可以产生多个对象。,类的描述,16,例:,类(class):是对象的“类型”(type) 一般用关键字class来表示。 Class CPeople long ID; stri
7、ng name; void DoSomething(); 对象是类的实例:CPeople Tom,17,2、实例(instance),实例是某个特定类所描述的一个具休对象。 如:“张三”“李四”是类“学生”的实例。 对象:可以是一个具体的对象,也可以泛指一般的对象。 实例:必然是指一个在客观世界中存在的具体对象。,18,3、消息(message),对象之间通信的手段,是一个对象要求另一对象执行类中定义的某个操作的规格说明。 通常一个消息由三部分组成: 接收消息的对象 消息标识符(即消息名) 零个或多个变元 例如: MyCircle.Show (Green ) MyCircle是接收消息的对象的
8、名字, Show 是消息名,Green是消息的变元。,19,4 、方法( method ),对象所能执行的操作称为方法,也就是类中所定义的服务。方法描述了对象执行的功能、响应消息的操作。 在 C + +中称为成员函数。,20,5 、属性( attribute),属性是对客观世界实体所具有的性质的抽象,是类中所定义的数据。 如:学生类属性有姓名、年龄、性别等。 不同对象的同一属性可以具有相同或不同的属性值。 如:张三的年龄为19 ,李四 的年龄为20。,21,6 、封装(encapsulation ),封装是把对象的属性和实现操作的代码结合成一个独立的系统单位,并尽可能隐藏对象的内部细节,对象以
9、外的部分不能直接作用于对象的内部数据(属性),对象间的通信只能通过明确的消息来进行。,22,7、继承( inheritance),在现存类定义的基础上,建立新定义类的技术。 新类的定义可以是现存类所声明的数据、定义与新类所增加的声明的组合。 新类复用现存类的定义,而不要求修改现存类。 现存类可当作父类(泛化类、基类或超类)来引用,则新类相应地可当作子类(特化类、子女类或派生类)来引用。,23,实现继承机制的原理,24,父类、子类、超类 父类:一个类的上层是父类。 子类:一个类的下层是子类。 超类:若 C2 是 C1 的子类, C3 是 C2 的子类,则 C1 是 C3的超类。,25,单继承与多
10、继承,单继承:一个类只允许有一个父类,即类等级为树形结构。 多继承:一个类允许有多个父类 继承的传递性: 如果类 C 继承类 B , 类 B 继承类 A ,则类 C 继承类 A 。,26,继承性的优点,使得相似的对象可以共享程序代码和数据结构,大大减少程序中的冗余信息。 便于软件修改维护。 用户在开发新系统时不必从零开始,可以继承原有相似功能或者从类库中选取需要的类,再派生新类。,27,8 、多态性(polymorphism ),指对象根据所接受的消息而做出动作,同样的消息为不同的对象接受时可导致完全不同的行动。,28,9 、重载( overloading),包括: 函数重载:在同一作用域,若
11、干个参数特征不同的函数可以使用相同的函数名字; 运算符重载:同一个运算符可以施加于不同类型的操作数上面。,29,9 .3 面向对象建模,模型:是一组图示符号和组织这些符号的规则,利用它们来定义和描述问题域中的术语和概念。 面向对象模型的组成:,描述系统数据结构,描述系统控制结构,描述系统功能,30,一般的建模顺序:, 对象模型(object model ) :定义实体,描述系统数据,定义“对谁做” 动态模型( dynamic model ) :描述系统控制结构,规定“何时做” 功能模型( functional model ) :描述系统功能,指明系统应“做什么”,31,几种著名的面向对象方法,
12、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,
13、面向对象的软件开发模型,对象模型: 描述系统数据结构的对象模型; 动态模型:描述系统控制结构; 功能模型:描述系统功能。 一个典型的软件系统使用数据结构(对象模型),执行操作(动态模型),并且完成数据值的变化(功能模型)。,34,9 . 4 对象模型,描述系统内部对象的静态结构,包括对象本身的定义、对象的属性和操作、以及对象与其它对象之间的关系。 UML 中,对象模型通常由“类图”组成。,35,9 . 4 . 1 类图的基本符号,36,9 . 4 . 2 表示关系的符号,类和类之间的联系称为“关系”;关系可以是物理的,也可以是逻辑的。 通常分为:关联、范化、依赖和细化四种。,37,1 、关联,
14、表示:在类之间画一条连线。 角色:关联的端点,说明类在关联中的作用和角色。,38,关联的重数,表示类中有多少个对象与关联类中的一个对象相关。常见的描述有: 未标明,默认为 1 ; 0 . 1 ; 0 . *或 * ; 0+ 或1 . ; 1 . 5 ; 3,39,限定关联,对关联的含义做某种约束。通常用在一对多或多对多的关联关系中,把模型中的重数从一对多(或多对多)变成一对一(或多对一),文件在目录内是唯一的,40,关联的属性,进一步说明对象间关联的性质,可引入一个关联类来记录这些附加信息。关联类通过一条虚线与关联连接。,41,42,类图,43,2、聚合,一种“整体与成员”的关系。表示整体类的
15、那一端增加一个菱形框。 包括共享聚合和组合聚合。如:,44,45,4 、依赖和细化,依赖:一个模型元素是独立的,另一个依赖于这个独立的模型元素,若独立元素改变,将影响此元素。 如成绩依赖课程:,46,细化:同一事物在不同抽象层次上描述时,这些描述之间具有细化关系。,B在A的基础上更详细的描述,47,9 . 5 动态模型,状态图描述对象可能的状态及其转换,关心对象在某过程中的经历。 生命周期中的阶段也就是对象的状态。 一个触发行为称为一个事件. 状态有持续性,它占用一段时间间隔。 事件表示时刻,状态代表时间间隔。 通过状态图来描绘对象的状态、触发状态转换的事件以及对象的行为。,48,建模实例:描
16、述客房状态的状态图,49,9 . 6 功能模型,功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。 UML提供的用例图也是进行需求分析和建立功能模型的强有力工具。 在UML中把用用例图建立起来的系统模型称为用例模型。 用例模型描述的是外部行为者(actor)所理解的系统功能。是其他视图的核心和基础。,50,图9.16自动售货机系统用例图,方框代表系统,椭圆代表用例,行为者,关系,51,建模实例:某金融贸易系统用例图 (UML ),52,建模实例:用例图举例( UML ),53,用例之间的关系,UML用例主要有扩展和使用两种关系,它们是泛化关系的两种不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《黑神话:悟空》2025高中地理练习题含答案
- 餐饮战略合作协议书合同模板
- 采购管材管件合同范文
- 保证合同协议书范本
- 智慧养老方案课件
- 山东省烟台市蓬莱区(五四制)2024-2025学年八年级上学期期中考试英语试卷(含解析)
- 河北省邯郸市临漳县2024-2025学年七年级上学期11月期中生物学试卷(含答案)
- 《纺织纤维鉴别试验方法 第3部分:显微镜法》
- 高原常见病防治课件
- 肺部解剖及肺循环相关病变课件
- 外贸业务与国际市场培训课件
- 大学生职业生涯发展展示 (修改版)
- 信创医疗工作总结
- 教师教育教学质量提升方案
- 手机测试流程课件
- 灭火器的规格与使用培训
- 2024《中央企业安全生产治本攻坚三年行动方案(2024-2026年)》
- 纪录片《园林》解说词
- 《麦肯锡沟通》课件
- 建筑专题摄影培训课件
- 《民间文学导论》课件
评论
0/150
提交评论