厦门理工学院软件工程设计模式期末复习资料
- 格式:docx
- 大小:4.06 MB
- 文档页数:8
软件工程期末考试复习资料1版权声明:本文版权归05112114、05112125 所有,未经许可,任何任何媒体均不得改变其形式,进行转载或摘录,违者必究!软件工程期末考试复习资料一(仅参考)拟订人:超越吉他手、朱古力、哖_少オ輕狂第一章:软件工程的产生和发展有关复习资料一、软件工程的定义:1、软件危机的产生:软件危机的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。
2、软件危机主要表现:两个方面:①软件产品质量低劣,甚至开发过程就夭折②软件生产率低,不能满足需要3、软件工程的三要素:①方法:完成软件开发各项任务的技术方法②工具:研究支撑软件开发方法的工具③过程:为开发高质量软件所规定的各项任务的工作步骤4、软件工程研究的标准及目标:标准:分为4个层次,国际标准、行业标准、企业规划、项目规划目标:以较少的投资获取高质量的软件。
有易于维护、低的开发成本、高性能、缩短开发期5、软件工程研究的主要内容:以下两个方面:①软件开发方法、技术;软件开发工具及环境②软件管理技术、软件规范(国际规范)7、软件工程学的目的:①以较少的投资获取高质量的软件②运用科学的方法和工程化的规范管理来指导软件开发③克服软件危机8、软件工程的基本原则:如下4条基本原则①必须认识软件需求的变动性,采取适当措施来保证结果产品能忠实地满足用户需求②稳妥的设计方法大大地方便了软件开发,以达到软件工程的目标③软件工程项目的质量与经济开销直接取决于对它所提供的支撑的质量与效用④有效的软件工程只有在对软件过程进行有效管理的情况下才能实现9、软件工程过程及特性:是指在软件工具的支持下,所进行的一系列软件工程活动包括4类基本过程:1)软件规格说明书2)软件开发3)软件确认4)软件演进特性:可理解性、可见性、可靠性、可支持性、可维护性、可接受性、开发效率和健壮性等。
二、软件与软件生存周期1、软件的概念和特点1)概念:软件是程序以及开发使用维护程序所需的所有文档2)软件的构成:由应用程序、系统程序、面向用户的文档及面向开发者的文档4部分构成即:软件=程序+文档3)特点:①软件是一种逻辑实体,不是具体的物理实体②软件产品的生产主要是研制③软件具有复杂性,开发和运行常受到计算机系统的限制、④软件成本昂贵,开发方式还没完全摆脱手工生产方式⑤软件不存在老化和磨损,存在在退化问题2、软件的分类1)按照软件功能划分①系统软件②支撑软件③应用软件2)按照软件规模划分微型、小型、中型、大型、甚大型、极大型3)按照软件工作方式划分实时处理软件、交互式软件、批处理软件4)按照软件服务对象的范围划分项目软件、产品软件3、软件结构及结构图衡量软件结构的有关指标:1)深度2)宽度3)扇出数扇入数软件结构的形态准则:顶部宽度小,中部宽度大,底部宽度次之;在顶部有较高的扇出数底部有较高的扇入数软件结构:1)模块(构成软件系统结构的基本元素)2)模块化3)软件的层次结构4)树状结构:特点是是程序的主模块、整个结构只有一个顶层模块、也只有一个上级模块、同一层模块之间没有横向联系5)网状结构:特点是任何两个模块之间有双向的关系、都是平等的结构图的构成:主要有模块、调用、数据4、软件生存期有关资料1)定义:是指从软件开始开发到报废的全过程,亦称软件生存期(l i f e c y c l e)。
可编辑修改精选全文完整版一、单选题(共20题,40分)1、使用数据流图,并不断细化的需求获取方法是()。
(2.0)A、简易的应用规格说明B、面向数据流自顶向下逐步求精C、访谈D、快速原型法正确答案: B2、Z语言是以()为基础的形式化规格说明语言。
(2.0)A、微积分B、概率C、图形D、一阶谓词演算正确答案: D3、HIPO是指(2.0)A、层次输入处理输出图或表B、层次功能结构图C、功能结构图D、输入处理输出图或表正确答案: A4、高铁调用系统最适宜采用()方法。
(2.0)A、有穷状态机B、 Petri网C、 Z语言D、一阶线性时态逻辑正确答案: B5、假设学生年龄的成绩输入范围为18-25,则根据等价类划分技术,下列划分正确的是()。
(2.0)A、可划分为2个有效等价类,2个无效等价类B、可划分为1个有效等价类,2个无效等价类C、可划分为2个有效等价类,1个无效等价类D、可划分为1个有效等价类,1个无效等价类正确答案: B6、用于并发系统,解决定时问题的形式化方法是()。
(2.0)A、 VDMB、 Z语言C、 Petri网D、一阶线性时态逻辑正确答案: C7、软件生命周期中所花费费用最多的阶段是(2.0)A、需求分析B、软件总体设计C、软件维护D、软件实现正确答案: C8、软件质量保证措施SQA不包括:(2.0)A、复审或评审B、软件测试C、程序正确性证明D、软件代码编写正确答案: D9、希望确定软件实现的功能是否与需求规格说明书一致,需进行()。
(2.0)A、单元测试B、有效性测试C、确认测试D、集成测试正确答案: C10、总体设计不包括:(2.0)A、体系结构设计B、数据库设计C、模块内算法设计D、逻辑数据结构设计正确答案: C11、关于类和对象的说法,正确的是(2.0)A、一个类只能有一个角色B、类的命名必须用动词C、类的所有对象都具有相同的属性和操作D、类是对象的实例,对象是类的抽象正确答案: C12、数据字典的基本功能是(2.0)A、数据库设计B、数据通信C、数据定义D、数据维护正确答案: C13、软件需求规格说明的内容不应该包括(2.0)A、主要功能B、算法的描述C、用户界面及其运行环境D、软件性能正确答案: B14、增量模型在添加新的模块时,有一个要求是()(2.0)A、需要更多的测试B、有足够的开发人员C、软件体系结构开放D、各个模块都要进行评审正确答案: C15、在软件详细设计过程中不采用的工具是(2.0)A、判定表B、PDLC、程序流程图D、DFD正确答案: D16、软件测试方法中,黑盒测试方法和白盒测试方法是常用的方法,其中黑盒测试方法主要用于测试(2.0)A、结构合理性B、软件外部功能C、程序正确性D、程序内部逻辑正确答案: B17、耦合是模块之间的相对独立性的度量。
软件工程期末考试复习题-精品2020-12-12【关键字】方案、情况、方法、环节、条件、动力、空间、文件、质量、计划、运行、传统、认识、问题、系统、机制、有效、务必、密切、整体、尽早、平衡、合理、良好、合作、沟通、执行、统一、发展、细化、建立、制定、提出、发现、了解、研究、特点、突出、关键、安全、稳定、网络、准则、成果、要素、基础、需要、素质、环境、工程、项目、职能、资源、体系、能力、需求、方式、作用、标准、增量、结构、科学性、任务、反映、速度、关系、分析、提倡、逐步、形成、满足、严格、规划、管理、保证、维护、服务、指导、支持、优化、调整、完善、方向、适应、实现、提高、实施、改进、规范、中心、关心、规范化、有效性、复杂性、重要性一、选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内,每小题1分)软件工程1.软件产品的开发主要是(D )。
A.复制B.再生产C.拷贝D.研制2.作坊式小团体合作生产方式的时代是(C )时代。
A.程序设计B.软件生产自动化C.程序系统D.软件工程3.软件工程与计算机科学性质不同,软件工程着重于( C )。
A.理论研究B.原理探讨C.建造软件系统D.原理的理论4.与计算机科学的理论研究不同,软件工程是一门( C )学科。
A.理论性B.原理性C.工程性D.心理性5.软件工程的出现主要是由于( C )。
A.程序设计方法学的影响B.其它工程科学的影响C. 软件危机的出现D.计算机的发展6.在软件工程项目中,不随参与人数的增加而使软件的生产率增加的主要问题是( D )A、工作阶段间的等待时间B、生产原型的复杂性C、参与人员所需的工作站数D、参与人员之间的通信困难7.软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是(C )A、硬件环境B、软件开发的环境C、软件开发工具和软件开发的环境D、开发人员的素质8、下列不属于软件工程方法学三要素的是( D ):A、方法B、工具C、过程D、操作周期1.将每个模块的控制结构转换成计算机可接受的程序代码是(A )阶段的任务。
《软件工程》期末考试题及答案一、选择题(每题2分,共20分)1. 以下哪个不属于软件工程的三个基本活动?A. 软件规格B. 软件设计C. 软件编码D. 软件测试答案:D2. 以下哪种编程范式主要用于降低软件复杂性?A. 面向对象编程B. 过程式编程C. 函数式编程D. 逻辑编程答案:A3. 以下哪个不属于软件工程的基本原则?A. 分而治之B. 信息隐藏C. 模块化D. 编码规范答案:D4. 以下哪个不是软件工程的四大支柱?A. 软件需求B. 软件设计C. 软件验证D. 软件项目管理答案:C5. 以下哪种软件过程模型是迭代和增量的?A. 瀑布模型B. 快速应用开发C. 敏捷开发D. 原型模型答案:C6. 以下哪个不是软件测试的级别?A. 单元测试B. 集成测试C. 系统测试D. 需求测试答案:D7. 以下哪种软件维护类型是最常见的?A. 更正性维护B. 适应性维护C. 完善性维护D. 预防性维护答案:A8. 以下哪个不属于软件项目的风险管理策略?A. 风险避免B. 风险转移C. 风险减轻D. 风险接受答案:B9. 以下哪个不属于软件需求分类?A. 功能需求B. 性能需求C. 可用性需求D. 测试需求答案:D10. 以下哪个不属于软件设计的准则?A. 模块化B. 信息隐藏C. 功能耦合D. 数据抽象答案:C二、填空题(每题2分,共20分)11. 软件工程的主要目标是提高软件的__________和降低软件的__________。
答案:可维护性、成本12. 软件开发的三个基本阶段是:__________、__________、__________。
答案:需求分析、设计、实现13. 软件过程模型分为__________模型和__________模型。
答案:预测性、适应性14. 软件测试的四个基本级别是:__________、__________、__________、__________。
答案:单元测试、集成测试、系统测试、验收测试15. 软件维护的四种类型是:__________、__________、__________、__________。
一、填空题(每空1分, 共20分)1.软件生存周期一般可分为__问题定义__、可行性研究、_需求分析_____、设计编码、__测试________、运行与维护阶段。
2.按软件旳功能进行划分, 软件可以划分为系统软件、支撑软件和应用软件。
3.可行性研究重要集中在如下四个方面经济可行性、技术可行性、法律可行性和抉择。
4.顾客界面旳可使用性是顾客界面设计最重要旳也是最基本旳目旳。
5.常见旳软件概要设计措施有3大类: 以数据流图为基础构造模块构造旳___构造化设计措施_________, 以数据构造为基础构造模块旳__jackson措施__________, 以对象、类、继承和通信为基础旳__面向对象设计措施__________。
6.__数据流图________和__数据字典___共同构成系统旳逻辑模型。
7.软件测试旳措施有__分析措施________和___非分析措施_______(即黑盒法)。
8.单元测试一般以___白盒_____________测试为主, ___黑盒______测试为辅。
9.成本估计措施重要有__自底向上估计________、_自顶向下估计_________和算法模型估计三种类型。
二、单项选择题(每题2分, 共10分)1.下列哪个阶段不属于软件生存周期旳三大阶段( C )。
A.计划阶段B.开发阶段2. C.编码阶段 D.维护阶段3.需求分析是(A )。
A. 软件开发工作旳基础B. 软件生存周期旳开始C. 由系统分析员单独完毕旳D. 由顾客自己单独完毕旳原型化措施是软件开发中一类常用旳措施, 它与构造化措施相比较, 更需要( B )。
A. 明确旳需求定义B.完整旳生命周期C、较长旳开发时间D、纯熟旳开发人员软件维护时, 对测试阶段未发现旳错误进行测试、诊断、定位、纠错, 直至修改旳回归测试过程称为( A )。
A、改正性维护B、适应性维护C、完善性维护D、防止性维护一般说来, 投入运行旳软件系统中有错误(A )。
《软件工程》期末复习重点第一章软件工程1.什么是软件工程。
A.把系统化的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;b.研究a中提到的途径。
2. 软件工程的三要素:方法、工具和过程。
第二章软件过程1.软件生命周期分为哪几个阶段?每个阶段的基本任务是什么?a.软件定义:确定软件开发工程必须完成的总目标问题定义:要解决的问题是什么可行性研究:上阶段所确定的问题是否有可行的解决办法?需求分析:目标系统必须做什么b.软件开发:具体设计和实现在前一个时期定义的软件。
概要设计:怎样宏观地解决问题详细设计:应如何具体地实现这个系统编码和单元测试:写出正确的、易理解、易维护的程序综合测试:通过各类型测试使达到预定要求。
c.运行维护:修正错误,使软件持久地满足用户需要。
改正性维护:诊断和改正使用中的错误适应性维护:修改以适应环境变化完善性维护:根据用户的要求改进和扩充以完善预防性维护:修改以为将来的维护作准备2.常用的过程模型有哪些?各自的特点及不足。
如:瀑布模型的不足是不能适应需求的动态变更。
A.瀑布模型特点:可强迫开发人员采用规范化的方法。
严格地规定了每个阶段必须提交的文档。
要求每个阶段交出的所有产品都必须是经过验证(评审)的。
缺点:太理想化,由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。
如果需求规格与用户需求之间有差异,就会发生这种情况。
只适用于项目开始时需求已确定的情况。
B.快速原型模型特点:快速软件产品开发基本上是线性顺序进行。
降低了规格说明文档变化的可能性。
减少了后续阶段错误的可能性。
c.增量模型优点:人员分配灵活,刚开始不用投入大量人力资源。
当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径。
增量能够有计划地管理技术风险。
缺点:要求构件具备开放式的体系结构。
易退化为边做边改模型,从而使软件过程的控制失去整体性。
《软件工程》期末总复习题(新版)(含作业及答案、复习重点、考核说明)一、选择题:(软件工程作业1 第1~4章)1.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做(C)。
A.软件工程B.软件周期C.软件危机D.软件产生2.瀑布模型本质上是一种(A)模型。
A.线性顺序B.顺序迭代C.线性迭代D.早期产品3.瀑布模型存在的问题是(B)。
A.用户容易参与开发 B.缺乏灵活性C.用户与开发者易沟通 D.适用可变需求4.螺旋模型是一种将瀑布模型和(A)结合起来的软件开发模型。
A.增量模型B.专家系统C.喷泉模型D.变换模型5.原型化方法是用户和设计者之间执行的一种交互构成,适用于(A)系统。
A.需求不确定性高的 B.需求确定的C.管理信息 D.实时6.下列有关软件工程的标准,属于国际标准的是(D )A.GBB.DINC.ISOD.IEEE7.结构化方法是一种基于(D)的方法。
A.数据结构B.程序结构C.算法D.数据流8.软件可行性研究实质上是要进行一次( A)需求分析、设计过程。
A、简化、压缩的B、详细的C、彻底的D、深入的9.可行性研究的目的是(D)A、分析开发系统的必要性B、确定系统建设的方案C、分析系统风险D、确定是否值得开发系统10.设年利率为i,现存入p元,不计复利,n年后可得钱数为(C)。
A、P×(1+i*n)B、P× (i+1)*nC、p×(1+i)nD、p×(i+n)11.可行性研究是在(A)之前A、系统开发B、测试C、试运行D、集成测试12.可行性研究需要的时间长短取决于系统的规模,一般来说,可行性研究的成本只是预期总成本的(C)。
A、1%B、20%C、8%D、50%13.我国正式颁布实施的(B)对计算机病毒的定义具有法律性、权威性。
A.《计算机软件保护条例》B.《中华人民共和国计算机信息系统安全保护条例》C.《中华人民共和国著作权法》D.《计算机病毒防治管理办法》14.效率是一个性能要求,因此应当在以下哪个阶段规定?BA、可行性分析B、需求分析C、概要设计D、详细设计15.需求规格说明书的作用不包括(D)A、软件验收的依据B、用户与开发人员对软件要做什么的共同理解C、软件可行性研究的依据D、软件设计的依据16.数据字典是用来定义(D)中的各个成份的具体含义的。
软件工程复习资料-完整版一、概述软件工程是一门关于开发、维护和管理软件的综合学科。
它涵盖了软件开发的各个阶段,包括需求分析、设计、编码、测试和维护。
软件工程的目标是提供高质量的软件,满足用户的需求,同时将开发过程控制在预定的时间和预算范围内。
二、软件生命周期1. 需求分析阶段在需求分析阶段,开发团队与用户沟通,了解用户的需求和期望。
通过需求分析,确定软件的功能和性能要求,制定详细的需求规格说明。
2. 设计阶段在设计阶段,团队根据需求规格说明,设计软件的整体架构和模块。
设计阶段包括概要设计和详细设计,概要设计主要确定软件的整体结构,详细设计则更加具体,包括模块的功能和接口设计。
3. 编码阶段在编码阶段,根据详细设计,实现软件的各个模块。
编码时应遵循编程规范,确保代码的可读性和可维护性。
同时,要进行单元测试,确保每个模块的功能正确。
4. 测试阶段在测试阶段,对软件进行不同层次的测试,包括单元测试、集成测试和系统测试。
单元测试测试各个模块的功能,集成测试测试模块之间的接口,系统测试测试整个系统的功能和性能。
5. 部署和维护阶段在软件开发完成后,需要将软件部署到目标环境中,并进行用户培训。
同时,还需要对软件进行维护和升级,以解决出现的问题和满足用户的需求变化。
三、软件工程的原则1. 模块化将软件划分为多个模块,每个模块负责特定的功能。
模块化能够提高软件的可维护性和复用性,同时有利于团队的协作开发。
2. 可伸缩性软件应该具备可伸缩性,能够满足不同规模和需求的用户。
在设计和实现软件时,需要考虑未来的扩展和升级,保证软件的灵活性。
3. 可测试性软件应该具备可测试性,方便进行各个阶段的测试。
在设计和编码时,需要考虑如何进行自动化测试,提高测试的效率和覆盖率。
4. 可维护性软件应该具备可维护性,方便对软件进行改进、修复和升级。
在设计和编码时,需要遵循良好的编程规范,提高代码的可读性和可维护性。
5. 文档化软件开发过程需要进行详细的文档记录,包括需求文档、设计文档、测试文档等。
软件工程复习资料选择题,请从四个可选项中选择正确答案。
1.软件工程学科出现的主要原因是(C。
A. 计算机的发展B. 其他工程科学的影响C. 软件危机的出现D. 程序设计方法学的影响2、(A)是职业软件工程师的必要条件。
A.自律、善于沟通、具有一定的软件技能B.编程速度快C.熟悉众多的软件环境D.语言天赋3.在E-R 模型中,包含以下基本成分(C)。
A.数据、对象、实体B.控制、联系、对象C.实体、属性、联系D.实体、数据、联系4.软件需求分析产生一个重要文档是(.B )。
A.软件维护说明书B.需求规格说明书C.可行性报告D.初步用户手册5.内聚程度较低的是(D )。
A.通信内聚B.过程内聚C.顺序内聚D.时间内聚6.概要设计是软件系统结构的总体设计,以下选项中不属于概要设计的是(D )A.把软件划分成模块B确定模块之间的调用关系C.确定各个模块的功能D.设计每个模块的伪代码7、程序流程图与数据流程图的关系(A)。
A.不确定B.数据流程图可以转换成程序流程图C.数据调用关系D.程序流程图可以转换成数据流程图8.对象实现了数据和操作的结合,使数据和操作(D)于对象的统一体中。
A.结合B.隐藏C.封装D.抽象9.类有3种类型,即(B )。
A.边界类、实体类、控制类B.实体类、控制类、界面类C.控制类、实体类、虚类D.界面类、控制类、公共类10.(D )是一般化类与特殊化类之间的一种关联形式,设计时应该适当使用这种耦合。
A.消息连接B.参数传递C.方法重写D.继承11、软件工程的研究内容具有层次化结构,最底层是质量保证层,中间层是(C),最上层是工具层。
A.过程层B.方法层C.过程层和方法层D.系统层12、可行性研究的四大要素是(D)。
A.经济、技术、法律和社会环境B.经济、技术、开发组织能力和领导者水平C.经济、技术、计算机硬件环境和网络带宽D.经济、技术、软件开发工具和人员的稳定性13、针对需求不确定的软件开发,比较好的模型是(A)。
软件工程期末试题及答案(这是一份软件工程期末试题及答案的示例,不包含具体的问题和答案。
请根据需要自行编写试题和答案内容。
)简介:本文为软件工程期末试题及答案,旨在帮助学生对软件工程的知识点进行复习和巩固。
试题包含了软件工程的基础概念、方法和技术,答案部分提供了详细的解释和分析,以便学生理解并掌握相关知识。
一、选择题1. 下列哪个不是软件工程的基本原则?A. 可维护性B. 可测试性C. 可扩展性D. 可折叠性答案解析:考察软件工程的基本原则,解释了可维护性、可测试性和可扩展性的概念,并指出了可折叠性不属于软件工程的基本原则。
二、填空题2. 软件需求是用户对软件系统所提出的________________。
答案解析:考察软件需求的定义,填空部分需要填写“功能要求”、“性能要求”、“界面要求”或其他与软件系统相关的要求。
三、判断题3. 软件工程只涉及软件开发的过程,与软件维护无关。
正确/错误答案解析:考察软件工程的范畴,判断句需要填写“正确”或“错误”,并提供对答案的解释,解释软件工程包含软件开发和维护过程。
四、简答题4. 请述说软件测试的重要性及其作用。
答案解析:考察对软件测试的理解,答题部分需要详细阐述软件测试的重要性和作用,比如保证软件质量、发现和修复缺陷等。
五、论述题5. 软件开发生命周期模型有哪些?请比较它们之间的优缺点。
答案解析:考察对软件开发生命周期模型的了解,答题部分需要列举各种常见的软件开发生命周期模型(如瀑布模型、敏捷模型等),并对它们的优缺点进行比较。
总结:本文为软件工程期末试题及答案,内容涵盖了选择题、填空题、判断题、简答题和论述题,旨在帮助学生全面复习和巩固软件工程的知识点。
通过本文的学习,希望读者能够对软件工程有更深入的理解,并在期末考试中取得好成绩。
(本文内容为示例,请根据实际需要编写试题和答案,以及相应的解析和解释。
)。
设计模式期末复习资料
统一建模语言:
1.P3
a) 1. 用例图
b) 2. 类图
2.P7 类之间的关系:
a)有什么关系
i.关联关系(能够判断出关联关系的种类: 6种)
ii.依赖关系
iii.泛化关系
iv.接口与实现关系
原则部分:
3.面向对象设计原则P26 有哪些原则(特别注意5星原则)
a)单一职责原则(Single Responsibility Principle, SRP)
b)开闭原则(Open-close Principle, OCP)P28 细看
c)里氏代换原则(Liskov Substitution Principle, LSP)
d)依赖倒转原则(Dependency Inversion Principle, DIP)P34细看
e)接口隔离原则(Interface Segregation Principle, ISP)
f)合成复用原则(Composite Reuse Principle, CRP)
g)迪米特法则(Law of Demeter,LCD)
模式部分:了解的内容请自行翻阅该模式,主要知道模式是什么、他的组成角色、应用范围等等(稍微看下就行了)
1.抽象工厂模式(Abstract Factory):优缺点
a)优点:
i.抽象工厂模式隔离了具体类的生成,是的客户并不需要知道什么被创建。
ii.当一个产品族重的多个对象呗设计成一起工作时,他能够拨正客户端始终只使用同一个产品族中的对象。
iii.增加新的具体工厂和产品族很方便,无需修改已有系统,符合“开闭原则“。
2.单例模式(Singleton):什么是单例模式,怎么判断单例模式P134
a)什么是单例模式:动机与定义
b)怎么判断单例模式:P136
i.请自行翻阅模式分析、单例模式实例与解析:(看他的组成结构就拉到了)
3.组合模式:P181 能够选择和判断该模式:
看懂模式结构:
组合模式包含的角色:
具体实例:P186
4.享元模式:概念P53。
5.模版方法模式:了解,能够判断出即可。
P400
a)该模式请自行看模式动机与定义后概览P405的实例与类(看的懂就行)。
6.职责链模式:了解,能够判断出即可。
P262
a)该模式请自行看模式动机与定义后概览P265的实例与类(看的懂就行)。
7.中介者模式:了解,符合什么原则,优缺点。
P319
a)了解:稍微看下。
b)符合什么原则:该模式符合“单一职责原则“。
P320 模式动机中的
c)优缺点:P330
优点:
i.简化了对象之间的交互
ii.将各同事解耦
iii.减少子类生成
iv.对于复杂的对象之间的交互
缺点:
v.在具体中介者类中包含了同事之间的交互细节,可能会导致具体中介者类非常复杂,使得系统难以维护。
8.状态模式:判断P366
大题部分:
1.工厂方法模式和抽象工厂模式(重点):
a)属于的模式:创建型模式。
b)他们的对比、说明、对其的理解和看法。
P76
i.对比:工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。
工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式
可以创建多个
ii.工厂方法模式:
一个抽象产品类,可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类只能创建一个具体产品类的实例。
抽象工厂模式:
多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。
一个抽象工厂类,可以派生出多个具体工厂类。
每个具体工厂类可以创建多个具体产品类的实例。
c)类图的绘制。
d)具体翻阅该模式具体的类图和实例图以及结构模式的角色组成(细看、理解)。
P78
e)优缺点:
i.工厂方法模式:
1.优点:向客户隐藏了产品类实例化的细节,用户无需关心产品对应的工
厂,无需关心创建细节。
2.优点:工厂可以自主确定创建何种产品对象,不需要知道对象的细节。
3.优点:再加入新产品时候,只要添加一个具体工厂和具体产品,无需修改
其他部分。
具有很好的扩展性,完全符合开闭原则。
4.缺点:在添加新产品时候,需要编写新的具体产品类。
5.缺点:由于考虑到系统的可扩展性,需要引入抽象层增加了系统的抽象
性和理解难度,增加了系统的实现难度。
ii.抽象工厂模式:
1.优点:抽象工厂模式隔离了具体类的生成,客户端并不需要知道什么被
创建。
2.优点:当一个产品族重的多个对象被设计成一起工作时,他能保证客户
端只使用同一产品族中的对象。
3.优点:增加新的具体工厂和产品族很方便,无需修改现有的系统,符
合”开闭原则”
4.缺点:在添加新的产品对象的时候,难以扩展抽象工厂来生产新种类的
产品。
f)适用的场景。
P87
i.工厂方法模式:
1.一个类不知道他所需要的对象的类。
2.一个类通过其子类来指定创建哪个对象。
3.将创建对象的任务委托给多个工厂子类中的某一个类,客户端无需关心
具体细节。
ii.抽象工厂模式:
1.一个系统不应该依赖于产品类实例如何被创建、组合和表达的细节。
2.系统中有多于一个的产品族,而每次只使用一个产品族。
3.属于同一个产品族的产品将在一起使用。
4.系统提供一个产品类的库。
2.命令模式
a)实例
i.具体翻阅该模式具体的类图和实例图以及结构模式的角色组成(细看、理解)。
P275
b)类图
c)应用的场景P284
i.系统需要将请求调用者和请求接受者解耦,使得调用者和接受者不直接交互
ii.系统需要在不同的时间指定请求,将请求排队和执行请求
iii.系统需要支持命令的撤销和恢复操作
iv.系统需要将一组操作组合在一起,即支持宏命令
3.迭代器模式:
a)实例
i.具体翻阅该模式具体的类图和实例图以及结构模式的角色组成(细看、理解)。
P303
b)类图
c)应用的场景P314
i.访问一个具体对象的内容而无需暴露它的内部表示
ii.需要为聚合对象提供多种遍历方式
iii.为遍历不同的聚合结构提供一个统一的接口
4.策略模式
a)商场打折案例(掌握) P399 Null
i.
ii.
iii.
b)概念(本质)
i.策略模式的模式动机与定义P385
c)类图的绘制
i.具体翻阅该模式具体的类图和实例图以及结构模式的角色组成(细看、理解)。
P386
d)代码结构
i.同上。