软件工程 第三章:类图
第三章:类图
概念
- 类图的概念:类图是描述类、接口以及它们之间关系的图,它显示了系统中各个类的静态结构,是一种静态模型。
- 分类可以有效地使复杂问题简化。建立类模型的过程,是把现实世界中与问题有关的各种对象及其相互关系进行抽象和分类的过程。
类图的组成
2类元素(接口、类),4种关系
对象:是人们对某个事物的一种抽象描述。对象的基本特征可以归纳为对象的属性和行为两类。
类:类是指对一组具有相同特征的对象的抽象描述;任何对象都是某个类的实例。
关联关系:
- 概念:关联用来表示来表示两个(或多个)类的对象之间的结构关系,它在代码中表现为一个类以属性的形式包含对另一个类的一个或多个对象的引用。
- 表示:用一条无向线段表示,是一种双向关系。例如客户和订单的关联:从客户看,订单是他提交的;从订单看,它有一个客户。用一条有向线段表示,是一种单向关系。
- 名称:关联的名称表达了关联的内容,一般使用动宾结构短语。关联的名称仅有语义作用,不转换为代码
- 可见性:用可见性修饰角色名称,以说明该角色名称可以在哪些范围内被访问。
- 泛化关系:
- 概念:泛化关系(继承关系)定义类和包之间的一般元素和特殊元素之间的分类关系。泛化也称之为继承或派生。
- 区别:
泛化(Generalization): 抽象化
特化(Specialization): 实例化
- 依赖关系:
- 概念:依赖表示一个类以某种形式依赖于其他类。当两个类处于依赖关系中时,其中一个类的改变可能会影响另一个类。
- 在程序代码中,依赖关系意味着一个类的对象出现在另一个类的操作当中。常见的有两种情况:一个类将另一个类的对象作为自己某个操作的参数(形参),或者是操作的局部变量。
区别:
- 依赖关系VS关联关系
- 从符号上
- 从语义上:
当一个类的实例与另一个类的一些特定实例存在固定的对应关系时,这两个系统之间为关联关系。只要一个类用到另一个类,但是和另一个类的关系不是太明显的时候(可以说是“uses”了那个类),就可以把这种关系看成是依赖,依赖也可说是一种偶然的关系。
“我在某个方法中偶然用到了它,但在现实中我和它并没多大关系”。
实现关系:
聚合与组合:
- 概念:
对于聚合:
聚合表示类之间的整体与部分的关系。聚合意味着一个类拥有但共享另一个类的对象。
当整体类不存在时,部分类仍可能存在。部分类被销毁时,整体类也将能够存在。
对于组合:
组合是一种特殊形式的聚合。与聚合相比,它有两个特点:
一个部分类最多只能属于一个整体类
当整体类不存在时,部分类将同时被销毁。
- 区别
- 关联VS聚合(组合)
关联关系所涉及的两个类是处在同一个层次上的。比如学生和课程就是一种关联关系,而不是聚合关系,因为学生不是由课程组成的。聚合关系涉及的两个类处于不平等的层次上,一个代表整体,一个代表部分。比如电脑和显示器、键盘、主板、内存就是聚合关系,因为主板等是电脑的组成部分。 - 聚合VS组合
组合:整体类端的重数必须是1,部分类的重数是任意的
聚合:整体类端的重数可以大于1,部分类的重数是任意的
- 画图:
聚合也是表示类和类之间的“整体-部分”关系,用空心菱形表示。
组合是聚合的一种特殊情形,用实心菱形表示
- 约束规则
- 概念:
在画类图的过程中,关联、属性和操作等基本要素都要为模型加注约束条件。
约束规则的语法:将约束条件放在括号{ }中,用自然语言或其他常见的设计语言来描述,其描述要简洁准确。
在理想的情况下,在所使用的程序设计语言中,规则应该作为断言来实现,并在调试代码时调用它。
- 对象图
三个层次的观点
- 概念层:描述应用域中的概念,是对现实世界的直接描述,与实现它们的类有关,但与实现方案和实现语言无关。
- 说明层:描述软件的接口,而不是软件的实现。一个类型描述一个接口,但可能有多种实现。
- 实现层:从实现的角度定义类及其实现,揭示了软件实现体的构成情况。
类图建模分析步骤
(1)寻找出需求中的名词(候选对象)。
(2)合并含义相同的名词,排除范围以外的名词,并寻找隐含的名词。
(3)去掉只能作为类属性的名词。
(4)剩下的名词就是要找的分析类(候选类)。
(5)根据常识、问题域、系统责任确定该类有那些属性。
(6)补充该类动态属性,如状态、对象间联系(如聚合、关联)等属性。
(7)从需求中的动词、功能或系统责任中寻找类的操作(候选操作)。
(8)从状态转换,流程跟踪、系统管理等方面补充类的操作。
(9)对所寻找的操作进行合并、筛选。
(10)对所寻找的操作在类间进行合理分配(职责分配),形成每个类候选操作。
(11)补充每个类的的分析文档,为类的进一步设计打下基础。
小结:
- 类和对象的表示法
(1)名称;(2)属性;(3)行为; - 类之间的各种关系
(1)继承:子类继承了超类的所有属性和行为;
(2)关联:两个不同类之间关联,可以单向或双向;
(3)聚合:强关联关系,整体与部分的生命周期分开;
(4)组合:强聚合,整体与部分的生命周期相同; - 三个概念层次
(1)概念层;(2)说明层;(3)实现层
软件工程 第三章:类图相关推荐
- Java程序设计(2021春)——第三章类的重用笔记与思考
Java程序设计(2021春)--第三章类的重用笔记与思考 本章概览: 3.1 类的继承(概念与语法) 3.2 Object类(在Java继承最顶层的类) 3.3 终结类和终结方法(只能拿来用,不可以 ...
- 软件工程-大学体育馆管理系统类图
说明:这是3人团队作品,我发出的内容都是我自己写的部分与和团队队员一起讨论的部分,有删减其它队员的内容,文章不是很完整,但是我写的内容比较有参考性可以补充剩下的内容.发出的图是我原创的. 用例图:软件 ...
- 读软件工程前三章后感
"再多读一次",这是我读完一到三章之后的第一想法,自我发现悟性不高,相信下一次阅读会有新的感悟以及收获. 第一章中作者极尽通俗之力,告诉读者何为软件工程,善用例子,让读者能一点就通 ...
- 现代软件工程 第三章 【软件工程师的成长】练习与讨论
1. 选哪一种医生? 作为一个软件工程师, 你觉得自己表现如何? 有没有这样的体会: 看书的时候觉得"技止此耳",开发项目的时候才觉得实际情况和书上讲的都有一些出入,一些重要的细 ...
- 现代软件工程第三章练习与讨论(补)
一.现在的我不能够被称之为软件工程师,因为无论是我的技术知识还是理论知识,距离软件工程师还差一定的距离.我会认清我自己,朝着自己的理想奋斗. ①假如我是一名病人的话说,我会选择医生c,但是假如是选择软 ...
- 第三章类与对象基础 ① 笔记
1. 内容回顾 1.1. 课前测试 1.2. 上节内容 2. 本章重点 2.1. 类和对象的概念 2.2. 类的基本组成 2.3. 构造方法 2.4. 成员方法 3. 具体内容 3.1. 类和对象的概 ...
- 软件设计师考试 | 第三章 数据结构 | 图
文章目录 (一)图的定义与存储 1.图的定义 2.图的存储结构 (1)邻接矩阵表示法 (2)邻接链表表示法 (二)图的遍历 1.深度优先搜索(DFS) 2.广度优先搜索(BFS) (三)生成树及最小生 ...
- Java第三章 类和对象3.1+3.2
文章目录 3-1面向对象的最初理解 3-2类的封装 属性与行为 3-1面向对象的最初理解 3-2类的封装 属性与行为
- 软件工程--第三章--需求分析
文章目录 文档 研究内容 方法:结构化分析法 任务 系统的综合需求 系统的数据需求 导出逻辑模型 修正系统开发计划 获得需求的方法 分析建模 需求分析的其他图形工具 层次方框图 Warnier图 IP ...
最新文章
- LEADTOOLS HTML5/JavaScript 实现客户端图像处理
- mac node版本管理
- stm32_CAN总线知识
- oracle:自定义函数
- 使用 .NET 升级助手将.NET Framework应用迁移到.NET 5
- 从C#到TypeScript - Generator
- 计算机二级省份,【计算机二级】这些省份发布报名时间!调整前的最后一次考试!...
- java short s=s 1_Java 面试题 short s = 1; s = s + 1; 与 s += 1; 背后的秘密
- 面试题之SpringMVC整体工作流程
- (pytorch)yolov3训练自己的模型
- 算法第四版C++算法实现全集
- 王者荣耀空白代码_在线空白昵称代码复制
- 贪心科技机器学习训练营(五)
- 重建同义词+oracle,oracle 创建同义词
- chm文档打开后提示已取消网页导航
- 此时流泪,彼时花开。。。。
- 基于负熵(fastICA)的盲源分离
- Wamp80端口被占用
- Android ListView 和 ***Adapter 从本地/网络获取歌曲列表
- 硬核解析Promise对象(这七个必会的常用API和七个关键问题你都了解吗?)