软工2021上下午第六题(组合模式)

阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
层叠菜单是窗口风格的软件系统中经常采用的一种系统功能组织方式。层叠菜单中包含的可能是一个菜单项(直接对应某个功能),也可能是一个子菜单,现在采用组合(composite)设计模式实现层叠菜单,得到如图6-2所示的类图。
在这里插入图片描述

package cn.itcast.hotel.test;import java.util.List;abstract class MenuComponent {//构成层叠菜单的元素(1) String name;public void printName() {System.out.println(name);}(2)public abstract boolean removeMenuElement(MenuComponent element);(3)}
package cn.itcast.hotel.test;import java.util.ArrayList;
import java.util.List;/*** @author lst* @date 2023年11月28日 15:42*/
class Menu extends MenuComponent {(4)public Menu(String name) {this.name = name;this.elementList = new ArrayList<>();}public boolean addMenuElement(MenuComponent element) {return elementList.add(element);}public boolean removeMenuElement(MenuComponent element) {return elementList.remove(element);}public List<MenuComponent> getElement() {return elementList;}}
package cn.itcast.hotel.test;import java.util.List;/*** @author lst* @date 2023年11月28日 15:44*/
class MenuItem extends MenuComponent {public MenuItem(String name) {this.name = name;}public boolean addMenuElement(MenuComponent element) {return false;}public boolean removeMenuElement(MenuComponent element) {return false;}public List<MenuComponent> getElement() {return null;}
}
package cn.itcast.hotel.test;import java.util.List;/*** @author lst* @date 2023年11月28日 15:45*/
class CompositeTest {public static void main(String[] args) {MenuComponent mainMenu = new Menu("Insert");MenuComponent subMenu = new Menu("Chart");MenuComponent element = new MenuItem("On This Sheet");(5)subMenu.addMenuElement(element);printMenus(mainMenu);}private static void printMenus(MenuComponent ifile) {ifile.printName();List<MenuComponent> children = ifile.getElement();if (children == null) {return;}for (MenuComponent element : children) {printMenus(element);}}
}

答案
(1)protected
(2)abstract boolean addMenuElement(MemuComponent element)
(3)abstract List getElement()
(4)List elementList
(5)mainMenu.addMenuElement(subMenu)
答案解析:
本题是典型的组合模式应用。
首先根据类图中name标注的为#(+表示public,-表示private,#表示protected),第(1)空对name的修饰应该是protected。
然后根据抽象类和实现类的对应关系,可以补充第(2)(3)空,这两处缺失的方法根据下文代码进行补充,注意方法名必须用abstract修饰,并且注意抽象方法的写法没有具体方法体。其中第(2)空填写abstract boolean addMenuElement(MemuComponent element) ;
第(3)空填写abstract List getElement();
第(4)空缺失了一个属性,此时根据下文的同名构造函数会发现,此处传参给了this.name以及this.elementList,name可以根据父类继承使用,而elementList需要定义,因此此处缺失的参数是elementList,类型根据后面的赋值类型进行定义,即第(4)空填写List elementList。
第(5)空看懂逻辑mainmenu中添加subMenu

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

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

相关文章

中文编程开发工具高级版全部构件工具箱列表,中文编程自由版下载

中文编程开发工具高级版全部构件工具箱列表&#xff0c;中文编程自由版下载 附&#xff1a;中文编程工具构件工具箱总共22组305个构件&#xff0c;构件明细如下&#xff1a;文本件16个&#xff1a; &#xff08;普通标签&#xff0c;连接标签&#xff0c;闪动标签&#xff0c;立…

香港高才通计划官网入口,附申请流程+高校名单+好处!

香港高才通计划官网入口&#xff0c;附申请流程高校名单好处&#xff01; 首先给出官网入口&#xff1a; 或者百度“香港入境处”&#xff0c;点击带有官方标志的入境处网站&#xff1a; 然后进入“我们的服务”→“签证/许可”选项→点“吸引人才”→“高端人才通行證計劃”即…

HelpLook可以作为wordpress的替代品,帮助企业快速搭建博客

博客作为一个非常有价值的平台&#xff0c;在当今的数字时代具有重要的意义。对于个人和企业来说&#xff0c;选择一款适合自己需求的专业博客搭建软件至关重要。本篇文章将会通过对比两个专业的博客搭建软件——HelpLook和WordPress&#xff0c;看看为什么我说HelpLook可以作为…

内部类, Comparable接口, Comparator接口, Cloneable接口 ---java

目录 一. 内部类 1.1 静态内部类 1.2 实例内部类 1.3匿名内部类 二. 接口的使用实例 2.1 Comparable接口 2.2 Comparator接口 ---比较器 2.3 Cloneable接口 深拷贝浅拷贝 一. 内部类 当一个事物的内部&#xff0c;还有一个部分需要一个完整的结构进行描述&#xff0…

Unity中Shader的BRDF解析(一)

文章目录 前言现在我们主要来看Standard的 漫反射 和 镜面反射一、PBS的核心计算BRDF二、Standard的镜面高光颜色三、具体的BRDF计算对于BRDF的具体计算&#xff0c;在下篇文章中&#xff0c;继续解析 四、最终代码.cginc文件Shader文件 前言 在上篇文章中&#xff0c;我们解析…

DDR-MIG 学习记录

MIG调试总结&#xff1a; 对vivado软件中用于控制DDR2 / DDR3 的 控制器MIG(Memory Interface Generator)IP核进行了仿真测试&#xff0c;以学习如何用IP核来控制FPGA板载SDRAM的读写。我们只需要学会MIG的接口控制就可以。 ①配置IP核 Xilinx 的 DDR 控制器的名称简写为 MIG&…

brk和sbrk

在计算机程序中&#xff0c;“program break”通常指的是堆的当前内存边界。当我们改变堆的大小&#xff08;即分配或释放内存&#xff09;&#xff0c;其实就是在命令内核改变进程的“program break”位置。 最初&#xff0c;“program break”正好位于未初始化数据段(bss)末…

vue3中的动态component组件

is属性来指定要渲染的组件(填写组件名&#xff09; 多个子组件通过component标签挂载在同一个父组件中&#xff0c; 可以修改is属性进行动态切换组件。 可以搭配<keep-alive></keep-alive>使用。 父组件代码&#xff1a; <template><div style"fon…

2017年五一杯数学建模A题公交车排班问题解题全过程文档及程序

2017年五一杯数学建模 A题 公交车排班问题 原题再现 随着徐州市经济的快速发展&#xff0c;公交车系统对于人们的出行扮演着越来越重要的角色。在公交车资源有限的情况下&#xff0c;合理的编排公交车的行车计划成为公交公司亟待解决的问题。以下给出公交车排班问题中的部分名…

【NI-RIO入门】为CompactRIO供电

在大多数情况下&#xff0c;您可以使用可直接连接系统的电源&#xff0c;例如墙上的电源插座。但是&#xff0c;某些应用程序或环境缺乏可用电源&#xff0c;您必须使用其他电源&#xff0c;例如电池。无论您是否有可用电源&#xff0c;您可能都希望通过为系统提供一些冗余来确…

洛谷 P1605 USACO迷宫 (详细解析和AC代码)【深搜+打表】

P1605 迷宫 前言题目题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示题目分析注意事项 代码后话王婆卖瓜 题目来源 前言 没什么好说的深搜yyds&#xff01;直接深搜一遍过&#xff01; 题目 题目描述 给定一个 N M N \times M NM 方格的迷宫&#xff0c;迷…

python加速方法:GPU加速(numba库)Demo及编写注意事项

上周使用GPU加速了一个算法&#xff0c;效果特别惊艳&#xff0c;由于算法代码本身没有太大参考价值&#xff0c;所以这里只记录了一些心得体会&#xff0c;以便后续遇到问题进行参考排查 numba加速代码编写注意事项 numba加速代码编写一定要注意&#xff1a; 1、开辟空间&am…

【Java并发】聊聊不安全的HashMap以及ConcurrentHashMap

在实际的开发中&#xff0c;hashmap是比较常用的数据结构&#xff0c;如果所开发的系统并发量不高&#xff0c;那么没有问题&#xff0c;但是一旦系统的并发量增加一倍&#xff0c;那么就可能出现不可控的系统问题&#xff0c;所以在平时的开发中&#xff0c;我们除了需要考虑正…

Python从入门到精通(黑马课程)

目录 运算符 数字运算符 比较运算符 逻辑运算符 转义字符 变量使用 变量定义 变量类型 变量命名 变量函数 input函数 type函数 条件语句 If 格式 案例1&#xff0c;判断年龄 案例2&#xff0c;借钱 案例3&#xff0c;and、or应用 循环语句 for 格式 案例…

如何使用Cloudreve将个人电脑打造为私有云盘并实现远程访问

文章目录 1、前言2、本地网站搭建2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 云存储概念兴起后&#xff0c;现在市面上也已经有了很多公有云盘。但一段时间后…

redis基本数据结构

Redis入门&#xff1a;五大数据类型 文章目录 Redis入门&#xff1a;五大数据类型一.概述二.Redis的基本了解三.Redis五大数据类型1.String (字符串)2.List(列表)3.Set集合(元素唯一不重复)4.Hash集合5.zSet(有序集合) 一.概述 什么是Redis Redis&#xff08;Remote Dictiona…

Java 之 lambda 表达式(一)

目录 一. 前言 二. lambda 表达式语法 2.1. 语法1&#xff1a;无参&#xff0c;无返回值 2.2. 语法2&#xff1a;一个参数&#xff0c;无返回值 2.3. 语法3&#xff1a;两个参数&#xff0c;lambda 体中有多条语句 2.4. 语法4&#xff1a;两个以上参数&#xff0c;有返回…

C++ STL-----容器

STL容器就是将运用最广泛的一些数据结构实现出来 常用的数据结构&#xff1a;数组, 链表,树, 栈, 队列, 集合, 映射表 等 这些容器分为序列式容器和关联式容器两种: 序列式容器:强调值的排序&#xff0c;序列式容器中的每个元素均有固定的位置。 关联式容器:二叉树结构&…

深入了解Java8新特性-日期时间API:LocalDateTime类

阅读建议 嗨&#xff0c;伙计&#xff01;刷到这篇文章咱们就是有缘人&#xff0c;在阅读这篇文章前我有一些建议&#xff1a; 本篇文章大概22000多字&#xff0c;预计阅读时间长需要20分钟以上。本篇文章的实战性、理论性较强&#xff0c;是一篇质量分数较高的技术干货文章&…

c++没有返回值的返回值

上面的函数search没有返回值,因为a不等于1,但是输出的时候会输出6.这恰巧是x的值,如果我们希望a不等于1时返回x,那么这种结果反而是正确的.有时候这种错误的代码可能产生正确的结果反而会加大debug难度 int search(int n) { 00007FF66DB723E0 mov dword ptr [rsp8],e…