软件工程课件:第九章 面向对象方法学引论_第1页
软件工程课件:第九章 面向对象方法学引论_第2页
软件工程课件:第九章 面向对象方法学引论_第3页
软件工程课件:第九章 面向对象方法学引论_第4页
软件工程课件:第九章 面向对象方法学引论_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件工程

第九章面向对象方法学引论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研究中心开发的SmalltaIk语言,具备了面向对象语言的各种特征。发展阶段:涌现大批面向对象编程语言(OOPL)。如C++、objective-C、objectPascal、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)具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述。“类”好比是一个对象模板,用它可以产生多个对象。学生对象1类名学生对象2姓名:张三属性姓名:李四年龄24年龄20性别:男性别:女选课服务选课考试考试类的描述16

例:类(class):是对象的“类型”(type)一般用关键字class来表示。ClassCPeople{longID;stringname;voidDoSomething();}

对象是类的实例:CPeopleTom17

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

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

几种著名的面向对象方法Booch方法(1991)Coad一Yourdon方法(1991)Rumbaugh方法(简称OMT)(objectModelingTechnology,1991)Jacobson方法(简称OOSE,1992)由Rumbaugh、Booch、Jacobson提出的统一建模语言(简称UML)(UnifyModelingLanguage,1994)32

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

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

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

9.4.1类图的基本符号36

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

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

关联的重数表示类中有多少个对象与关联类中的一个对象相关。常见的描述有:未标明,默认为1;

0..1;0...*+或*

;0+或1..;

1..5;339

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

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

42

类图43

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

45

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

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

金额计算器金额累加找零重置自动售货机饮料编号价格投入硬币送出饮料显示金额按下按钮按退币杆显示售空存量计算器饮料编号存量递减显示售空重置退币杆退币杆状态按退币杆顾客姓名硬币投入硬币取出饮料选择按钮按钮状态按钮灯亮按钮灯灭售空灯亮按下按钮

顾客按退币杆购买顾客按下按钮属于属于属于属于48

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

建模实例:描述客房状态的状态图取出饮料结算找零扣减存量完成交易显示售货机就绪,所有灯灭显示金额总数饮料售空灯亮显示总额已够饮料选择灯亮投入硬币(有效的)投入硬币规定金额金额不足再投币按下饮料选择按钮回到就绪状态回到就绪状态取消无效硬币取消建模实例:自动售货机的状态图事件追踪图事件追踪图侧重于说明发生于系统执行过程中的一个特定“场景”。场景也叫做脚本,是完成系统某个功能的一个事件序列。场景通常起始于一个系统外部的输入事件,结束于一个系统外部的输出事件,它可以包括发生在这个期间的系统所有的内部事件。顾客投入硬币自动售货机计算并显示金额顾客持续投入硬币直到足够的金额自动售货机选择按钮灯亮顾客选择饮料种类并按下选择按钮自动售货机送出相应饮料并结算、找零自动售货机扣除该饮料的存量如自动售货机该饮料有存货,回到初始状态如自动售货机该饮料无存货,显示该饮料“售空”灯亮,不再接受选择,回到初始状态自动售货机售货脚本(事件序列)

顾客售货机金额计算器选择按钮存量计算器售空灯

投入硬币累加总额显示总额金额足够灯亮选择按钮按下按钮送出饮料结算余额找零扣减存量存量为零灯亮

54

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论