目  录

一、实验目的

二、实验环境

三、学时分配

四、实验内容与步骤

1. 百度搜索1-2张类图,请重新绘制它们,并回答以下问题:

2. 根据以下描述,提取这个问题涉及的类,定义各个类之间的关系,并画出类图。

3. 某报社采用面向对象技术实现报刊征订的计算机管理系統,该系统基本需求如下:报社发行多种刊物,每种刊物通过订单来征订,订单中有代码、名称订期、单价、份数等项目,订户通过填写订单来订阅报刊。报社下设多个发行站,每个站负责收集登录订单、打印收款凭证等事务。报社负责分类并统计各个发行站送来的报刊订阅信息。

4. 请查阅相关资料,描述自己所了解的航天飞船等相关内容,并绘制出对应的类图。

5. 【思考题】:试分析类与类之间的关联、泛化、依赖和细化四种关系,以及类图的作用。

五、实验问题及解决方法

六、实验心得


一、实验目的

        1. 掌握面向对象分析中的建模工具——类图,理解面向对象的对象模型,模拟应用程序的静态视图,为其他图(如顺序图、交互图)奠定基础;会熟练使用建模工具,分析并建立相应的模型。

        2. 掌握应用Visio等业界常用的建模工具的基本使用方法和基本绘图操作,选择一种并熟练使用,会使用该工具针对具体问题建立分析模型。

二、实验环境

        1. 操作系统:Windows 操作系统。

        2. 操作软件:WPS 文档编辑器、建模工具 boardmix。

        3. 硬件设备:笔记本电脑一台。

学时分配

        学时分配: 2 学时。

、实验内容与步骤

1. 百度搜索1-2张类图,请重新绘制它们,并回答以下问题:

1)有哪些类;

2)有哪些关系;

3)简要描述该图的作用;

要求:所绘制的图不得与本文中其它习题一样。

        (1)在百度上搜索一张学籍管理系统的类图,重新绘制后的学籍管理系统类图如图5-1所示:

图5-1 学籍管理系统类图

        1)有哪些类;

        答:学籍管理系统中总共有学生、教师、系统管理员、学生信息库、教师信息库、系统管理员信息库、学籍管理系统七大类。

        2)有哪些关系;

        答:学生和学生信息库之间、教师和教师信息库之间以及系统管理员和系统管理员信息库之间都是聚合关系;学生和教师之间以及教师和系统管理员之间都是双向关联关系;学生信息库、教师信息库以及系统管理员信息库和学籍管理系统之间都是聚合关系。

        3)简要描述该图的作用;

        答:学籍管理系统包含了多个学生信息库、教师信息库以及系统管理员信息库,同时学生信息库中包含多名学生、教师信息库中包含多名教师、系统管理员信息库中包含多名系统管理员。学生具有姓名和学号,并且可以进行注册、选课和查询个人考试信息;教师具有姓名和工资号,并且可以进行注册、授课和安排学生考试;系统管理员具有姓名和工资号,并且可以进行注册、管理学生信息、管理教师信息和管理选课系统。通过此类图可以清晰地展示学籍管理系统中各个类之间的关系,有助于开发者理解系统的整体结构和功能,帮助测试者更好地理解系统的结构和功能,从而更有效地进行测试和辅助教学。

        (2)在百度上搜索一张学生选课系统的类图,重新绘制后的学生选课系统类图如图5-2所示:

图5-2 学生选课系统类图

        1)有哪些类;

        答:学生选课系统中总共有用户、学生、选课情况、课程信息、课程表五大类。

        2)有哪些关系;

        答:学生和用户之间是泛化关系;学生和选课情况之间、学生和课程表之间、学生和课程信息之间都是关联关系;课程信息和课程表之间是组合关系。

        3)简要描述该图的作用;

        答:学生选课系统中所有的学生都是用户,但是并非所有的用户都是学生。课程信息是课程表的一部分,学生可以查看自己的选课情况以及自己的课程表和对应的课程信息。用户具有账号、密码和姓名,可以进行登录和修改密码的操作;学生可以进行选课、查询选课情况和查询成绩;选课情况中具有学号和课程号,可以进行查询、增加课程和删除课程;课程信息具有课程名称、课程号、任课教师、学分、上课时间、上课地点、总学时、周学时、限选人数和现选人数,可以增加选择和取消选择;课程表具有专业、课程号、课程名称、任课教师、上课地点、上课时间,可以增加课程、删除课程、查询课程并进行发布。通过此类图可以清晰地表达学生、课程和选课等元素之间的关系,包括学生与课程之间的关联关系、学生与选课之间的关联关系等。这有助于开发者理解系统的整体结构,并能够更好地进行设计和开发,从而更快地掌握系统的开发方法。

