第4章 4.1--4.4 面向对象分析与对象模型

合集下载

面向对象模型

面向对象模型

面向对象模型面向对象模型面向对象编程是一种软件编码范式,它将程序设计视为对象的组合,其中每个对象都是一组数据和一组操作这些数据的函数或方法。

面向对象程序设计提供了许多优点,例如代码复用,更好的代码管理,更好的安全性,程序可扩展性和可维护性等。

在面向对象编程中,最基本的概念是一个类。

一个类是一个面向对象编程中的构造,它描述了一个对象的属性和方法。

一个对象是特定类的实例,它继承了该类的所有方法和属性。

每个类都可以有一个或多个方法,在这些方法中可以实现所需的功能。

方法可以以任何方式执行操作,例如向类的属性添加,从类的属性中删除,或返回值给调用程序。

一个面向对象模型的设计必须包含一个类图,描述了所有的类及它们的关系。

在一个类图中,你可以使用类名、属性、方法、继承和依赖关系来描述对象之间的相互作用。

类图提供了一个方便的方式来清晰地表达面向对象模型的设计。

在一个典型的面向对象模型中,有许多重要的类可以使用。

其中一些包括:1.基本数据类型类:提供基本数据类型,例如int和float。

2.字符串类:提供基本字符串操作的方法。

3.日期和时间类:提供有关日期和时间的信息、计算和操作。

4.文件和输入输出类:提供操作文件和输入输出流的方法。

5.集合类:提供处理集合数据结构的方法。

6.图形用户界面类:提供处理窗口、菜单和按钮等用户界面对象的方法。

7.网络类:提供与网络通信相关的方法。

每个类都可以包含属性和方法。

属性是一个类的数据值,可以是一个整数、浮点数、字符串、对象或其他类型。

方法是用来执行操作的程序代码块。

一个类中的所有方法都可以定义在该类文件的一个单独的段中,在类的定义之后。

面向对象编程的一个重要概念是继承。

继承是指一个类继承了另一个类的属性和方法。

当一个类继承另一个类时,它可以访问和使用该类的所有属性和方法。

这使得代码更容易复用,并允许程序员在一个类中创建新方法,而无需在每个类中重复代码。

另一个重要概念是多态性。

第4章-C++面向对象程序设计(Visual C++ 2010版)-温秀梅-清华大学出版社

