软件工程导论—实验样例(1).docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

PAGE

PAGE

PAGE3

计算机科学与工程学院实验报告(首页)

课程名称

软件工程导论

班级

实验名称

C++类库管理系统的分析与设计

指导教师

姓名

学号

组号

日期

一、实验目的

运用软件工程导论所学知识,对书上的例子“C++类库管理系统的分析与设计”进行分析,结合所学知识对该项目的设计过程详细理解,掌握软件系统设计的步骤和原理。

二、实验内容

2.1问题引入

为了高效管理用户在进行C++开发过程中累积起来的类,以便于今后能从库中更快地读取出可重用的类,提高开发效率。

2.2需求分析

该系统需要具备编辑、储存和浏览功能,具体如下:

管理C++类;

用户能向库中添加类,并建立新类与原有类的联系;

用户能从库中查询出需要的类;

修改、指定类的信息;

删除类;

浏览任意一个当前类的父类、子类;

查看和修改类中的源代码;

支持多用户;

错误输入处理;

GUI界面

2.3概要设计

该系统采用面向对象分析方法。面向对象分析就是抽取和整理用户需求并建立问题域精确模型的过程。该分析方法包含三要素:对象模型、动态模型和功能模型;五层次:找出类与对象、识别结构、识别主题、定义属性和定义服务。

2.3.1建立对象模型

建立对象模型是面向对象分析的首要工作,具体包括确定类与对象、确定类的关联、划分主题、确定属性等。对于该问题的分析过程如下:

组成该系统的基本对象是“类库”和“类”,类中包含的属性有:类名、父类列表、成员函数列表和数据成员列表。类提供的服务为:设计或更新类名;添加、删除和修改父类;添加、删除和修改成员函数;添加、删除和修改数据成员。

类库中的属性有:库名、类列表。类库提供的服务为:添加、删除、修改类;类库存储到磁盘;从磁盘中读取类库。

2.3.2分析类之间的关系

对该系统进一步分析,可以得出类的关系为:

一个用户可以拥有多个类库;

每个类库由0个或多个类组成;

每个类有0个或多个父类,0个或多个数据成员,0个或多个成员函数

由于该系统功能仅在PC端对已有的类进行管理,数据仅存在本地磁盘的数据库中,功能不根据类的变化而进行改动,因此无需进行动态模型和功能模型设计。得出的对象模型如下图:

图1对象模型

2.3.2面向对象设计

2.3.2.1设计类库结构

主要讨论类在类库中的组织方式以及在计算机系统中的存储方式,即数据结构组织和物理结构设计。对于该问题,数据结构即类与类库的包含关系、类和类之间的继承关系等;物理结构主要有线性结构、链表结构和树形结构。线性结构不适用于反应类之间的映射关系,因此不采用线性数组。树形结构可以很好地反映数据之间的层次关系,在该问题中可以直观地反映类的继承关系,但是C++中支持多继承,类库中能直观看出类的所有父类和子类,且树形结构的存储比较复杂,系统开销大。综上所述,该问题采用链表结构进行类库结构存储。链表结构的每个结点表示类,每个类库中包含多个类头结点,如下示意图:

图2链表结构示意图

2.3.2.2设计问题域子系统

问题域指提问的范围、问题之间的内在的关系和逻辑可能性空间。

问题域(Problemdomain)指提问的范围、问题之间的内在的关系和逻辑可能性空间。

在软件工程中,问题域是指被开发系统的应用领域,即在客观世界中由该系统处理的业务范围。经过前面的分析,我们对这个项目的问题域有了一定的了解,即确定类和类库的实体和关系、设计类库结构,接下来就对图1提出来的对象模型做补充和细化。

类(ClassEntry)

类的数据成员有父类集合、成员函数集合和数据成员集合,均采用链表形式进行存储。在存储结构上,父类集合应有父类链表指针。同理,成员函数集合和数据成员集合也有对应的表头指针。

图1中还要添加“查找并显示父类信息”、“查找并显示指定的成员函数信息”、“查找并显示数据成员的信息”。

类库(ClassEntryLink)

类库也采用链表表示,每个类库就是一个链表。实质上,类库是作为类的头指针结点的。类库提供的服务只要有:获取类的个数,建立类链,将类链表存在计算机系统中;插入、删除、修改、查找类。

父类(ClassBase),成员函数(ClassFun)和数据成员(ClassData)

采用链表存储后,除了图1列出来的数据成员(区别于标题的数据成员,该数据成员表示组成该项目的数据项),还需要添加链表头结点,指向下一个父类、成员函数、数据成员。

分析完问题域的子系统以及类库结构后,该问题的类库示意图如下所示:

图3类库的链表结构示意图

类条目缓冲区(ClassEntryBuffer)

根据需求分析得出来的功能,该类库管理系统支持多用户,每个用户能对类库进行操作。因此,需要设计一个缓冲区保存每个用户进行操作的类,与其他用户操作的类区分开来。缓冲区还起到操作保护的作用,当

文档评论(0)

DIYW' + 关注
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档