第十章:面向对象分析(2)

2023-05-16

3、泛化关系

泛化关系和类找那个的泛化概念是一样的,于用例继承父用例的行为和含义,还可以增加或覆盖父用例的行为,子用例可以出现在任何父用例出现的位置(父和子均有具体的实例) 也可以重载它,用例之间的泛化关系表示意图参见图10.3

通过包含、扩展和泛化关系,描述的棋牌馆等管理系统,分析示例图参见10.4

 

4、使用关系

像一个函数调用,以这种方式被使用的用例称为抽象用例,因为它不能单独存在而必须被其他使用用例使用。图10.5用例之间的关系示意图

 

10.3建立对象模型

对象模型是面向对象建模中最关键的一个模型,它的作用是描述系统的静态结构、包括构成系统的类和对象,它们的属性和操作及它们之间的关系,对象模型通常通过类图、类的实例(即对象) 图和它们之间的关系(关联、继承、聚集和组合等)表示

大型系统的对象模型通常由如图10.6所示、5个层次组成

主题是指导读者理解大型复杂模型的一种机制,即通过划分主题把一个大型、复杂的对象模型分解成几个不同的概念范畴

5个层次对应建立对象模型的5项活动,找出类与对象、识别结构、识别主题、定义属性、定义服务、在概念上面向对象分析大体上按照下列顺序进行:寻找类与对象\rightarrow识别结构\rightarrow识别主题\rightarrow定义属性\rightarrow建立动态模型\rightarrow建立功能模型\rightarrow定义服务

对象模型的上述5项活动完全没必要顺序完成,也不需要彻底完成一项工作以后在开始另外一项工作。

10.3.1确定类和对象

面向对象分析的第一个层次主要是识别类和对象,类和对象是对与应用有关的概念的抽象,实体操作中首先找出候选类和对象,然后进行筛选,通过区分实体类、边界类和控制类来检查对象模型的完整性,候选的类和对象包括:可感知的物理实体,如汽车、飞机等;人或组织的角色,如教科办、学生等;应该记忆的事件:如球赛、演出等。

两个或多个事件的相互作用通常具有交易或接触性质,如教学、供应等更简单直接的一种非正式分析方法是将需求描述中的名词作为类和对象的候选者,然后通过筛选去掉不不确定或无关的类和对象。

筛选过程主要依据下列标准来删除不正确或不必须的类和对象

①冗余:如果两个类表达同样的信息,则应该合并这两个对象的类或说明

②无关:系统指需要包含与本系统密切相关的类或对象

③笼统:需求分析中除了明确的名词之外,还包含了一些笼统、泛指的名词,分析系统需求,确定更明确描述的前提下,应该把笼统的名词类或对象去掉。

④属性:某个类只有一个属性,可以考虑将它们作为另一个类的属性

⑤操作:应该根据本系统的要求,正确决定把它们作为类还是类中的操作

⑥实现:分析阶段不应该过早考虑系统的实现问题,应该去掉只和实现有关的候选类和对象

10.3.2确定关联

关联是指两个或多个对象之间的相互依赖,相互作用的系统分析,确定对象类之间的关系。

大多数关联可以通过直接 提取需求陈述中的动词或动词词组得到,还需要进一步分析需求分析中隐含的关联。

标识关联的启发式规则有:

①从需求描述中查找动词或动词短语,识别动作的主体和客体,从角色寻找关联

②准确地命名关联和角色

③尽量使用常用的修饰词标识名字空间和关键属性

④应删除派生关联,即可由其他关联导出的关联

⑤在组关联被确定下来之前,先不必考虑实例之间的重性。

⑥为适用于不同的关联,必要时要分解以前确定的类

⑦分析过程中及时补上遗漏的关联

类和对象之间的关联关系可以分为继承,实现、依赖、关联、聚集和组合关系

10.3.3确定属性