第4章-C++面向对象程序设计(Visual C++ 2010版)-温秀梅-清华大学出版社
样也破C++坏中了的类友的元封为装“特封性装,”这这即堵是不友透明元的的墙缺开点了,一在个
现小在孔C,P外U速界度可越以来通越过快这个的小今孔天窥我视们类并内不部推的荐秘使密用。它, 但它作为C++ 一个必要的知识点,一个完整的组成部 分,我友元们分还为是友需元要函讨数论、一友下元的成。员和友元类三种。
{ cout<<"the center of the circle is : "
<<c1.center.x <<","<<c1.center.y ;
cout<<" the radius is : "<<c1.radius<<endl;
}
关于友元函数的说明:
5. 成员函数和友元函数具有同等的特权(100% 的), 主要的区别在于调用形式不同。友元函数的调用形式与普
4.2 友元函数
在类中声明一个普通函数,在前面加上friend修饰, 那么这个普通函数就成了该类的友元函数,可以访问该 类的一切成员 。
class Circle { struct point{ int x,y;}center;
int radius; public:
…… double getArea(); double getDistance();
6.友元综函合数举在例类1:中在说ci明rc,le但类其中名使字用的友作元用域在类外,
作元请用说记域明的可住开以:始代点替友在该元说函函明数数点的函,本数结身说束是明点一和。个类如名果普相在通同说函明。数友因,元此时,由给友类
授权,出了使该它函成数为的类函的数体友代元码函,数则,它是且内仅联是的该。类的友元。而 一个普通7.函一数个函本数身可无以法成把为自多己个定类的义友为元友函元数函,数因,而可因以为访这 样做无问多意个义类,的同成时员也。 违背了数据隐藏原则。

Java面向对象程序设计第4章_类与对象

Java面向对象程序设计第4章_类与对象
例4722共52页46static关键字用static修饰的变量类变量没有用static修饰的变量实例变量方法声明中用static修饰的方法类方法方法声明中不用static修饰的方法实例方法23共52页461实例变量和类变量的区别如果类中有类变量那么所有对象的这个类变量都分配给相同的一处内存改变其中一个对象的这个类变量会影响其它对象的这个类变量
值的级别不可以高于该参数的级别 。
例4-4
public class Rect { //负责创建矩形对象的类 double width,height,area; void setWidth(double width) { if(width>0){ this.width=width; }} void setHeight(double height) { if(height>0){ this.height=height; } } double getWidth(){ return width; } double getHeight(){ return height; } double getArea(){ area=width*height; return area; }}
1.对成员变量的操作只能放在方法中,方 法可以对成员变量和该方法体中声明的局部变 量进行操作。 2.需要注意的是:实例方法既能对类变量操 作也能对实例变量操作,而类方法只能对类变 量进行操作。 3.一个类中的方法可以互相调用,实例方法 可以调用该类中的其它方法;类中的类方法只 能调用该类的类方法,不能调用实例方法。
给类命名时,遵守下列编程风格(这不是语法要求 的,但应当遵守):
◆ 1.如果类名使用拉丁字母,那么名字的首字母使用大写字母, 如。 2.类名最好容易识别、见名知意。当类名由几个“单词”复 合而成时,每个单词的首字母使用大写。

第4章__面向对象需求分析

第4章__面向对象需求分析

• 在确定事件轨迹后,所有事件可以汇总成输入对象的事件 集和从对象输出的事件集。事件流图就是用于标记所有流入和 流出某对象的事件。

例:打印机对象—行为模型示例。
• 状态转换图表示了打印机的状态转换。图中的每个箭头代 表了从对象的一个状态到另一个状态的转变,箭头上标记的是 触发转变的事件。有时需要增加保护条件来满足对象的变迁, 例如,上图中打印机在故障状态时,故障修复事件只有在打印 队列不破坏的情况下才能使打印机进入打印状态,否则即使修 复也只能进入就绪状态。
工人
1..*
经理 管理
(1)关联
•限定关联 • 限定关联通常用在一对多或多对多的关联关系中,可以把 模型中的重数从一对多变成一对一,或从多对多简化成多对一。 在类图中把限定词放在关联关系末端的一个小方框内。 • 例如,某操作系统中一个目录下有许多文件,一个文件仅 属于一个目录,在一个目录内文件名确定了惟一一个文件。利 用限定词“文件名”表示了目录与文件之间的关系,可见,利 用限定词把一对多关系简化成了一对一关系。
(1)关联
•关联类 • 为了说明关联的性质可能需要一些附加信息。可以引入 一个关联类来记录这些信息。关联类也有属性、操作和其他 关联。
个人
0..*
授权
0..*
个人
授权 优先权 特权
用户和工作站的授权关联的关联类
3.对象-关系图
• (2)聚集
• 聚集也称为聚合,是关联的特例。聚集表示一类对象与 另一类对象之间的关系,是整体与部分的关系。
• 一.面向对象分析模型的组成结构 • 二.面向对象分析模型描述工具 • 三.面向对象分析的基本过程
• 四. 面向对象分析方法
• 五. 小结
一.面向对象分析模型的组成结构

面向对象的概念面向对象建模面向对象分析与模型化面向对象

面向对象的概念面向对象建模面向对象分析与模型化面向对象

打电话者拿起电话受话器 电话忙音开始 打电话者拨数字(8) 电话忙音结束 打电话者拨数字(2) ....... 打电话者拨数字(3) 接电话者的电话开始振铃 铃声在打电话者的电话上传出 接电话者回答 接电话者的电话停止振铃 铃声在打电话者的电话中消失 通电话 .........
状态图与事件追踪图的关系
揿下鼠标按钮(按钮、位置) 拿起电话受话器
数字拨号(数字)
事件追踪图
事件追踪图侧重于说明发生于系统 执行过程中的一个特定“场景”。
场景也叫做脚本,是完成系统某个 功能的一个事件序列。
场景通常起始于一个系统外部的输 入事件,结束于一个系统外部的输 出事件,它可以包括发生在这个期 间的系统所有的内部事件。
类是一组具有相同数据结构和相同 操作的对象的集合。
类的定义包括一组数据属性和在数 据上的一组合法操作。
类定义可以视为一个具有类似特性 与共同行为的对象的模板,可用来 产生对象。
在一个类中,每个对象都是类的实 例 (Instance),它们都可使用类中 提供的函数。
继承 (Inheritance)
面向对象方法学的要点(2)
对象彼此之间仅能通过传递消息互相联系 面向对象的方法学可以用下列方程来概括:
OO=objects+classes+inheritance+ communication with messages
如果一个软件系统是使用这样 4 个概念设计和实现的,则我们认 为这个软件系统是面向对象的。
这个新的子集合可以认为是既存类 的一个特殊化。
面向对象建模
所谓模型,就是为了理解事物而对事物作出 的一种抽象,是对事物的一种无歧义的书面 描述。

软件工程实用案例 第4章 结构化需求分析

软件工程实用案例 第4章 结构化需求分析
2 项目前景 2.1 前景概述 2.2 主要特性
3项目范围 3.1 第一版范围 3.2 后续版本范围 3.3 限制与排除
4项目环境 4.1 操作环境 4.2 涉众 4.3 项目属性
词汇表 参考资料 附录
4.3 需求获取
4.3.3 选择信息的来源
• 1. 涉众
• 包括用户、客户、领域专家、用户替代源(市场人员、销售人员) 等。
4.4 需求分析
4.4.1 过程建模
4.4.1.1 数据流图
3. 分层结构 (3)N层图
图4-12 功能分解示意图
4.4 需求分析
4.4.1 过程建模
4.4.1.1 数据流图
3. 分层结构 (3)N层图
图4-13 食物订货系统的1层图
4.4 需求分析
4.4.1 过程建模
4.4.1.2 微规格说明
正式规定文档所需具有的条件或能力。
(3) 对(1)或(2)所描述的条件或能力的文档化表述。 其中,(1)是从用户角度定义的,(2)是从开发人员、
系统的角度定义的。
4.1 需 求
4.1.2 需求的层次
需求通常体现为三个层次:业务需求、用户需求和系 统需求。
4.1 需 求
4.1.2 需求的层次
4.3 需求获取
4.3.2 定义项目前景和范围
• 1.明确问题
P1 决策者:生产的废品过多。
• 2.发现业务需求
BR1:提供销售订单的准确性,减少因此而产生废品。
BR2:提供销售订单的准确性,在使用后3个月内,减少50%因此而产生 的废品。
4.3 需求获取
4.3.2 定义项目前景和范围
• 3.定义解决方案及系统特性
4.3 需求获取
4.3.4 需求获取的方法

面向对象分析与建模

面向对象分析与建模

3
面向对象的基本概念
❖类
类是对象的抽象。一个类定义了大体上相似的一组对象。 类是对象的定义和描述。一个类所包含的方法和数据是 用来描述一组对象的共同行为和属性。通过类来抽象一 个个对象的共同特点、描述一个个对象的相似属性,存 贮一个个对象的一致行为,是面向对象技术最重要的特 征。从形式和定义说明上看,类很像传统程序设计中的 结构,但类同时包含了传统程序设计中数据定义和功能 实现的构造。
2020/7/11
4
面向对象的基本概念
❖ 消息
消息是对象之间的通信机制,是访问类中所 定义的行为的手段。当一个消息发送给某一 个对象时,即要求该对象产生某些行为。所 要求产生的行为包含在发送的消息中。对象 接收到消息后,给予解释并产生响应。这种 通信过程叫消息传递(Message Passing)。
2020/7/11
6
面向对象的基本概念
❖ 继承性
当两个类产生继承关系后,原有的类被称为
父类(Parent Class),新定义的类被称作子 类(Children Class)。若子类只继承一个父类, 则称为“单重继承”(Single Inheritance); 若一个子类从继承多个父类,则称为“多重 继承”(Multiple Inheritance)。继承性是面 向对象语言区别于与其它语言最主要的特点。
的开发过程中,往往采用统一过程(RUP)
2020作/7/11为过程管理的模型。
11
面向对象分析的任务
面向对象分析(Object-Oriented Analysis, OOA)是在系统开发过程中完成了系统业务 调查以后,按照面向对象的思想来分析问题。 面向对象的分析是面向对象的系统开发的重 要环节。
2020/7/11

第4讲面向对象的动态模型和功能模型

第4讲面向对象的动态模型和功能模型

第4讲面向对象的动态模型和功能模型面向对象的动态模型和功能模型主要是指面向对象程序设计中的两个重要概念,类和对象的行为和状态。

通过动态模型和功能模型,我们可以更好地理解面向对象编程,并进行对象的管理和调用。

面向对象的动态模型是指对象在运行时的行为和状态的特征描述。

在面向对象编程中,类是对对象进行描述的模板,而对象则是由类创建出来的实例。

类定义了对象可以执行的方法和拥有的属性,而对象则具有具体的属性值和能够执行的方法。

动态模型描述了对象在运行时的行为和状态,即对象能够执行的方法和当前的属性值。

对象的行为主要通过方法来实现。

方法是类中的行为定义,描述了对象能够完成的具体操作。

通过调用对象的方法,我们可以实现对对象行为的控制和管理。

例如,一个类可能定义了一个"加法"方法,然后通过创建对象并调用这个方法,我们就可以实现加法操作。

对象的状态是描述对象当前属性值的特征。

状态由对象的属性组成,属性是类中用于描述对象属性的变量。

通过改变对象的属性值,我们可以改变对象的状态。

例如,一个"人"类可能有一个"年龄"属性,我们可以创建对象并将年龄属性设置为30,然后通过改变属性值,我们可以改变对象的年龄状态。

面向对象的功能模型是指对象在运行时的组织和调用关系。

在面向对象编程中,对象之间可以通过类之间的关系进行组织和调用。

常见的类之间的关系包括继承、聚合和关联。

继承关系表示一个类可以继承另一个类的方法和属性,并可根据需要进行重写或添加新的方法和属性。

聚合和关联关系表示一个类可以包含一个或多个其他类的对象作为属性。

功能模型描述了对象之间的组织和调用关系。

通过功能模型,我们可以更好地组织和管理对象,并实现对象之间的协作和通信。

例如,我们可以通过组合多个对象来实现一个复杂的系统,对象之间可以相互调用对方的方法来实现系统的功能。

总结起来,面向对象的动态模型和功能模型是面向对象程序设计中两个重要的概念。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10

迭代
面向对象的分析过程
用户、客 户 开发者 管理者 领域知识 专家知识 现实世界经验 OOA 分析 需求 分析
过程 什么是业务过程? (活动图)
问题描述(用例图)
角色是什么?
建立 模型
对象(概念)模型:初始类图 动态模型(职责分配) 类图
11
图 4-2 OO的分析过程
4.4 对象模型—类图
在线事物处理 人的角色 包含其他事物的包容器 被包含在包容器内的事物 系统外部其他系统
销售、支付、预定
在线销售项 出纳员 商店、银行识别号 销售商品项 信用卡授权系统 飞行员 飞机 乘客 空中交通控制系统
20
事物类目录
抽象的名词性概念 组织 事件
规划和策略 目录 财政收支、工作情况、 合同等记录 金融工具和服务机构 手册、书籍
(4) 去掉无用的类和对象 * 去掉冗余的类和对象 * 不考虑与本问题无关的类和对象 * 不考虑和实现有关的类和对象 * 去掉模糊概括的类 * 不要把概念当作属性 火车订票系统中的目的地是车次的属性还是概念? * 区分系统分析员观察世界所得到的领域中的真实概念 (是对问题内事物的描述)和软件设计人员描述软件实体 所使用的概念,是从不同视觉出发而得到的。

对象模型是用类图表示的静态结构视图。 对象模型是面向对象分析阶段建立的概念模型, 是面向对象设计和实现的基础模型。 类图描述类和类之间关系的图。 类图技术是OO方法的核心,类图是定义其他图 的基础。

12
4.4.1 类图(class diagram)
1)类的抽象层次(由Steve Cook和John Daniels引入的)
外部系统
LoginForm 注册用户进行登录的操作界面 BrowseForm 注册用户进行查询浏览的操作界面 MakeReservationForm 普通读者预订图书的操作界面
边界类关注参与者与用例之间交互的信息或响应的事件, 注 不描述窗口组件等界面的组成元素。 意 若两个用例同时与一个参与者交互,可共用一个边界类。
Sale date time SaleDatabase 软件制品,不是 概念的一部分
真实世界中的 概念(记号)
Sale 软件类, date 不是概念 Time 的一部分 Print()
26
确定类和对象
3) UML可描述三个主要的类
(1) 边界类(boundary)
用户 例:MiniLibray 边界类
Sale SalesDatabase date time 软件制品 真实世界中的概念 (实体,实体信息)

