面向对象技术与UML
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(3) 按照子类(或称为派生类)与父类(或称为基类)的关 系,把若干个对象类组成一个层次结构的系统(也称为 类等级)。在这种层次结构中,通常下层的派生类具有 和上层的基类相同的特性(包括数据和方法),这种现 象称为继承(inheritance)。 低层的特性将屏蔽高层的同名特性。如果在派生类中 对某些特性又做了重新描述,则在派生类中的这些特 性将以新描述为准。 (4) 对象彼此之间仅能通过传递消息互相联系。对象是 进行处理的主体,必须发消息请求它执行它的某个操 作,处理它的私有数据,而不能从外界直接对它的私 有数据进行操作。
} … }
A x1,x2; … x1.f1(2,4); … x2.f2(5,3); …
}
对 象
对象的特点:
以数据为中心 对象是主动的
实现了数据封装
本质上具有并行性
模块独立性好
类(Class)
基本概念
是对具有相同数据属性和相同操作的一个或一组 (集合)相似对象的描述,是一个抽象的概念。 类与函数的不同: 类 封装了函数与数据 是对问题的抽象描述 函数 封装了语句与数据 完成特定的功能
继承性举例
继承传递:大学生可以继承“人”和“学生”的特
征 父类 多重继承: 在职研究生既可以继承“学生”的特 征,又可以继承“教师”的特征 人
工人 学生 教师 农民
中学生 大学生 研究生 派生类
助教
讲师
具有继承关系的对象的特性
对象类间具有共享特征(包括数据和程序代
码的共享) 对象类间具有细微的差别或新增部分(包括 非共享的程序代码和数据) 对象类间具有层次结构。 继承所具有的作用有两个方面:
图10.1 喷泉模型
2.1.3 面向对象的概念
1) 对象
对象是由描述该对象属性的数据以及可以对这些 数据施加的所有操作封装在一起构成的统一体。 对象可以作的操作表示它的动态行为,通常把对 象的操作称为服务或方法。
1 对 象
对象相当于现实世界中的实体 公有
对象=属性
+ 方法 操作
操作1
公有 操作2
OO=objects+classes+inheritance+communication with messages
也就是说,面向对象就是既使用对象又使用类和继承等 机制,而且对象之间仅能通过传递消息实现彼此通信。
概括地说,面向对象方法具有下述4个要点: (1)面向对象方法用对象分解取代了传统方法的功能分解。 面向对象的软件系统是由对象组成的,软件中的任何元 素都是对象,复杂的软件对象由比较简单的对象组合而 成。 (2) 把所有对象都划分成各种对象类(简称为类,class), 每个对象类都定义了一组数据和一组方法。 数据用于表示对象的静态属性,是对象的状态信息。 方法,是允许施加于该类对象上的操作,是该类所有对 象共享的。
面向对象程序设计
class A { private: int a1,b1; public: void f1(int a,int b) { … } … } class B { … { main()
private: int a2,b2; public: void f2(int a,int b) { …
)
在类等级的不同层次中,相同的消息, 被不同类的对象接收,产生了不同的行为。 好处:增加软件系统的灵活性,减少了信息冗 余,提高了软件的可重用性和可扩充性。 在C++ 语言中,多态性是通过虚函数来实现 的。(动态联编)
基本概念
重载(Overloading)
有两种重载: 函数重载是指在同一作用域内的若干个参 数特征不同的函数可以使用相同的函数名字; 例: 运算符重载是指同一个运算符可以施加于 不同类型的操作数上面。 例: cout<<“2”;表示向屏幕输出字符串2 x<<2;表示将x中的二进制左移2位
protected:
};
被保护功能:
int getmark( );
面向结构程序设计
void f1(int a1,int b1) {… } void f2(int a2,int b2) {… } … void fn(int an,int bn) {…} main() { int x,y…m,n; … f1(x,y); … fn(m,n); … }
3. 面向对象建模的一般过程
领域问题
分析、抽取
概念模型
提取
系统需求
分析、设计
解决方案
第二章 面向对象技术与UML
2.2.2 面向对象分析的基本过程
定义用例 原 型 开 发
发现对象
定义属性与方法 详 细 说 明
原型(prototype)即把 系统主要功能和接口通 过快速开发制作为“软 件样机”,以可视化的 形式展现给用户,及时 征求用户意见,从而明 确无误地确定用户需求。 同时,原型也可用于征 求内部意见,作为分析 和设计的接口之一,可 方便于沟通。
建立结构与连接 划分主题 划分结构与连接 面向对象分析过程建模
第二章 面向对象技术与UML
2.2.3 面向对象分析的基本原则 (1)抽象原则:抓住对象的最本质,体现主要需求。 (2)分类原则:得到类。 (3)聚合原则:将问题分解,将对象分解。使复杂问题简单 化。 (4)关联原则:确定对象之间的联系。 (5)消息通信原则:对象之间的一种必须联系机制。
例:大小不同、位置不一和颜色不同的圆,可以定义为一 个Circle类。 例:中国人
基本概念
实例(Instance)
是由某个特定的类所描述的一个具体的对象。 “对象”这个术语,既可以指一个具体的对象, 也可以泛指一般的对象,“实例”这个术语, 必然是指一个具体的对象。
C++中,要定义一个对象或实例,必须先建 立一个这类对象的类。
减少代码冗余 通过协调性减少相互之间的接口和界面。
继承性的优点
能清晰体现相关类间的层次结构关系; 可大大增加代码的重用性;
通过增强一致性来减少模块间的接口和界面,
大大增加可维护性; 是自动传播代码的有利工具 在一般类基础上构造、建立、扩充新类的最 有效的手段。
基本概念
多态性(Polymorphism
基本概念
消息(Message) 对象之间相互请求相互协作的途径 一个消息由下述三部分组成: (1)接收消息的对象; (2)消息选择符(也称为消息名); (3)零个或多个变元。 例如 : MyCircle.Show(GREEN) ; 其中: MyCircle是接收消息的对象的名字 Show是消息选择符(即消息名) GREEN是消息的变元。
基本概念
封装性(Encapsulation)
封装即把数据和实现操作的代码集中起来放 在对象内部,外界通过对象提供的接口来使用它, 不需知道内部数据结构细节和实现操作的算法 。 实现封装的条件 : (1)有一个清楚的边界 (2)有确定的接口(用于接受用户发送的消息) (3)受保护的内部实现 封装的好处就是实现了信息隐藏,把对象的 实现细节对外界隐藏起来了,提高安全性。 在C++中,通过定义类来实现封装。
第二章 面向对象技术与UML
模型:对客观事物的模拟和抽象。对现实的简化。 模型具有表达明确、无歧义的优点。 模型具有将任务分解的特点,将复杂问题简单化。 建模是为了更好地理解正在开发的系统。因为不能完整 地理解一个复杂的系统,所以对它建模。
2. 建模四原则
(1)模型选择要正确。 (2)模型表达形式多种多样。 (3)模型要切合实际。体现本质和重要的细节。 (4)从多维视角建立模型。
第二章 面向对象技术与UML
第一节 面向对象技术概述 第二节 面向对象分析 第三节 面向对象设计(实现)
第2 章 面向对象技术与UML
第一节 面向对象技术概述 面向对象方法学的出发点和基本原则,是尽可能使 描述问题的问题空间(也称为问题域)与实现解法的解 空间(也称为求解域)在结构上尽可能一致。 客观世界的问题都是由客观世界中的实体及实体相 互间的关系构成的。我们把客观世界中的实体抽象 为问题域中的对象(object)。 面向对象的方法学可以用下列方程来概括:
数据
内部操作1 数据 内部操作2
对象特征举例
某人王东,男,1.80M,68kg,会修电器,可教
计算机课。描述如下: 1) 标识:王东 2) 状态:
性别: 男 身高: 1.80m 体重:68kg
3)
功能:
程
自身所承受的操作: 回答身高、体重、性别 施加于其它对象的操作: 修理电器、教计算机课
基本概念
继承(Inheritance)
指能够直接获得已有的性质和特征,而不必重 复定义它们。是子类自动地共享基类中定义的 数据和方法的机制。 例:家族关系
继承具有传递性,如果类C继承类B,类B继 承类A,则类C继承类A。一个类除了具有该类 所描述的性质外,还具有该类上层全部基类描 述的一切性质。
2.1.4 面向对象的开百度文库语言和开发工具
语言是语言,工具是工具。 (1)面向对象的建模语言。UML。由IBM Rational Rose 支持 (2)面向对象的程序设计语言。 C++, Basic—> VC,VB Pascal->Delphi Java->Eclipse
第二章 面向对象技术与UML
基本概念
属性(Attribute)
类中所定义的数据,它是对客观世界实 体所具有的性质的抽象。类的每个实例都 有自己特有的属性值。 例:圆类(半径、位置、颜色) 在C++ 语言中把属性称为数据成员。
基本概念
方法(Method)
对象所能执行的操作,它应用于类或被类中对象使用。 在C++中称为成员函数。通常,一个函数对应一个操 作,实现一个功能。 例:圆对象响应显示圆的消息 在Circle类中必须定义能够显示这个圆的方法, 即编写成员函数Show(int color)。
3) 可重用性好 有两种方法可以重复使用一个对象类:一种方法是创 建该类的实例,从而直接使用它;另一种方法是从它 派生出一个满足当前需要的新类。 4)较易开发大型软件产品 5)可维护性好
2.1.2 喷泉模型
“喷泉”这个词体现了面向对象软 件开发过程迭代和无缝的特性。 图中代表不同阶段的圆圈相互重 叠,这明确表示两个活动之间存 在交迭;而面向对象方法在概念 和表示方法上的一致性,保证了 在各项开发活动之间的无缝过渡, 事实上,用面向对象方法开发软 件时,在分析、设计和编码等项 开发活动之间并不存在明显的边 界。图中在一个阶段内的向下箭 头代表该阶段内的迭代(或求 精)。图中较小的圆圈代表维护, 圆圈较小象征着采用了面向对象 范型之后维护时间缩短了。
第二章 面向对象技术与UML
2.2.1 建模的目的
1. 建模的重要性 引例1:盖个简易狗窝。可以直接实现。 引例2:盖家庭住房。做好建设蓝图。 引例3:召开班级会议。简单筹划即可。 引例4:召开全校大会。成立一个筹备小组。 如果你要做一件事情规模较大,比较复杂, 那么首先你要做好规划。 这个规划的其中一个最终要的任务就是将实 际问题高度抽象化->抓住主要方面->建模
2.1.1 面向对象方法学的优点
1)与人类习惯的思维方法一致 面向对象的软件技术以对象(object)为核心,用这种 技术开发出的软件系统由对象组成。 对象是对现实世界实体的正确抽象,它是由描述内部 状态表示静态属性的数据,以及可以对这些数据 施加的操作(表示对象的动态行为),封装在一起 所构成的统一体。对象之间通过传递消息互相联 系,以模拟现实世界中不同事物彼此之间的联系。 2) 稳定性好 由于现实世界中的实体是相对稳定的,因此,以对象 为中心构造的软件系统也是比较稳定的。
STUDENT对象类举例
class student { private:
私有功能:
char *name; int mark; char *major ; void changemark();
public :
公有功能:
char *getname( ); char *getmajor():
第二节 面向对象分析
本节要求了解面向对象分析的基本过程和基本原则 OOA: Object-oriented Analysis . 指利用面向对象的概念和方法构建软 件模型。 面向对象分析的基本过程 理解 表达
验证
对理解和表达进 行校验,以达到 理想效果。
需求
建立模型
在面向对象分析中,主要建立对象模型,动态模型和功能模型。 对象模型是最基本最重要的模型。