软件工程导论课件第9章+面向对象方法学引论pptConvertor文档格式.docx

上传人:b****5 文档编号:19905114 上传时间:2023-01-12 格式:DOCX 页数:14 大小:21.32KB
下载 相关 举报
软件工程导论课件第9章+面向对象方法学引论pptConvertor文档格式.docx_第1页
第1页 / 共14页
软件工程导论课件第9章+面向对象方法学引论pptConvertor文档格式.docx_第2页
第2页 / 共14页
软件工程导论课件第9章+面向对象方法学引论pptConvertor文档格式.docx_第3页
第3页 / 共14页
软件工程导论课件第9章+面向对象方法学引论pptConvertor文档格式.docx_第4页
第4页 / 共14页
软件工程导论课件第9章+面向对象方法学引论pptConvertor文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

软件工程导论课件第9章+面向对象方法学引论pptConvertor文档格式.docx

《软件工程导论课件第9章+面向对象方法学引论pptConvertor文档格式.docx》由会员分享,可在线阅读,更多相关《软件工程导论课件第9章+面向对象方法学引论pptConvertor文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

软件工程导论课件第9章+面向对象方法学引论pptConvertor文档格式.docx

9.1.3面向对象方法的要点

认为客观世界是由各种对象组成的,任何事物都是对象。

把所有对象都划分成各种对象类(简称为类,class),每个对象类都定义了一组数据和一组方法。

按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级)。

对象彼此之间仅能通过传递消息互相联系。

OOSD由三部分组成:

OOA(Object-OrientedAnalysis)面向对象的分析

OOD(Object-OrientedDesign)面向对象的设计

OOP(Object-OrientedProgram)面向对象的程序设计

OOA

强调的是对一个系统中的对象特征和行为的定义。

建立系统的三类模型。

OOD

与OOA密切配合顺序实现对现实世界的进一步建模。

OOP

是面向对象的技术中发展最快的,使用面向对象的程序设计语言,进行编码。

9.1.5面向对象开发过程(I)

9.1.5面向对象开发过程(II)

9.1.5面向对象开发过程(III)

9.1.5面向对象开发过程(IV)

9.1.6面向对象方法的优点

1.与人类习惯的思维方式一致

2.稳定性好

3.可重用性好

4.可维护性好

9.2.1对象

9.2.2类

9.2.3实例

9.2.4消息

9.2.5方法

9.2.6属性

9.2.7封装

9.2.8继承

9.2.9多态性

9.2.1对象(I)

是客观事物或概念的抽象表述,即对客观存在的事物的描述统称为对象

对象可以是事、物、或抽象概念,是将一组数据和使用该数据的一组基本操作或过程封装在一起的实体。

9.2.1对象(II)

对象的特点

(1)以数据为中心。

(2)对象是主动的。

(3)实现了数据封装。

(4)本质上具有并行性。

(5)模块独立性好。

类又称对象类(ObjectClass),是一组具有相同属性和相同操作的对象的集合。

在一个类中,每个对象都是类的实例(instance),它们都可以使用类中提供的函数。

实例就是由某个特定的类所描述的一个具体的对象。

类是对具有相同属性和行为的一组相似的对象的抽象,类在现实世界中并不能真正存在。

消息就是向对象发出的服务请求(互相联系、协同工作等)。

一个消息包含3个部分:

接收消息的对象,消息名,消息变元。

例如,MyCircle是Circle类的一个实例,发送消息如下:

MyCircle.show(GREEN);

方法就是对象所能执行的操作,也就是类中所定义的服务。

方法描述了对象执行操作的算法,响应消息的方法。

在C++语言中把方法称为成员函数。

属性就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。

对象封装了对象的数据以及对这些数据的操作。

9.2.8继承(I)

继承是指能够直接获得已有的性质和特征,而不必重复定义它们。

在面向对象的软件技术中,继承是子类自动地共享基类中定义的数据和方法的机制。

单重继承:

子类仅从一个父类继承属性和方法

多重继承:

子类可从多个父类继承属性和方法

9.2.8继承(II)

在类等级的不同层次中可以共享(公用)一个行为(方法)的名字,然而不同层次中的每个类却各自按自己的需要来实现这个行为。

当对象接收到发送给它的消息时,根据该对象所属于的类动态选用在该类中定义的实现算法

9.3面向对象建模(I)

面向对象方法最基本的原则,是按照人们习惯的思维方式,用面向对象观点建立问题域的模型,开发出尽可能自然地表现求解方法的软件。