属性是对前面已识别的类和对象做进一步的说明,属性通常用名词词组表示,属性的确定既与问题域有关,也与目标系统的任务有关。类的属性所描述的是状态信息,每个实例(对象)的属性值表达该实例(对象)的状态值

标识属性的方法和策略:只考虑与具体应用直接相关的属性,不考虑那些超出所有解决的问题范围的属性,先找出最重要的属性,在逐渐把其余属性增添进去。

属性的标识也有一些启发式规则:每个对象至少需要包含一个编号属性,如_ID;系统的所有存储数据必须定义为属性,导出属性应该略去;描述对象的外部不可见状态的分析熟悉,应该从分析模型中删除掉,最后考虑取值范围,极限值、缺省值、建立和存取权限,精确度是否会受到其他属性值得影响等。

10.3.4建立对象类图

在软件开发不同阶段都会用到类图,但这些类图表示了不同层次的抽象,在分析阶段:类图主要研究领域概念,在设计极端、类图主要描述类与类之间的接口关系,在实现阶段类图描述软件系统中类的实现,因此在不同阶段类图由不同的层次。

3个不同层次的类图描述参见图10.8

建立类图的原则如下:

①简化的原则:在项目点初始阶段不要使用所有完备的符号,主要能够有效表达语义就可以。

②分层理解的原则:项目开发的不同阶段,使用不同层次的类图进行表达,便于理解,不要一开始就陷入实现的细节中去。

③关注关键点原则:不要试图为每个事物都画完善的模型,应该把精力放在关键点上。

类图建模:就是要表达类与类之间的关系,以便于人们理解系统的静态逻辑,通常需要对两个方面建模:对简单协作建模和对数据库模式建模,图10.9对象图实例

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第十章:面向对象分析(2) 的相关文章

