软件工程学概述单元测试
- 格式:doc
- 大小:231.00 KB
- 文档页数:4
软件单元测试基础在软件开发过程中,确保代码质量和功能的正确性是至关重要的。
单元测试作为软件测试的一个基本环节,它的目标是验证每个最小可测试部分(通常是方法或函数)的行为是否与预期相符。
通过编写和执行单元测试,开发者可以在软件开发早期阶段发现并修复错误,从而提高软件质量,减少维护成本。
什么是单元测试?单元测试是一种白盒测试技术,主要针对程序中的最小可测试单元进行检查和验证。
这些单元通常是指方法、函数或类,并且测试的目的是确认它们在各种条件下都能正确地执行预定任务。
为什么进行单元测试?1. 提高代码质量:通过单元测试可以及早发现代码中的错误,帮助开发人员修正它们。
2. 促进设计改进:编写可测试的代码往往需要更好的设计,这有助于提升代码的可读性和可维护性。
3. 简化集成:当各个单元都经过充分测试后,集成这些单元时出现问题的可能性会降低。
4. 增强信心:单元测试可以为开发团队提供对代码行为的信心,尤其是在重构代码时。
5. 文档化:单元测试可以作为代码行为的文档,帮助新成员快速理解代码功能。
如何进行单元测试?选择单元测试框架对于不同的编程语言,存在不同的单元测试框架。
例如Java常用的有JUnit,C#有NUnit,Python则有unittest和pytest等。
选择合适的框架是开始单元测试的第一步。
编写测试用例编写单元测试用例时,应遵循以下原则:- 独立性:确保每个测试用例独立于其他测试。
- 可重复性:测试应当在任何环境下都能重复执行。
- 明确性:测试结果应当清晰明确,无歧义。
- 完整性:覆盖所有可能的执行路径和边界条件。
运行和调试测试运行单元测试并分析结果,如果测试失败,需要调试代码以找出问题所在并修复它。
之后再次运行测试以验证修改。
维护测试随着代码的不断迭代和更新,相应的单元测试也需要维护。
这包括更新测试以反映新的功能需求,以及删除或修改不再适用的测试。
总结单元测试是保证软件质量和促进健康开发实践的关键步骤。
概述一、填空题1、软件由计算机程序、数据和文档组成。
2、软件是一种逻辑产品,它与物质产品有很大的区别。
3、计算机系统由硬件、软件、使用计算机的人、数据库、文档和执行过程组成。
4、软件的发展,到现在为止,经历了三个阶段:程序设计、程序系统和软件工程。
5、程序设计时代的生产方式是个体手工艺者,程序系统时代的生产方式是手工作坊,软件工程时代的生产方式是工程化。
6、软件工程是一门综合性的交叉学科,它涉及计算机学科工程学科、管理学科和数学学科。
7、计算机科学的成果都可用于软件工程,但计算机科学着重于理论和原理,软件工程着重于建造软件系统。
8、软件工程研究的主要内容是方法、过程和工具等三个方面。
9、软件开发各阶段任务的划分应尽可能相对独立,同一阶段任务的性质应尽可能相同。
10、瀑布模型是将软件生存期各个活动规定为依线性顺序连接的若干阶段的模型。
它规定了各阶段的活动由前至后,相互衔接的固定次序,如同瀑布流水,逐级下落。
11、演化模型是一种非整体开发模型。
先开发一个原型软件,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终获得满意的产品。
12、螺旋模型将开发过程分为几个螺旋周期。
在每个螺旋周期内分为四个工作步骤:制定计划、风险分析、开发实施、用户评估。
13、喷泉模型是一种以用户要求为动力,以对象为驱动的模型。
它使开发过程具有迭代性和无间隙性,适用于面向对象开发方法。
二、单项选择题1、软件产品的生产主要是C。
A. 制造B. 复制C. 开发D. 研制2、个体手工劳动是B时代的软件生产方式。
A. 程序系统B. 程序设计C. 软件工程D. 程序编码3、软件工程是一门C学科。
A. 理论性B. 原理性C. 工程性D. 心理性4、软件开发费用只占软件生存期全部费用的B。
A. 1/2B. 1/3C. 1/4D. 2/35、在软件开发过程中大约要花费C%的工作量进行测试和调试。
A. 20B. 30C. 40D. 506、准确地解决“软件系统必须做什么”是B阶段的任务。
软件工程基础知识考试资料1. 软件工程概述软件工程是指应用科学原理和方法,以及工程管理原则,系统地进行软件开发、维护和演化的一种工程学科。
软件工程的目标是提高软件的质量、可靠性、可维护性和可复用性,降低软件开发和维护的成本和时间。
2. 软件生命周期软件生命周期是指软件从概念到退役的全过程,包括需求分析、系统设计、编码、测试、部署、维护等阶段。
常见的软件开发生命周期模型有瀑布模型、迭代模型、敏捷模型等。
2.1 瀑布模型瀑布模型是最早提出的软件开发生命周期模型,它按照线性顺序依次完成需求分析、系统设计、编码、测试和维护等阶段。
瀑布模型的优点是结构清晰,适用于开发稳定的需求;缺点是适应性差,无法应对需求变化。
2.2 迭代模型迭代模型是按照循环迭代的方式完成软件开发的模型,每个迭代周期内包括需求分析、系统设计、编码、测试和维护等阶段。
迭代模型的优点是适应性强,能够应对需求变化;缺点是进度不确定,需求可能会不断变化。
2.3 敏捷模型敏捷模型是一种强调灵活性和迭代开发的软件开发方法。
敏捷开发通过快速迭代、持续交付和团队协作来应对需求的变化。
常见的敏捷开发方法有Scrum、XP、DevOps等。
3. 软件需求工程软件需求工程是软件工程的重要组成部分,主要包括需求获取、需求分析、需求规格说明和需求验证等阶段。
3.1 需求获取需求获取是指从项目相关方获取对软件功能和性能的需求。
常用的需求获取方法有访谈、问卷调查、案例分析等。
3.2 需求分析需求分析是对需求进行细化、整理和优化的过程。
需求分析的目标是明确需求背后的业务逻辑,识别需求的优先级和约束条件。
3.3 需求规格说明需求规格说明是将需求以文档形式记录下来,包括用户需求、功能需求、非功能需求等。
常用的需求规格说明方法有用例图、活动图、状态图等。
3.4 需求验证需求验证是确保软件产品满足用户需求的过程。
常用的需求验证方法有测试、验收和用户反馈等。
4. 软件设计与架构软件设计是指在需求分析的基础上,将系统分解为不同的模块,并定义各模块之间的接口和关系。
第7章实现通常把编码和测试统称为实现。
所谓编码就是把软件设计结果翻译成用某种程序设计语言书写的程序。
作为软件工程过程的一个阶段,编码是对设计的进一步具体化,因此,程序的质量主要取决于软件设计的质量。
但是,所选用的程序设计语言的特点及编码风格也将对程序的可靠性、可读性、可测试性和可维护性产生深远的影响。
无论怎样强调软件测试的重要性和它对软件可靠性的影响都不过分。
在开发大型软件系统的漫长过程中,面对着极其错综复杂的问题,人的主观认识不可能完全符合客观现实,与工程密切相关的各类人员之间的通信和配合也不可能完美无缺,因此,在软件生命周期的每个阶段都不可避免地会产生差错。
我们力求在每个阶段结束之前通过严格的技术审查,尽可能早地发现并纠正差错;但是,经验表明审查并不能发现所有差错,此外在编码过程中还不可避免地会引入新的错误。
如果在软件投入生产性运行之前,没有发现并纠正软件中的大部分差错,则这些差错迟早会在生产过程中暴露出来,那时不仅改正这些错误的代价更高,而且往往会造成很恶劣的后果。
测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误。
目前软件测试仍然是保证软件质量的关键步骤,它是对软件规格说明、设计和编码的最后复审。
软件测试在软件生命周期中横跨两个阶段。
通常在编写出每个模块之后就对它做必要的测试(称为单元测试),模块的编写者和测试者是同一个人,编码和单元测试属于软件生命周期的同一个阶段。
在这个阶段结束之后,对软件系统还应该进行各种综合测试,这是软件生命周期中的另一个独立的阶段,通常由专门的测试人员承担这项工作。
大量统计资料表明,软件测试的工作量往往占软件开发总工作量的40%以上,在极端情况,测试那种关系人的生命安全的软件所花费的成本,可能相当于软件工程其他开发步骤总成本的3倍到5倍。
因此,必须高度重视软件测试工作,绝不要以为写出程序之后软件开发工作就接近完成了,实际上,大约还有同样多的开发工作量需要完成。
国家开放大学《软件工程》章节自测参考答案模块一软件工程概述一、选择题1.软件与程序的区别是()。
A. 程序价格便宜、软件价格昂贵。
B. 程序是用户自己编写的,而软件是由厂家提供的。
C. 程序是用高级语言编写的,而软件是由机器语言编写的。
D. 软件是程序以及开发、使用和维护所需要的所有文档的总称,而程序是软件的一部分。
2.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做()。
A. 软件产生B. 软件周期C. 软件工程D. 软件危机3.瀑布模型本质上是一种()模型。
A. 线性顺序B. 早期产品C. 顺序迭代D. 线性迭代4.瀑布模型存在的问题是()。
A. 缺乏灵活性B. 用户容易参与开发C. 适用可变需求D. 用户与开发者易沟通5.用户要看到软件产品的模样,最早也要到()以后。
A. 验收B. 在单元测试之后C. 程序代码编写完成之后D. 用户需求基本确定6.螺旋模型是一种将瀑布模型和()结合起来的软件开发模型。
A. 增量模型B. 专家系统C. 喷泉模型D. 变换模型7.原型化方法是用户和设计者之间执行的一种交互构成,适用于()系统。
A. 需求不确定性高的B. 需求确定的C. 管理信息D. 实时8.原型化方法是一种()型的设计过程。
A. 自底向上B. 自顶向下C. 自外向内D. 自内向外9.下列有关软件工程的标准,属于国际标准的是( )A. IEEEB. GBC. ISOD. DIN10.结构化方法是一种基于()的方法。
A. 程序结构B. 数据结构C. 算法D. 数据流二、简答题1.什么是软件危机?软件危机表现在哪几个方面?参考答案:由于软件具有上述这些特点,长期以来一直没有发明一种高效的开发方法,从而导致软件生产效率非常低,交付期一拖再拖,最终交付的软件产品在质量上很难保障。
这种现象早在20世纪60年代被定义为“软件危机”。
它的具体表现如下:(1)“已完成”的软件不满足用户的需求。
(2)开发进度不能保障,交付时间一再拖延。
国开电大-软件工程(本)-章节测试1-6满分答案章节1:软件工程概述测试1-1:选择题1. 软件工程的主要目标是(A)。
A. 确保软件开发过程中高质量的软件产品B. 降低软件开发成本C. 提高软件开发速度D. 使软件开发过程更加有趣2. 软件工程的基本活动不包括(D)。
A. 软件规格B. 软件设计和实现C. 软件验证D. 软件评估测试1-2:判断题1. 软件工程的目标是通过工程化的方法来开发、维护软件,确保软件的质量、成本和进度得到有效控制。
(对)2. 软件工程包括软件开发过程中的所有活动,如需求分析、设计、实现、测试和维护等。
(对)章节2:软件开发生命周期测试2-1:选择题1. 在软件开发生命周期中,需求分析阶段的任务是(A)。
A. 确定软件系统的功能和性能要求B. 设计软件系统的架构C. 编写软件代码D. 测试软件功能2. 下列哪个阶段不属于软件开发生命周期(D)。
A. 需求分析B. 设计C. 实现D. 软件部署测试2-2:判断题1. 软件开发生命周期是一个抽象的概念,它将软件开发过程划分为不同的阶段,以帮助开发团队更好地管理和控制软件开发过程。
(对)2. 软件开发生命周期的每个阶段都有明确的任务和输出,确保软件开发过程的有序进行。
(对)章节3:软件需求分析测试3-1:选择题1. 下列哪项是需求分析的主要任务(A)。
A. 确定用户需求和系统功能B. 设计软件架构C. 编写软件代码D. 测试软件功能2. 下列哪个工具和技术不常用于需求分析(D)。
A. 数据流图B. 用例分析C. 原型法D. 单元测试测试3-2:判断题1. 需求分析是软件开发过程中的重要阶段,它的主要目的是明确软件系统的功能和性能要求,为后续的软件设计和实现奠定基础。
(对)2. 在需求分析阶段,开发团队与用户进行沟通,收集和分析需求,以确保软件系统能够满足用户的期望和需求。
(对)章节4:软件设计测试4-1:选择题1. 在软件设计阶段,下列哪项活动是主要的(A)。
软件工程方法学单元测试随着软件工程的不断发展,单元测试作为一种重要的测试手段,被广泛运用于软件开发过程中。
本文将介绍软件工程方法学中的单元测试,包括其定义、目的、方法以及在软件开发中的重要性。
一、定义单元测试是软件工程方法学中的一种测试方法,用于对软件系统的最小可测试单元进行独立、全面、规范的测试。
它的目的是验证最小可测试单元的正确性和健壮性,以确保软件系统能够按照预期的方式正常运行。
二、目的1. 验证代码正确性:通过单元测试可以检测最小可测试单元(如函数、方法、类等)是否按照设计要求正确实现,避免由于代码错误引起的软件运行异常。
2. 提高代码质量:单元测试要求开发人员编写测试用例,覆盖各种可能的输入和边界条件,可以发现潜在的错误和漏洞,从而改进代码的质量。
3. 促进软件重构:通过单元测试可以对代码进行频繁的测试和验证,使得开发人员更加自信地对代码进行重构,提高软件的可维护性和可扩展性。
4. 支持持续集成与部署:单元测试是持续集成和持续部署的基础,只有通过了单元测试的代码才能够被集成到整个系统中,确保系统的稳定性和可靠性。
三、方法1. 白盒测试:通过了解代码的内部结构和逻辑,编写测试用例以覆盖各个分支和路径,来验证代码的正确性。
2. 黑盒测试:只关注输入和输出,不考虑代码的内部实现,通过构造不同的输入数据来检测代码的功能是否符合预期。
3. 自动化测试:利用测试框架和工具,编写自动化测试脚本,实现对代码的自动化测试,提高测试效率和可重复性。
4. 敏捷测试:在敏捷开发中,单元测试是开发人员与测试人员紧密合作的重要环节,通过持续集成和频繁的小步迭代,不断进行单元测试,确保代码的质量和系统的稳定性。
四、重要性1. 错误发现及时性:单元测试能够快速发现代码错误,及时进行修复,降低出现严重缺陷的概率,减少后期维护成本。
2. 代码可读性及可维护性:单元测试要求开发人员编写可测试的代码,提高了代码的可读性、可维护性和可测试性。
现代软件工程讲义之单元测试和回归测试1单元测试你的RP是由你的程序质量决定的。
——阿超这一章讲的是两人合作,既然程序是两个人写的,那就会出现一个人写的模块被另一个人写的模块调用的情况。
很多误解、疏忽都发生在两个模块之间。
如何能让自己写的模块尽量无懈可击?单元测试就是一个很有效的解决方案。
1.1 用VSTS写单元测试例子:我们写一个比较常用的类型,看看它的单元测试应该怎么写?比如在各种网站应用程序中都会用到的“用户”这一类型。
谁自告奋勇上来表演一下写代码?小飞,好,请上台。
小飞创建了一个C#的类库(Class Library),并写了如代码清单11-1的代码:代码清单11-11. namespace DemoUser2. {3. public class User4. {5. public User(string userEmail)6. {7. m_email = userEmail;8. }9. private string m_email; //user email as user id10. }11. }好,现在右键选中User,就可以看到“Create Unit Tests”的菜单,这样就可以创建新的单元测试(如图11-2所示)。
图11-2 创建单元测试项目创建单元测试后,注意到在Solution Explorer中出现了三个新的文件(如图11-3所示)。
图11-3 新的单元测试文件Class1.cs是程序的文件,而Class1Test.cs是与之对应的单元测试文件。
DemoUser.vsmdi:测试管理文件。
Localtestrun.testrunconfig:本地测试运行设置文件。
如何管理设置文件呢?右键再选属性(Property)并不对。
你得双击文件才能进入管理及设置界面。
在设置界面中,你可以让单元测试产生“demouser.dll”的代码覆盖报告。
注意在单元测试中,VSTS自动为你生成了测试的骨架,但是你还是要自己做不少事情,最起码要把那些//TODO的事情给做了(如代码清单11-2所示)。
西安交通大学智慧树知到“计算机科学与技术”《软件工程概论》网课测试题答案(图片大小可自由调整)第1卷一.综合考核(共10题)1.软件测试一般分为四个步骤:单元测试(也称模块测试)、集成测试(也称组装测试,联合测试)、确认测试(也称验收测试,有效性测试)、系统测试。
()A.正确B.错误2.瀑布模型本质上是一种线性顺序模型。
()A.正确B.错误3.静态测试是指通过运行程序发现问题。
()A.正确B.错误4.渐增式测试:该测试是逐个把未经过测试的模块组装到已经测试过的模块上去,进行集成测试。
每加入一个新模块进行一次集成的测试,重复此过程直至程序组装完毕。
()A.正确B.错误5.内容耦合指()A.两个模块之间传递的是数据结构B.一个模块调用另一个模块时,传递的是控制变量C.通过一个公共数据环境相互作用的哪些模块间的耦合D.一个模块直接使用另一个模块的内部数据,或通过非正常入口而转入另一个模块内部6.为了进一步改善软件系统的可维护性和可靠性,并为以后的改进奠定基础的软件维护称为()A.纠错性维护B.适应性维护C.改善性维护D.预防性维护7.分层DFD是一种比较严格又易于理解的描述方式,它的顶层图描述了系统的()A.细节B.输入与输出C.软件的作者D.绘制的时间8.软件工程对维护工作的主要目标是提高(),降低维护的代价。
A.软件的生产率B.软件的可靠性C.软件的可维护性D.维护的效率9.盒图也称为()或Chapin图,这种表达方式取消了流程线,它强迫程序员以结构化方式思考和解决问题A.流程图B.框图C.判定表D.N-S图10.软件维护费用增加的主要原因是维护的生产率非常低。
()A.正确B.错误第1卷参考答案一.综合考核1.参考答案:A2.参考答案:A3.参考答案:B4.参考答案:A5.参考答案:D6.参考答案:D7.参考答案:B8.参考答案:A9.参考答案:D10.参考答案:A。
5.面向对象的分析与设计单元测试
一、填空题
1.根据Coad和Yourdon的定义,面向对象的概念可表示为:“面向对象
=________+________+________+________”。
2.对象是面向对象开发模式的基本成分。
每个对象可用其一组________和它可以执行的一组________来定义。
3.用例图中以实线方框表示系统的范围和边界,在系统边界内描述的是_________,在边界外描述的是_______。
4.用例模型中的执行者可以是___________,也可以是_______。
5.用例模型中的用例之间的关联有__________关联,__________关联,__________关联,__________关联。
6.在UML的对象类图中,类之间的关系有_________,_________,_________,_________,和_________5种
7.在UML软件开发过程中产生的对象动态建模型中消息有四种,它们是________消息,
________消息,________消息,________消息。
8.________图和__________图用来表达对象之间的交互,是描述一组对象如何完成某个行为的模型化工具。
9.活动图中活动状态的迁移_________由事件进行触发,一个活动执行完毕_______进入下一个活动状态。
10. 在类的层次结构中,通常上层类称为________或_________,下层类称为_________。
11. UML中的五个不同视图可以完整地描述出所建造的系统,这五种视图是________视图,________视图,________视图,________视图,________视图。
12. UML中有10种基本图可以完整地描述出所建造的系统,这10种图是________图,
________图,________图,________图,________图,________图,________图,________图,________图,________图。
二、判断题
1. UML设定的目标之一是运用面向对象概念来构造系统模型。
()
2.类是关于对象性质的描述,由方法和数据集成。
()
3.面向对象技术的最大优点是减少了软件的开发时间。
()
三、选择题
1.封装是指把对象的()结合在一起,组成一个独立的对象。
A、属性和操作
B、信息流
C、消息和事件
D、数据的集合
2.封装是一种()的技术,目的是使对象的生产者和使用者分离,使对象的定义和实现分开。
A、工程化
B、系统维护
C、信息隐蔽
D、产生对象
3.面向对象的方法中的()机制使得子类可以自动的拥有(复制)父类全部的属性和操作。
A、约束
B、对象映射
C、信息隐蔽
D、继承
4. UML的软件以()为中心,以系统体系结构为主线,采用循环,迭代,渐增的方式进行开发。
A、用例
B、对象
C、类
D、程序
5.UML的()模型图由类图,对象图,包图,构件图,和配置图组成。
A、用例
B、静态
C、动态
D、系统
6.UML的()模型图由活动图,顺序图,状态图,和合作图组成。
A、用例
B、静态
C、动态
D、系统
7.在UML的需求分析建模中,()模型图必须与用户反复交流并加以确认。
A、配置
B、用例
C、包
D、动态
8.UML的客户需求粉色系使用的CRC卡上“责任”一栏的内同主要描述类的()和操作。
A、对象成员
B、关联对象
C、属性
D、私用成员
9.UML客户需求分析产生的用例模型描述了系统的()。
A、状态
B、体系结构
C、静态模型
D、功能要求
10.在UML的需求分析建模中,用例模型必须与()反复交流并加以确认。
A、软件生产商
B、用户
C、软件开发人员
D、问题领域专家
11.在UML的需求分析建模中,对用例模型中的用例进行细化说明应使用()。
A、活动图
B、状态图
C、配置图
D、构件图
12.类和对象都有属性,他们的差别是:类描述了属性的类型,而对象的属性必须有()。
A、正负号
B、动作
C、具体值
D、私有成员
13.顺序图和合作图主要用于对用例中()的建模,用他们来描述用例图的行为。
A、数据流
B、控制流
C、消息流
D、数据字典
14.顺序图的模型元素有(),消息,链接等,这些模型元素表示某个用例中的若干个对象和对象之间所传递的消息,来对系统的行为建模。
A、对象
B、箭线
C、活动
D、状态
15.顺序图描述()对象之间消息的传递顺序。
A、某个
B、单个
C、一个类产生的
D、一组
16.顺序图和合作图建立了UML面向对象开发过程中的对象动态()模型。
A、交互
B、状态
C、体系结构
D、软件复用
17.状态图可以表现()在生存期的行为,所经历的状态序列,引起状态转移的时间以及因状态转移而引起的动作。
A、一组对象
B、一个对象
C、多个执行者
D、几个子系统
18..状态图描述一个对象在不同()的驱动下发生的状态迁移。
A、事件
B、对象
C、执行者
D、数据
19.活动图中动作状态之间的迁移不是靠()触发的,当活动(动作)状态中的活动完成时迁移就触发。
A、对象
B、事件
C、执行者
D、系统
20.()是软件(逻辑)系统体系结构(类,对象,他们间的关系和协作)中定义的概念和功能在物理体系结构中的实现。
A、构件
B、结点
C、配置图
D、顺序图
21.()的基本元素有结点,构件,对象,连接,依赖等。
A、构件图
B、状态图
C、顺序图
D、配置图
22. 通过执行对象的操作改变该对象的属性,但它必须通过( )的传递。
A、接口
B、消息
C、信息
D、操作
23.面向对象的主要特征除对象惟一性、封装、继承外,还有( )。
A、多态性
B、完整性
C、可移植性
D、兼容性
24.火车是一种陆上交通工具。
火车和陆上交通工具之间的关系是( )关系。
A、组装
B、整体部分
C、has a
D、一般具体
25.汽车有一个发动机,因而汽车与发动机之间的关系是()关系。
A、一般与特殊
B、整体与部分
C、分类关系
D、is a 关系
26.在有多重继承的类层次结构图中,它的类层次结构图是()层次结构
A、树型
B、网状性
C、星型
D、环型
四、名词解释
1.类
2.封装
3.继承性
4.消息
5.动态绑定
6.多态性
7.构造图
8.标记值
9.约束
10.用例
11.同步消息
12.异步消息
五、简答题
1.说出面向对象分析的步骤
2.说出面向对象设计的步骤
3.UML中,状态的图符由几部分组成?每部分的内容是什么?
六、应用题
1.交通工具分为空中、陆上、水上交通工具,空中交通工具分为客机、货机、专用轻型机;陆上交通工具分为火车、汽车,火车和汽车又分客车、货车,水上交通工具有轮船,轮船分为客轮、货轮、客货混合轮。
建立交通工具的对象模型。
2.窗口分为对话窗、图形窗、滚动窗三种;对话窗中有若干对话项,由唯一的项名字来确定,对话项分为按钮、选择项和正文项三种,选择项中有若干选择项入口;图形窗中有若干形状元素,形状元素分为一维形状和二维形状,一维形状又分为直线、圆弧和折线;二维形状分为圆、椭圆、矩形和多边形,其中多边形和折线由若干有序顶点组成,正文窗是滚动窗的一种,而图形滚动窗既是一种图形窗又是一种滚动窗。
请建立该窗口系统的对象模型。