OMT(ObjectModelTechnology)是一种软件工程方法学,支持整个面向对象软件生命周期,它覆盖了问题构成、分析、设计和实现等阶段。

9.3面向对象建模(II)

面向对象开发软件,需要建立3种形式的模型。

对象模型。

描述系统数据结构—数据结构。

动态模型。

描述系统控制结构—执行操作。

功能模型。

描述系统功能—数值变化。

这三种模型从不同侧面描述了对系统的需求。

在面向对象的分析(OOA)阶段,这三种模型是必不可少的。

对象模型描述了系统的静态结构。

OO方法强调围绕对象而不是功能来构造系统。

使用统一建模语言UML(UnifiedModelingLanguage)提供的类图来建立对象模型。

UML用例图是建立功能模型的有力工具。

UML(UnifiedModelingLanguage)产生于90年代中期。

它不仅统一了Booch、OMT和OOSE方法中的概念和表示法,而且对其作了进一步扩展,最终成为在面向对象技术领域占主导地位的、并被大众所接受的标准建模语言。

1、UML概述

UML的发展历程(下图)

UML是一个通用的标准建模语言,可以对任何具有静态结构和动态行为的系统进行可视化建模。

UML不是一个开发过程,也不是一个方法,但允许任何一种开发过程和面向对象方法使用它。

统一建模语言UML

UML

事物

关系

结构

行为

组织

辅助

静态

实现

泛化

依赖

关联

动态

30

(1)统一标准

 UML统一了Booch、OMT和OOSE等方法中的基本概念,已成为OMG的正式标准,提供了标准的面向对象的模型元素的定义和表示。

 

(2)面向对象

 UML还吸取了面向对象技术领域中其他流派的长处。

UML符号表示考虑了各种方法的图形表示,删掉了大量易引起混乱的、多余的和极少使用的符号,也添加了一些新符号。

(3)可视化、表示能力强

 系统的逻辑模型或实现模型都能用UML模型清晰的表示,可用于复杂软件系统的建模。

 (4)独立于过程

 UML是系统建模语言,独立于开发过程。

(5)易掌握、易用

 由于UML的概念明确,建模表示法简洁明了,图形结构清晰,易于掌握使用。

面向对象建模

31

9.4.1类图的基本符号(I)

1.定义类

UML中类的图形符号为长方形,用两条横线把长方形分成上、中、下3个区域,3个区域分别放类的名字、属性和服务

9.4.1类图的基本符号(II)

属性用来描述类的特征,表示需要处理的数据。

定义如下:

2.定义属性

visibilityattribute-name:

type=initial-value{property-string}

可见性属性名:

类型=缺省值{性质串}

其中:

可见性(visibility)表示该属性对类外的元素是否可见。

分为:

public(+)公有的,即模型中的任何类都可以访问该属性。

private(-)私有的,表示不能被别的类访问。