随机推荐

  • 瑞士移位赛赛制解释

    这种比赛是用瑞士轮转法实施的积分编排制比赛 当参赛队数较多 xff0c 而比赛时间又不很充裕时 xff0c 瑞士移位法是理想的比赛方法 比赛分开闭室 各队都给予编号 xff0c 在整个比赛过程中各队的编号不动 第1轮对阵一般安排强队对弱队
  • Springboot:Spring Assistant创建项目框架

    Springboot Spring Assistant创建项目框架 Springboot自动配置项目流程步骤如下所示 第一步 第二步 第三步 第四步
  • vnc server干什么用的,简单介绍vnc server是干什么用的

    VNC Server 是一般 Linux 发行版都会附带的 vnc服务器软件 vncserver 是一个为了满足分布式用户共享服务器上面的资源 xff0c 而在服务器上开启的一项服务 xff0c 对应的客户端软件为vncviewer xff
  • GITHUB下载慢解决办法-插件解决

    在油猴上搜索此插件 或者直接导入插件代码如下 61 61 UserScript 61 61 64 name Github 增强 高速下载 64 name zh CN Github 增强 高速下载 64 name zh TW Github 增
  • OSPF路由协议配置实验

    实验目的 xff1a 理解OSPF xff1b 掌握OSPF的配置方法 xff1b 掌握查看OSPF协议的相关信息 实验器材 xff1a 路由器及PC机 xff0c 双绞线 实验内容 xff1a 本实验通过在路由器上配置OSPF协议 xff
  • linux 22.04版本ubuntu换源

    1 备份原始源文件 执行下面命令 xff0c 将原来的源文件备份保存 sudo cp etc apt sources list etc apt sources list bak 2 修改源文件sources list 打开源文件 xff0c
  • jquery dialog 弹出 ajax加载数据

    我之前就是想实现一个弹框 xff0c 在弹框的时候用ajax 动态加载要展示的内容 xff0c 这个地方实现起来并不难 xff0c 但是在实现的时候遇到了一个坑 页面 xff1a lt div id 61 34 logDiv 34 styl
  • 解决STM32新增加函数出现Undefined symbol HAL_ADC_Init (referred from main.o). 问题

    最近在开发STM32L0xx系列产品的ADC采集项目 xff0c 在老工程上添加库函数 xff0c stm32l0xx hal adc h stm32l0xx hal adc c函数 进行ADC初始化 xff0c 编译不通过出现 xff0c
  • GET,POST,PUT,DELETE,OPTIONS等请求方式简单总结

    之前做的java web项目 xff0c 基本上只使用get和post的请求方式 xff0c 但是现在新项目额外增加了put xff0c delete xff0c 查了点资料 xff0c 做个简单的总结 1 GET get请求是用来获取数据
  • IOS TableView Cell重用机制及TableView常用Code

    写的太好了 xff0c 多谢楼主的无私分享 文章来自 xff1a http heidianfeng blog 163 com blog static 6184345620121114104552518 创建UITableViewContro
  • 编译Linux驱动程序

    基于Ubuntu 12 10 xff0c 编译Linux驱动程序 1 准备linux内核源码 此时 xff0c 我要编译的驱动是基于Ubuntu 12 10内核的 xff0c 所以我下载的是其对应的内核源码包 xff1a linux 3 5
  • 卸载windows10子系统卸载linux

    参考地址 xff1a https docs microsoft com en us windows wsl wsl config 查看所有已经安装的分发版本 xff1a wsl list all 查看正在运行的分发版本 xff1a wsl
  • github镜像站

    github镜像站 xff1a https hub fastgit org GitHub 在国内经常会出现无法访问的情况 xff0c 下面分享几个 GitHub 镜像站供大家使用 xff01 全局加速 可直接访问站点 xff0c 查看代码等
  • vnc连接linux失败,vnc连接linux失败解决办法

    在日常工作学习中 xff0c 经常会使用到vnc连接 xff0c 那有小伙伴知道如何进行vnc连接linux吗 xff1f 当vnc连接linux失败又该如何解决呢 xff1f 之前有简单介绍过如何实现vnc连接linux 那接下来让我们一
  • 域名是如何关联到CDN的

    用户在访问一个域名的时候 xff0c 网络中是怎么知道这个域名到底是配置在哪一个CDN厂商的呢 xff1f 笔者以test1 huiziguoxueshe com为例 xff0c 来描述下具体的过程 xff0c 如下所示 xff1a ste
  • 第五章:软件详细设计

    真是应了那句 xff1a 白天游四方 晚上点灯补裤裆 捂脸 xff09 xff0c 孩子睡了夜深人静了 我才是开始我的小笔记整理工作 详细设计是软件设计的第二阶段 xff0c 这一阶段的工作 xff0c 就是要对系统中的每个模块给出足够详细
  • 第7章 软件测试(1)

    今天是个开心的日子 xff0c 具体为啥开心我知道你懂得 继续我的龟速学习小笔记 它来了它来了 xff0c 你说它很简单 xff0c 当我看到此章的一部分内容后发现了原来学霸和学渣差别就是如此大 xff08 捂脸 xff09 xff0c 今
  • 第7章 软件测试(3)

    一晃3天没有学习了 xff0c 昨天的阅读量创立了一个新高 xff0c 内心还是很欢喜的 7 4 2黑盒技术 黑盒技术着重测试软件功能 xff0c 需重点研究需求说明和总体设计中有关程序功能输入 输出之间的关系等信息 xff0c 从而与测试
  • 第七章 软件测试(此章完结)

    春乏秋困 xff0c 一个早上哈气连天 脖子酸 腰痛 xff08 捂脸 xff09 近期叫醒我的不是闹钟也不是梦想 xff0c 而是凌晨4点和6点广播大喇叭喊居民做核酸的声音 xff0c 还是别的小区的 xff08 再次捂脸 xff09 也
  • 第十章:面向对象分析(2)

    3 泛化关系 泛化关系和类找那个的泛化概念是一样的 xff0c 于用例继承父用例的行为和含义 xff0c 还可以增加或覆盖父用例的行为 xff0c 子用例可以出现在任何父用例出现的位置 xff08 父和子均有具体的实例 xff09 也可以重