2. 根据以下描述,提取这个问题涉及的类,定义各个类之间的关系,并画出类图。

        汽车和自行车都是交通工具 。一辆自行车只能归一个人拥有,但一辆汽车可归一个人或者两个⼈拥有。一个人可能没有自行车或者汽车,也可能拥有多辆自行车或者汽车。每个人都具有年龄和名字。每辆汽车都有自己的颜色和商标。

        根据题意可知总共有交通工具、汽车、自行车和人四大类,汽车和交通工具之间以及自行车和交通工具之间都是泛化关系,而汽车和人之间以及自行车和人之间都是关联关系。其中汽车具有color和brand两个属性,人具有name和age两个属性,对应的交通工具类图如图5-3所示:

图5-3 交通工具类图

3. 某报社采用面向对象技术实现报刊征订的计算机管理系統,该系统基本需求如下:报社发行多种刊物,每种刊物通过订单来征订,订单中有代码、名称订期、单价、份数等项目,订户通过填写订单来订阅报刊。报社下设多个发行站,每个站负责收集登录订单、打印收款凭证等事务。报社负责分类并统计各个发行站送来的报刊订阅信息。

        请就此需求建立这个报刊征订的计算机管理系统的对象模型。

        根据题意可知总共有报社、刊物、发行站、订单和订户五大类,报社与刊物之间、刊物与订单之间、发行站与订单之间以及订单与订户之间都是关联关系,报社与发行站之间是聚合关系。其中报社可以进行分类和统计报刊订阅信息;发行站可以收集登录订单和打印收款凭证;订单具有code、name、regular、price、copies五个属性;订户可以填写订单,对应的报刊征订的计算机管理系統类图如图5-4所示:

图5-4 报刊征订的计算机管理系统类图

4. 请查阅相关资料,描述自己所了解的航天飞船等相关内容,并绘制出对应的类图。

        例如:神舟六号飞船是神舟飞船系列的一种,它由轨道舱、返回舱和逃逸救生塔组成。航天员可以在返回舱内驾驶飞船,轨道舱则是航天员工作和休息的场所。在紧急情况下,可以利用逃逸救生塔逃生。在飞船两侧有多个太阳能电池翼,可以为飞船提供电能。

        (说明:可直接根据上述例子中的描述绘制“飞船系统”的类图,也可自己描述进行绘图)

        根据题意可知总共具有神舟飞船系列、神舟六号飞船、太阳能电池翼、轨道舱、返回舱、逃逸救生塔以及航天员七大类,神舟飞船系列和神舟六号飞船之间是泛化关系,神舟六号飞船和太阳能电池翼之间、航天员和轨道舱之间、航天员和返回舱之间、航天员和逃逸救生塔之间都是依赖关系,神舟六号飞船和轨道舱、返回舱以及逃逸救生塔之间都是聚合关系。其中轨道舱可以工作和休息;返回舱可以进行飞船驾驶;逃逸救生塔可以逃生,对应的神舟飞船系列类图如图5-5所示:

图5-5 神舟飞船系列类图

5. 【思考题】:试分析类与类之间的关联、泛化、依赖和细化四种关系,以及类图的作用。

        (1)关联关系也是依赖关系的一种特例,表示类与类之间的关系,如果一个类,类中有成员变量,且成员变量是一个类,则它们就构成关联关系。在类图中,关联关系通常用一条线表示,可以在线上添加箭头表示方向或多重性,对应的关联关系图如图5-6所示:

图5-6 关联关系图

        (2)泛化关系是一种特殊的依赖关系,实际上也就是继承关系。A类是B类和C类的父类,B、C有共用父类A,说明 A 类是B、C类的泛化,假如B、C继承了A类,A就和B、C存在泛化关系。在类图中,泛化关系用一条带有箭头的线表示,箭头指向父类,对应的泛化关系图如图5-7所示:

图5-7 泛化关系图

        (3)依赖关系是最常见的一种关系,是一种使用关系,即一个类的实现(或部分方法的实现)需要另外一个类的协助,所以应尽量避免双向的互相依赖关系。对象A持有对象B的引用,对象A需要借助对象B的协助,假如A是一个类,那么B可以是局部变量,也可以是类中方法参数,或者对静态方法的调用;(对象A可以依赖B,也可以不依赖B,用到了有B的部分方法就依赖了B)。在类图中,依赖关系通常用一条带有箭头的虚线表示,箭头指向被依赖的类,对应的依赖关系图如图5-8所示:

图5-8 依赖关系图

        (4)细化关系是一种特殊形式的泛化关系,它表示一个更具体的类(子类)继承了一个更通用的类(父类)的属性和行为。在类图中,细化关系可以用一条带有箭头的实线表示,箭头指向被细化的类,对应的细化关系图如图5-9所示:

图5-9 细化关系图

        (5)类图是一种用于描述软件系统的静态结构的图形表示方法,它包含了系统的类、接口、属性、方法以及它们之间的关系。第一,类图可以清晰地展示系统的各个组成部分以及它们之间的关系。第二,通过绘制类图,开发人员可以更好地理解系统的结构和功能,从而更好地设计和实现系统。第三,类图可以帮助开发人员了解系统的详细信息,包括类的属性和方法以及它们之间的关系,有助于开发人员在编程时更好地理解系统的需求和设计。第四,通过观察类图测试人员可以更好地理解系统的结构和功能,从而更有效地进行测试。同时类图也可以帮助开发人员在系统维护时更好地理解和修改系统的结构。第五,类图可以作为文档记录系统的结构和组织方式,供开发人员和其他相关人员查阅和理解。同时通过绘制类图可以将系统的结构和设计思路传递给其他开发人员或新成员。

实验问题及解决方法

        (1)实验问题:类图过于复杂,难以理解和维护。

解决方法:将类图划分为多个子图或模块,并使用包图或其他工具来组织它们之间的关系。

        (2)实验问题:无法准确地表达类之间的关系。

解决方法:仔细分析类之间的关系,并使用正确的线条和标注来表示它们,如果关联关系复杂,可以考虑使用其他图来表示。

        (3)实验问题:类的属性和操作没有正确展示。

解决方法:在类图中列出所有属性和操作,并使用恰当的表示方法,属性应该显示其类型和名称,操作应该显示其参数和返回类型。

        (4)实验问题:类的命名不准确。

解决方法:使用准确的命名来描述类的功能和属性,避免使用模糊或易混淆的名称,以使读者更容易理解类的作用。

        (5)实验问题:忽略类之间的交互。

解决方法:在类图中显示类之间的所有交互,包括消息传递和数据共享等,有助于读者更好地理解类之间的协作关系。

        (6)实验问题:类的继承关系无法准确表达。

解决方法:在类图中明确表示类的继承关系,使用箭头和标注来表示继承关系。

        (7)实验问题:类图缺乏必要的包和子系统划分。

解决方法:使用包图来组织类图中的类和接口,以保持类的清晰和易于管理,可以根据需要将类图划分为多个子系统或模块,并使用包图来表示它们之间的关系。

        (8)实验问题:类的定义不清晰。

解决方法:如果类的定义不清晰,将导致整个类图的不准确,明确类的职责和属性,确保类的定义完整且易于理解。

        (9)实验问题:类的命名不统一。

解决方法:遵循统一的命名规范,确保类的命名准确、清晰且易于理解。

、实验心得

        1、在绘制类图之前,我认识到深入理解业务逻辑和需求是非常重要的。只有了解系统的功能需求和业务流程,才能准确地确定类之间的关系和属性。这有助于确保类图的一致性和准确性,因此在开始绘制类图之前,我会尽力与业务人员交流,了解业务需求和流程,以便更好地理解业务逻辑。

        2、在绘制类图的过程中,我深刻体会到合理使用UML规范的重要性,UML是一种通用的建模语言,提供了丰富的符号和标记方法,可以帮助我们准确地表达复杂的系统和模型。但是如果使用不当,反而会影响图的可读性和理解性。因此在绘制类图时要遵循UML规范,使用正确的符号和标记方法,以提高图的可读性和可理解性。

        3、在绘制类图时,我意识到适当简化类图是非常重要的,类图是一种静态建模方法,用于描述系统的结构和组织方式。但是如果类图过于复杂,就会影响读者的理解和分析。因此在绘制类图时,要适当简化图的内容,突出重要的类和关系,避免过多的细节和复杂性。

        4、在绘制类图时,我深刻体会到注重细节和质量的重要性,一个高质量的类图可以清晰地表达系统的结构和组织方式,而一个质量差的类图则会给读者带来困惑和误解。因此在绘制类图时,要注重细节和质量,确保每个类和关系的描述都是准确和清晰的。

        5、在绘制类图的过程中,我认识到不断迭代和优化是非常重要的,类图是一种建模工具,可以帮助我们分析和设计系统。但是由于我们对系统的理解和需求的变化,类图也需要不断地迭代和优化。因此在绘制类图的过程中,要不断地检查和修正图的准确性和完整性,以确保类图能够满足系统的需求和变化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/93523.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/93523.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/93523.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智慧景区导览系统:基于WebGL的手绘地图导览设计与应用,DeepSeek大模型赋能精准游客引导服务