protected(#)受保护的,表示该属性只能被该类及其子类访问。

如果可见性未申明,表示其可见性不确定。

9.4.1类图的基本符号(III)

3.定义操作

对数据的具体处理方法的描述则放在操作部分,操作说明了该类能做些什么工作。

UML描述操作的语法格式如下:

操作可见性的定义方法与属性相同。

参数表是用逗号分隔的形式参数的序列。

描述一个参数的语法如下:

参数名:

类型名=默认值

visibilityoperating-name(parameter-list):

return-type{property-string}

可见性操作名(参数表):

返回类型{性质串}

9.4.2表示关系的符号(I)

类与类之间关系有:

聚集

泛化(继承)

细化

9.4.2.1关联(I)

关联表示两个类的对象之间存在某种语义上的联系。

(1)普通关联

普通关联示例

9.4.2.1关联(II)

在表示关联的直线两端可以写上重数(multiplicity),它表示该类有多少个对象与对方的一个对象连接。

重数的表示方法通常有:

0…1表示0到1个对象

0…*或*表示0到多个对象

1+或1…*表示1到多个对象

1…15表示1到15个对象

3表示3个对象

如果图中未明确标出关联的重数,则默认重数是1。

9.4.2.1关联(III)

(2)关联的角色

在任何关联中都会涉及到参与此关联的对象所扮演的角色(即起的作用),在某些情况下显式标明角色名有助于别人理解类图。

如果没有显式标出角色名,则意味着用类名作为角色名。

递归关联(Recursiveassociation)

一个类与本身有关联关系

9.4.2.1关联(IV)

(3)限定关联

限定关联通常用在一对多或多对多的关联关系中,可以把模型中的重数从一对多变成一对一,或从多对多简化成多对一。

在类图中把限定词放在关联关系末端的一个小方框内。

9.4.2.1关联(V)

(4)关联类

为了说明关联的性质可能需要一些附加信息。

可以引入一个关联类来记录这些信息。

关联中的每个连接与关联类的一个对象相联系。

关联类通过一条虚线与关联连接。

9.4.2.1关联(VI)

关联的语言实现

1-1:

PublicclassProgrammer{

Computer*GetUsedComputer(void)}

PublicclassComputer{

Programmer*GetQuotingProgrammer(void)

}

9.4.2.1关联(VII)

1-n

PublicclassCompany{

Product**GetProduct();

PrivateProduct*[]Product,

};

PublicclassProduct{

Company*GetCompany();

9.4.2.1关联(VIII)

限定关联

PublicclassBookshelf{

Book*GetHoldingBook(intbookID);

PublicclassBook{

BookShelf*GetBookShelf(void);

9.4.2.2聚集(I)

聚集是一种特殊的关联,它指出类间的“整体-部分”关系。

(1)共享聚集

如果在聚集关系中处于部分方的对象可同时参与多个处于整体方对象的构成,则该聚集称为共享聚集。

9.4.2.2聚集(II)

(2)组合聚集

如果部分类完全隶属于整体类,部分与整体共存,整体不存在了部分也会随之消失,则该聚集称为组合聚集。

9.4.2.3泛化(I)

UML中的泛化关系就是通常所说的继承关系。

(1)普通泛化

附加标记

注释

普通泛化

9.4.2.3泛化(II)

(2)受限泛化

可以给泛化关系附加约束条件,以进一步说明该泛化关系的使用方法或扩充方法,这样的泛化关系称为受限泛化。

预定义的约束有4种:

多重、不相交、完全和不完全。

下图:

多重继承

9.4.2.3泛化(III)

完全继承指的是父类的所有子类都已在类图中穷举出来了,图示符号是指定{完全}约束。

不完全继承与完全继承恰好相反,父类的子类并没有都穷举出来,不完全继承是一般情况下默认的继承关系。

图9.13复杂类图示例

组合聚集

抽象类

抽象操作

具体实现

9.4.2.4依赖

依赖关系表示:

其中一个模型元素是独立的,另一个模型元素不是独立的,它依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它的模型元素。

9.4.2.5细化

当对同一个事物在不同抽象层次上描述时,这些描述之间具有细化关系。

假设两个模型元素A和B描述同一个事物,它们的区别是抽象层次不同,如果B是在A的基础上的更详细的描述,则称B细化了A,或称A细化成了B。

注意是虚线,

实线就成了泛化

习题。

现有一医院病房监护系统,病症监视器安置在每个病房,将病人的病症信号实时传送到中央监视系统进行分析处理。

在中心值班室里,值班护士使用中央监视系统对病员的情况进行监控,根据医生的要求随时打印病人的病情报告,定期更新病历,当病症出现异常时,系统会立即自动报警,并实时打印病人的病情报告,立及更新病历。

建立相应的对象模型,用类图表示。

首先给出类的名称及相应的属性和方法

动态模型描述系统控制结构。

通常用状态图表示。

下降状态

在第一层

上升状态

向第一层下降

空闲状态

上升

到达

超时

下降

到达第一层

功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,通常,功能模型由一组数据流图组成。

UML提供的用例图也是进行需求分析和建立功能模型的强有力工具。

三种模型描述了系统的不同方面

对象模型

动态模型

功能模型

对象的静态结构及相互关系

与时间和顺序有关的系统性质

与值的变化有关的系统性质

描述系统的数据结构

控制结构

系统的功能

“干事的主体”

“什么时候干”

“干什么”

功能模型与对象模型的关系

--对象模型描述了功能模型中的动作对象,数据存储

以及数据流结构

--功能模型中的处理对应于对象模型中的操作

动态模型与对象模型的关系

--状态转换驱使行为发生,这些行为在DFD中被映射

成处理,它们同时与对象模型的操作相对应

--针对每个建立的动态模型描述了类实例的生命

周期或运行周期

动态模型与功能模型的关系

--功能模型中的处理可能产生动态模型中的事件。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 互联网

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1