Sale 属性为 date 成员变量 Time Print() 操作为 软件类 成员函数
概念模型展示: 一组概念,
概念的属性, 概念间的关联 在UML中,一个概念模型是用一静态结构图 (static structure diagram)来描述的。
身 份 证 号
ISA
地址 员工
ISA
工资
为之 工作
电话号
名称 公司 组成 部门 生产 产品
地址
主 要 产 品
职务
管理
工人 参加 项目 项目名 预 算
经理 主持
部门名
优先级
产品名
成本
质量
18
图 4-4 实体关系图
对象关系图(类图) 员工
姓名 地址 身份证号 工资 1..* 为之工作 1
公司
姓名 地址 电话号 主要产品 雇用 解雇
定义协作者
当类没有足够的信息来履行职责时就需要协作, 协作必须发生在一个类需要信息的时候。
确定协作时考虑的问题

对于任何协作,总是至少有一个发起者。 有时协作者完成工作的主要部分。 协作应是直接的。 可能会产生新的职责来实现协作。
23
注册讨论班的 CRC卡
安全登陆(UI) **参阅原型** 请求学生确认信息 成 绩 单 (UI) **参阅原型** 获得学生信息 获得学生参加讨论班 的信息 确定平均分数 输出成绩 学生 讨论班 教授 注册记录
类名 职责 协作者 从用例出发找出类
类名:是一个名词或一个短语 类的职责:是类知道并要完成(“做”)的事情
知道型(knowing)职责
知道自己私有的封装了的数据 知道自己相关联的对象信息 知道自己派生或计算出来的事物
22
做(doing)职责
自己完成某件任务 发起其他对象执行动作 控制和协调其他对象内活动
15
4.4.1 类图
实现对象,与现实世界实体无关的对象,当需求发 生变化时,实现对象要发生变化。 如提供错误恢复的交易日志。 (3) 主动对象(Active Object)和 被动对象(Passive Object) 主动对象可以改变自身状态,如定时器和时钟。 可用进程或线程来实现。 被动对象只有在接受到消息时,状态可以改变。 如当银行账户接收到更新账户余额的消息时,发生 了改变。 大多数对象为被动对象。
部门名
职务
工人
1..* 1..* 名称 预算 优先级
经理
1 1..*
部门 产品
1..*
项目
产品名 成本 质量 图 4-5 对象关系图
19
(2) 根据事物目录列表找出对象
事物类目录
物理的或实在的对象 地点 规格说明、设计或事物描述 产品规则说明 商店
事例
销售点终端(post) 飞机 航班描述 机场
事务
16
4.4.1 类图 2) 确定类和对象的方法
(1) 实体 —— 对象法 ERD( Entity Relationship Diagrams) ORD( Object Relationship Diagrams) 转换规则: 简单的实体成为一个对象; 复杂的实体分解为几个对象。
17
实体关系图 姓名
第4章 面向对象的分析与建模
内容
4.1 4.2 4.3 4.4 4.5 4.6 什么是OOA ?为何需要OOA? 面向对象分析方法简介 面向对象的分析原则和过程 对象模型—类图 动态模型 模型的验证 掌握:建立两种模型的过程
1
SE的任务