本文面向 景区信息化负责人、后端开发者、全栈工程师,旨在解决传统景区导览系统静态地图信息有限、人工导游成本高、景区服务人员咨询压力大 的核心痛点,提供从技术选型到落地部署的全链路解决方案。如需获取智慧景区导览系统解决方案请前往文章最下方获…

使用uniapp自定义组件双重支付密码

自定义组件双重支付密码父组件<template><view class"container"><view class"top"></view><navbar navTitle"修改支付密码"></navbar><!-- 双重支付密码 --><view class"box">//核心…

C语言+安全函数+非安全函数

在C语言中&#xff0c;许多标准库函数&#xff08;如 strcpy、scanf、gets 等&#xff09;由于缺乏边界检查&#xff0c;容易导致 ​缓冲区溢出&#xff08;Buffer Overflow&#xff09;​、内存越界访问​ 等安全问题。为了解决这些问题&#xff0c;C11标准引入了 ​安全函数&…

android build.gradle中的namespace和applicationId的区别

namespace 和 applicationId 确实容作用&#xff1a;1. namespace引入版本&#xff1a;Android Gradle Plugin (AGP) 7.0 开始引入&#xff0c;替代 AndroidManifest.xml 里的 package 属性。作用&#xff1a; 用于 代码中的 R 文件、BuildConfig 生成的 Java/Kotlin 包名。决定…

数据结构初阶(15)排序算法—交换排序(快速排序)(动图演示)

2.3 交换排序 2.3.0 基本思想交换排序的基本思想&#xff1a;基本思想根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置。&#xff08;比较结果→交换位置&#xff09;特点将键值较大的记录向序列的尾部移动&#xff0c;键值较小的记录向序列的前部移动。比 换…

Apache Hudi:数据湖的实时革命

Apache Hudi是一个开源的数据湖存储格式和框架&#xff0c;它通过引入类似数据库的事务机制&#xff0c;解决了传统数据湖在实时更新、低延迟查询和增量消费方面的痛点。Hudi最初由Uber于2016年开发并应用于生产环境&#xff0c;2017年开源&#xff0c;2019年成为Apache孵化项目…

深度解析和鲸社区热门项目:电商双 11 美妆数据分析的细节与价值

在数据驱动决策的时代&#xff0c;电商大促期间的行业数据分析总能为从业者和学习者提供宝贵参考。今天&#xff0c;我们来详细拆解和鲸社区&#xff08;heywhale&#xff09;上一个备受关注的实战项目 ——《电商双 11 美妆数据分析》&#xff0c;看看它能给我们带来哪些启发。…

uniapp 开发微信小程序,获取经纬度并且转化详细地址(单独封装版本)

目录1、单独抽离封装2、使用示例3、前置条件和配置4、效果弹框1、单独抽离封装 // 腾讯地图SDK引入&#xff08;需提前下载qqmap-wx-jssdk.min.js文件&#xff09; // 注意&#xff1a;使用前需在微信公众平台配置request合法域名https://apis.map.qq.com var QQMapWX requir…

深入理解 Python 元类中的 __prepare__ 方法:掌控类属性定义顺序的艺术

关键词&#xff1a;元类、type、prepare、OrderedDict、属性顺序、数据建模在 Python 的高级编程中&#xff0c;元类&#xff08;metaclass&#xff09; 是一种强大而神秘的机制。它允许我们在类创建之前进行干预&#xff0c;从而实现诸如自动属性验证、字段序列化、ORM 映射等…

MATLAB基础训练实验

MATLAB基础训练实验 1. 标题 MATLAB 基础训练 2. 内容概括 本实验旨在通过MATLAB基础操作训练,掌握数组创建与运算、矩阵操作、M文件编写、流程控制、二维/三维绘图等核心技能。实验内容包括复数运算、矩阵变换、函数绘图、结构体创建、电路方程求解、电流波形绘制、三维曲…

