软件⼯程——⾯向对象⽅法和UML详解
⾯向对象⽅法和UML
⾯向对象的概念
复杂的对象可以由简单的对象组成。
通常将属性及⾏为相同或相似的对象归为⼀类。类可以看成是对象的抽象,代表了此类对象所具有的共有属性和⾏为。
⾯向对象的定义:⾯向对象=对象+类+继承+消息通信。
如果⼀个系统是使⽤这样4个概念设计和实现的,则可认为这个系统是⾯向对象的。
对象的概念
对象是包含现实世界物体特征的抽象实体,它反映了系统为之保存信息和(或)与它交互的能⼒。
例如,Student对象的数据可能有姓名、性别等,其操作可能是对这些数据值的赋值及更改。
对象名有下列三种表⽰格式:
1. 第⼀种格式是对象名在前,类名在后,中间⽤冒号连接。 形如:对象名:类名
2. 第⼆种格式形如: :类名。 这种格式⽤于尚未给对象命名的情况,注意,类名前的冒号不能省略。
3. 第三种格式形如:对象名
实例化类和实例化对象
对象有两个层次的概念:
1. 现实⽣活中对象指的是客观世界的实体。如⼈、学⽣、汽车、房屋等。也可以是抽象的逻辑对象,如银⾏帐号,⽣⽇。
2. 程序中对象就是⼀组变量和相关⽅法的集合,其中变量表明对象的状态,⽅法表明对象所具有的⾏为。
程序中的对象分为5类
程序中的对象分:物理对象,⾓⾊,事件,交互。
1. 物理对象(Physical Objects)── 物理对象是最易识别的对象,通常可以在问题领域的描述中到,它们的属性可以标识和测量。
2. ⾓⾊(Roles)── ⼀个实体的⾓⾊也可以抽象成⼀个单独的对象。⾓⾊对象的操作是由⾓⾊提供的技能。例如,⼀个退休教师同时
扮演退休者和教师的⾓⾊。
3. 事件(Events)── ⼀个事件是某种活动的⼀次“出现”。如“⿏标”事件对象有诸如光标坐标、左右键、单击,双击等信息。
4. 交互(Interactions)── 交互表⽰了在两个对象之间的关系,这种类型的对象类似于在数据库设计时所涉及的“关系”实体。当实
体之间是多对多的关系时,利⽤交互对象可将其简化为两个⼀对多的关系。
类与封装
类的概念
类即将现实⽣活中的对象经过抽象,映射为程序中的对象。对象在程序中是通过⼀种抽象数据类型来描述的,这种抽象数据类型称为类(Class)。
封装的概念
封装。⾯向对象的封装特性与其抽象特性密切相关。封装是⼀种信息隐蔽技术,就是利⽤抽象数据类型将数据和基于数据的操作封装在⼀起。⽤户只能看到对象的封装界⾯信息,对象的内部细节对⽤户是隐蔽的。
封装的具体定义
1. 清楚的边界,所有对象的内部信息被限定在这个边界内;
2. 接⼝,即对象向外界提供的⽅法,外界可以通过这些⽅法与对象进⾏交互;
3. 受保护的内部实现,即软件对象功能的实现细节,实现细节不能从类外访问。
继承的概念
继承。继承是⼀种联结类的层次模型,为类的重⽤提供了⽅便,它提供了明确表述不同类之间共性的⽅法。
我们将公共类称为超类(superclass)、⽗类(father class)、祖先(ancestor)或基类(base class),⽽从其继承的类称为⼦类(subclasses)、后代(deslendane)或导出类(derived class)。
多态概念
根据为请求提供服务的对象不同可以得到不同的⾏为,这种现象称为多态。例如,在公共浴场洗浴时,男性只能进⼊男性浴池,⼥性只能进⼊⼥性浴池。
在运⾏时对类进⾏实例化,并调⽤与实例化对象相应的⽅法,称为动态绑定、后期绑定或运⾏时绑定。
相应地,如果⽅法的调⽤是在编译时确定的,则称为是静态绑定、前期绑定或编译时绑定。
通过在⼦类中覆盖⽗类的⽅法实现多态。
消息通信
消息是⼀个对象与另⼀个对象的通信单元,是要求某个对象执⾏类中定义的某个操作的规格说明。
发送给⼀个对象的消息定义了⼀个⽅法名和⼀个参数表(可能是空的),并指定某⼀个对象。
⼀个对象接收到消息,则调⽤消息中指定的⽅法,并将形式参数与参数表中相应的值结合起来。
⾯向对象软件开发⽅法
⾯向对象软件开发⽅法的特征
1. ⽅法的唯⼀性:即⽅法是对软件开发过程所有阶段进⾏综合考虑⽽得到的。
2. 从⽣存期的⼀个阶段到下⼀个阶段的⾼度连续性即⽣存期后⼀阶段的成果只是在前⼀阶段成果的补充和修改。
3. 将⾯向对象分析(OOA)、⾯向对象设计(OOD)和⾯向对象程序设计(OOP)集成到⽣存期的相应阶段。
Rumbaugh⽅法
Rumbaugh和他的同事提出的对象模型化技术(OMT)⽤于分析、系统设计和对象级设计。分析活动建⽴三个模型:
1. 对象模型(描述对象、类、层次和关系);
2. 动态模型(描述对象和系统的⾏为);
3. 功能模型(类似于⾼层的DFD,描述穿越系统的信息流)。
Coad和Yourdon⽅法
Coad和Yourdon⽅法常常被认为是最容易学习的OOA⽅法。建模符号相当简单,其OOA过程如下:
1. 使⽤“要什么”准则标识对象;
2. 定义对象之间的⼀般化/特殊化结构(⼜称为分类结构);
3. 定义对象之间的整体/部分结构(⼜称为组合结构);
4. 标识主题;
5. 定义对象的属性及对象之间的实例连接;
6. 定义服务及对象之间的消息连接。
Booch⽅法
包含“微开发过程”和“宏开发过程”两个过程。
OOA 宏观开发过程如下:
1. 标识类和对象;
2. 标识类和对象的语义;
3. 标识类和对象间的关系;
4. 进⾏⼀系列精化;
5. 实现类和对象。
Jacobson⽅法
称为OOSE(⾯向对象软件⼯程),其特点是特别强调使⽤⽤例——⽤以描述⽤户和产品或系统间如何交互的场景。
过程如下:
1. 标识系统的⽤户和他们的整体责任
2. 构造需求模型
3. 构造分析模型
UML⾯向对象的建模语⾔
⾯向对象的建模语⾔很多,⽬前使⽤最⼴泛的是统⼀建模语⾔(UML,Unified Modeling Language);它将Booch、Rumbaugh和Jacobson等各⾃独⽴的OOA和OOD⽅法中最优秀的特⾊组合成⼀个统⼀的⽅法。
UML的特点
统⼀标准 ,成为OMG的标准。
⾯向对象 , UML⽀持⾯向对象技术的主要概念,它提供了⼀批基本的表⽰模型元素的图形和⽅法,能简洁明了地表达⾯向对象的各种概念和模型元素。
可视化,表达能⼒强⼤。UML是⼀种图形化语⾔,⽤UML的模型图形能清晰地表⽰系统的逻辑模型或实现模型。UML还提供了语⾔的扩展机制,⽤户可以根据需要增加定义⾃⼰的构造型、标记值和约束等。
独⽴于过程 。UML是系统建模的语⾔,不依赖特定的开发过程。
容易掌握使⽤ 。UML概念明确,建模表⽰法简洁明了,图形结构清晰,容易掌握使⽤。
与编程语⾔的关系。⽀持UML的⼀些CASE⼯具(如Rose)可以根据 UML所建⽴的系统模型⾃动产⽣Java、C++ 等代码框架。UML的基本模型
UML符号为开发者或开发⼯具使⽤这些图形符号和⽂本语法为系统建模提供了标准。
这些图形符号和⽂字所表达的是应⽤级的模型,在语义上它是UML元模型的实例。
UML模型由事物、关系和图组成 。 如下图所⽰。
UML的4类事物
事物是对模型中最具代表性成分的抽象,在UML中,可以分为结构事物、⾏为事物、分组事物和注释事物。
结构事物:是UML模型的静态部分,主要⽤来描述概念的或物理的元素,包括类、主动类、接⼝、对象、⽤例、参与者、协作、构件和节点等。
1. 类(class)── 类⽤带有类名、属性和操作的矩形框来表⽰。
2. 主动类(active class)── 主动类的实例应具有⼀个或多个进程或线程,能够启动控制活动。
3. 接⼝(interface)── 描述了⼀个类或构件的⼀组外部可⽤的服务(操作)集。
接⼝定义的是⼀组操作的描述,⽽不是操作的实现。
⼀般将接⼝画成从实现它的类或构件引出的圆圈,接⼝体现了使⽤与实现分离的原则。
4. 对象(object)── 对象是类的实例,其名字下边加下划线,对象的属性值需明确给出。
5. ⽤例(use case)── 也称⽤况,⽤于表⽰系统想要实现的⾏为,即描述⼀组动作序列(即场景)。
⽽系统执⾏这组动作后将产⽣⼀
个对特定参与者有价值的结果。
6. 参与者(actor)── 也称⾓⾊,是指与系统有信息交互关系的⼈、软件系统或硬件设备,在图形上⽤简化的⼩⽊头⼈表⽰。
7. 协作(collaboration)── ⽤例仅描述要实现的⾏为,不描述这些⾏为的实现。这种实现⽤协作描述。
协作定义交互,描述⼀组⾓⾊实体和其他实体如何通过协同⼯作来完成⼀个功能或⾏为。类可以参与⼏个协作。
8. 构件(component)── 也称组件,是系统中物理的、可替代的部件。它通常是描述⼀些逻辑元素的物理包。
9. 节点(node)── 是在运⾏时存在的物理元素。它代表⼀种可计算的资源,通常具有⼀定的记忆能⼒和处理能⼒。
⾏为事物
⾏为事物是UML模型的动态部分,包括两类:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。