1986年,Frederick Brooks在 《No Silver Bullet》中论述, 所有软件活动包括: 根本任务—打造构成抽象软件实体的 复杂概念结构; 次要任务—使用编程语言表达这些抽 象实体,并在时间和空间 内将它们映射成机器语言。 建模过程: 识别概念及概念之间的关系,用概念、 关系等基本模型元素描述系统的结构、行 为等,并以规范化的、形象化的方式将其 表达出来。

把过程抽象 (procedural abstraction) 与数据抽象 (data abstraction)结合在一起. 对象(object):对客观事物的抽象. 类(class):是一种数据抽象,即是对一组对象的抽象. 包含作用于对象上的过程或方法抽象. 超类(super class)是一组子类的抽象. 方法(method):是隐藏实现过程抽象. 操作(operation):是一组方法的抽象. 属性(attribute)和关联(association): 是实现它们基本实例变量的抽象.
Sale date time 一个Sale代表了一次购物交 易的事件,它有日期和时间 概念应 Sale 1 Sale 3 Sale 2 用的一 组实例 Sale 4
概念记号
概念的内涵
概念的外延
4

概念模型(conceptual model):
是问题域中概念的描述,强调领域中的概念, 而不是软件实体。
概念层
(Conceptual)
类图描述应用 领域中的概念, 一般地这些概 念和类有自然 说明层 的联系,但两 (Specification) 者并没有直接 类图描述软件的 的映射关系。 接口部分,而不是 软件实现部分。
实现层 (Implementation) 类图揭示实现细节。
13
2)类图(class diagram)组成
Booch方法
2) Booch方法 (method of object analysis and design,1994)
7
3) Coad & yourdon 方法 (OOA/OOD,1991)
类和对象层 属性层 结构层 主题层 服务层
Coad&yourdon 模型
问题 数据 人机 任务 论域 管理 交互 管理