implement libwhich for Windows

因为windows没有类似unix的which命令 现在实现尽量跨平台&#xff0c;且stb 风格的libwhich // which.h #ifndef LIBWHICH_H #define LIBWHICH_H#ifdef __cplusplus extern "C" { #endif/** 查找可执行文件在系统中的路径* 参数:* filename - 要查找的可执行文件名…

记与客户端的一次“无谓之争”

一、冲突今天&#xff0c;流程收尾时&#xff0c;客户端为了统计时延&#xff0c;连发两个接口&#xff1a;一个报开始时间&#xff0c;一个报结束时间。我因性能考虑&#xff0c;说&#xff1a;“明明一个接口能搞定&#xff01;”客户端负责人说&#xff1a;“发送两次更合理…

Java Condition 对象 wait 方法使用与修复方案

在 Java 中&#xff0c;java.util.concurrent.locks.Condition 接口提供了类似监视器的方法&#xff08;await(), signal(), signalAll()&#xff09;来实现线程间的协调。正确使用 Condition 对象需要遵循特定模式以避免常见问题。常见问题及修复方案1. 虚假唤醒问题问题&…

​​金仓数据库KingbaseES V9R1C10安装教程 - Windows版详细指南​

文章目录一、前言二、软件下载2.1 下载安装包2.2 下载授权文件三. 安装KingbaseES数据库3.1 解压安装包3.2 运行安装程序3.3 安装步骤详解步骤1&#xff1a;欢迎界面步骤2&#xff1a;许可协议步骤3&#xff1a;添加授权文件步骤4&#xff1a;选择安装路径步骤5&#xff1a;选择…

论文推荐|迁移学习+多模态特征融合

来gongzhonghao【图灵学术计算机论文辅导】&#xff0c;快速拿捏更多计算机SCI/CCF发文资讯&#xff5e;在Cvpr、NeurIPS、AAAI等顶会中&#xff0c;迁移学习多模态特征融合正以“降成本、提性能、省标注”的绝对优势成为最热赛道。面对超大模型全量微调天价算力、异构模态对齐…

接口芯片断电高阻态特性研究与应用分析

摘要&#xff1a; 本文以国科安芯推出的ASM1042 系列通讯接口芯片为例&#xff0c;深入探讨接口芯片断电高阻态特性&#xff0c;涵盖其定义、原理、应用及设计注意事项。通过对相关技术资料的梳理与分析&#xff0c;结合具体芯片实例&#xff0c;阐述高阻态在电路稳定性、设备兼…

数据结构初阶(17)排序算法——非比较排序(计数排序·动图演示)、排序算法总结

2.0 十大排序算法2.5 非比较排序 之前学习的排序算法都是比较排序——借助比较大小&#xff0c;来实现排序。非比较就是不借助比较大小&#xff0c;来实现排序。——小众的、局限的非比较排序大致有这些&#xff1a;计数排序、桶排序、基数排序。桶排序、基数排序在实践中意义不…

VisualStudio2022调试Unity C#代码步骤

一.VS安装Unity开发组件按下图所示安装Unity开发组件二.附加Unity调试程序2.1 先将Unity进入Play模式2.2 VS选择附加Unity调试程序菜单2.3 选择附加的实例三.加入断点测试Update方法中成功进入断点

Zabbix【部署 01】Zabbix企业级分布式监控系统部署配置使用实例(在线安装及问题处理)程序安装+数据库初始+前端配置+服务启动+Web登录

Zabbix使用 1.下载 2.安装 2.1 程序安装 2.2 数据库初始化 2.3 前端配置 2.4 服务启动 3.Web登录 4.总结 安装说明: 本次安装为在线安装,使用数据库为PostgreSQL。 1.下载 由于是在线安装,这次不涉及离线安装包的下载,仅做参考用,点击跳转【下载页面】,下载说明: 版本…

爬机 验证服务器是否拒绝请求

当访问XX网站时返回 418 状态码时&#xff0c;说明服务器识别到了爬虫行为并拒绝了请求。这是网站的反爬机制在起作用&#xff0c;我们可以通过模拟浏览器行为来绕过基础反爬。import requestsurl https://cn.bing.com/# 模拟浏览器的完整请求头&#xff0c;包含更多浏览器标识…