类 关联关系 依赖关系 泛化关系 接口和实现关系
Class2
注 解 Class1
Class4 类4 实现接口 Interface 依赖接口 Class5
Class3
# 类图可以包含注解和约束。
# 类图可出现在包中。 3)建立类图步骤 确定类和对象 确定属性
图 4-3 类图组成
名称 讨论班编号 费用 等待列表 注册学生 导师 添加学生 撤销学生
学生 学生
姓名 地址 电话 邮件 平均分 验证确定信息 提供参加讨论班类表
教授
注 册 记 录
注册记录
获得的分数 平均截至日期 最终成绩 学生 讨论班
教授
姓名 地址 电话 邮件 薪水 提供信息 指导的讨论班
讨 论 班
25
确定类和对象
第3章己给出需求陈述和 用例及文字描述 注册讨论班(UI) **参阅原型** 请求确定学生信息 学生 启用讨论班搜索信息 讨论班 教授 显示讨论班列表 显示讨论班费用 显示教授信息 学生(Actor) 提供自己的信息 注册讨论班 请求注册讨论班 成绩单 请求成绩单
24
学生
注册讨论班的 CRC卡
讨论班
主要是建立实体关系图ERD,实体数据流图 EDFD。 6) OOSE方法 [Jacobson ,1992] (Object oriented software engineering)
相关文档
最新文档