软件设计与体系结构编程题汇总

news2024/11/28 8:37:18
  1. 现在需要开发一款游戏软件,请以单例模式来设计其中的 Boss 角色。角色的属性和动作可以任意设计。 要求:该 Boss 类可以在多线程中使用。( 8 分)
    在这里插入图片描述
Public class Boss{
	Private static Boss instance; //(2 分)
	Private Boss(){ }//(2 分)
	Public static Boss getInstance(){ // ( 2 分)
		If(instance == null){
			Synchronized(Boss.Class){ // ( synchronized 关键字, 2 分)
				If(instance == null)
					Instance = new Boss();
			}
		}
		return instance;
	}
}

或者

Public class Boss{
	Private static Boss instance = new Boss();//(4 分)
	Private Boss(){}// ( 2 分)
	Public static Boss getInstance(){//2 分
		Return instance;
	}
}
  1. 一个农场公司,专门负责培育各种水果,有葡萄,草莓和苹果,请使用工厂方法,编写工厂类和主程序,并在主程序中来完成草莓生长状态的描述。( 8 分)

    在这里插入图片描述

    Public interface Factory{
    	Fruit build();
    }
    Public class AppleFactory implements Factory{
    	Public Fruit build(){
    		Return new Apple();
    	}
    }
    Public class GrapeFactory implements Factory{
    	Public Fruit build(){
    		Return new Grape();
    	}
    }
    Public class StrawberryFactory implements Factory{
    	Public Fruit build(){
    		Return new Strawberry();
    	}
    }
    Public class MainUI{ 
    	Public static void main(string[] str){
    		Factory fac = new StrawberryFactory();
    		Fruit ft = fac.build();
    		ft.plant();
    		Ft.grow();
    		Ft.harvest();
    	}
    }
    
  2. 给定如图所示的树形结构,请应用组合模式,在客户端完成数据的展示。具体要求如下:
    绘制组合模式的类图。( 4 分)
    编写简单元素和复杂元素的代码。( 4 分)
    在这里插入图片描述
    在客户端构造出树形数据并输出。( 4 分)
    提示:程序运行后,输出信息应为

    Root
    Leaf A
    Comp B
    Leaf BX
    Leaf BY
    Leaf C
    
    1. 类图,类名不限,但必须将抽象的概念,以及Composite和Component之间的关系用正确的连线表示。(4分)
      在这里插入图片描述
      2) 简单元素、复杂元素(4分):
    class Leaf implements Component{
     String name;
     public Leaf(String name){this.name = name; }
     public void display(){
       System.out.println( name);
     }
     public void add(Component c){}
     public void remove(Component c){}
    }  
    class Composite implements Component{
     String name;
     ArrayList<Component> list = new ArrayList<Component>();
     public Composite(String name){
       this.name = name; 
     }
     public void display(){
       System.out.println(name);
       for(int i = 0 ; i < list.size() ;i ++)
       {
         list.get(i).display();
       }  
     }
     public void add(Component c){list.add(c);  }
     public void remove(Component c){list.remove(c);}
    }
    

    客户端( 4 分):

    public class Test {
     public static void main(String[] args){
       Component root = new Composite("Root");
       root.add(new Leaf("Leaf A"));    
       Component comp = new Composite("Comp B");
       root.add(comp);    
       comp.add(new Leaf("Leaf BX"));
       comp.add(new Leaf("Leaf BY"));    
       root.add(new Leaf("Leaf C"));    
       root.display();    
    	 }
     }
    
  3. 迭代器模式: 提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标 (Cursor) 。
    在这里插入图片描述

CustomerManagerpublic   class   CustomerManager  {
  private  ArrayList<String>  list  =  new  ArrayList<String>();
  public   void  add(String str) {
    list .add(str);  }
  protected  ArrayList<String> getList() {
    return   list ;  }
  public  Itertator getASItertator() {
    return   new  AscIterator( this );  }
  public  Itertator getCharItertator(String s) {
    return   new  CharIterator( this , s);  }}
Itertatorpublic   abstract   class   Itertator  
{   public   abstract   boolean  hasNext();
  public   abstract  String next();}
AscIteratorpublic   class   AscIterator   extends  Itertator {
 ArrayList<String>  list  =  new  ArrayList<String>();
  Iterator   iter ;
  public  AscIterator(CustomerManager cm) {
   ArrayList<String> ls = cm.getList();
    for  (String s : ls) {
      list .add(s);
     Collections. sort ( list );
      iter  =  list .iterator();    }  }
  public   boolean  hasNext() {
    return   iter .hasNext();  }
  public  String next() {
    return  (String)  iter .next();  }}
CharIteratorpublic   class   CharIterator   extends  Itertator {
 ArrayList<String>  list  =  new  ArrayList<String>();
  Iterator   iter ;
  public  CharIterator(CustomerManager cm, String str) {
   ArrayList<String> ls = cm.getList();
    for  (String s : ls) {
      if  (s.startsWith(str)) {
        list .add(s);      }
      iter  =  list .iterator();    }  }
  public   boolean  hasNext() {
    return   iter .hasNext();}
  public  String next() {
    return  (String)  iter .next();  }}
主类
public   class  Client {
  public   static   void  main(String[] args) {
   CustomerManager cm= new  CustomerManager();
   cm.add( "zhangsan" );
   cm.add( "lisi" );
   cm.add( "brown" );
   cm.add( "alien" );
   Itertator iter;
   iter=cm.getCharItertator( "a" );
    while (iter.hasNext()){
     String str=iter.next();
     System. out .println(str);    }  }}

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

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

相关文章

vivo大数据日志采集Agent设计实践

作者&#xff1a;vivo 互联网存储技术团队- Qiu Sidi 在企业大数据体系建设过程中&#xff0c;数据采集是其中的首要环节。然而&#xff0c;当前行业内的相关开源数据采集组件&#xff0c;并无法满足企业大规模数据采集的需求与有效的数据采集治理&#xff0c;所以大部分企业都…

车间工厂看板还搞不定,数据可视化包教包会

在智能工厂的建设过程中&#xff0c;为了让每条生产线的生产进度和状态更加清晰&#xff0c;经常需要将生产信息情况显示在电视看板上&#xff0c;称为智能工厂-车间数据可视化大屏方案。 根据工厂和车间的大小&#xff0c;可能会使用 10到100 台甚至更多的电视看板来显示数据…

Nexus3搭建maven私服

Nexus是一个强大的Maven仓库管理器&#xff0c;它极大地简化了自己内部仓库的维护和外部仓库的访问&#xff0c;也就是我们常说的私服 1、下载nexus3.x&#xff1a; Nexus官方下载地址 官方下载极其慢&#xff0c;这里提供网盘下载&#xff1a; 链接https://pan.baidu.com/s/…

Briefings in bioinformatics2021 | MolGNet+:基于分子全局表征的高效自监督框架,用于药物发现

原文标题&#xff1a;An effective self-supervised framework for learning expressive molecular global representations to drug discovery 代码&#xff1a;https://github.com/pyli0628/MPG.git 一、问题提出 &#xff08;分子性质预测的背景都是老生常谈的&#xff0…

loam 框架流程描述

前端流程(scanRegistration.cpp) 多线激光雷达即有多个激光发射器同时工作&#xff0c;如常见的 Velodyne16,就是共有 16 个激光发射器&#xff0c;一般这些发射器竖排排列&#xff0c;然后一起水平旋转。 激光雷达在一定的时间内旋转一圈&#xff0c;即一帧的点云数据。值得注…

Flutter教程之使用不同的方法维护 Flutter 应用程序状态

在开发应用程序时,主要关注的是当我们使用Tabs或Bottom Navigation Bar类的Widgets (Flutter 中几乎所有东西都是 widgets)时我们的应用程序将如何执行。 至于示例,让我们考虑一下我们有三个选项卡 UsersTab2Tab3在BottomNavBar和第一个索引上,我们有一个API 调用请求,它…

高效!启科量子线路模拟器 QuSprout 与 Amazon HPC 集成,赋能量子计算

KY1, Bertran Shao2, Adam Sun Amazon HERO&#xff1b;2.开发者生态负责人&#xff1b;3.Solutions Architect2022.11.17&#xff0c;启科量子正式开源其内部团队研发的量子线路模拟器&#xff1a;QuSprout 软件。结合早前其开源的启科量子编程框架 QuTrunk&#xff0c;开发者…

能源与经济面板数据集(中国能源统计年鉴面板数据+区域经济、人口与二氧化碳排放量面板数据)

一、中国能源统计年鉴面板数据 1、数据来源&#xff1a;中国能源统计年鉴 2、时间跨度&#xff1a;1991-2020 3、区域范围&#xff1a;全国 4、指标说明&#xff1a; 部分数据如下&#xff1a; 能源平衡表&#xff1a; 部分指标如下&#xff1a; 国内生产总值增长速度&am…

HTML网页设计制作——响应式网页影视动漫资讯bootstrap网页(9页)

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

地图轨迹跟踪系统设计与实现(Android+Eclipse+APP)

目 录 1 在线地图轨迹APP概述 1 1.1 本论文的背景及意义 1 1.2 本论文的主要方法和研究进展 1 1.3 本论文的主要内容 1 1.4 本论文的结构安排 1 2 系统分析 3 2.1 研究目标 3 2.2 可行性分析 3 2.2.1 经济可行性 3 2.2.2 技术的可行性 3 2.3 需求分析 3 2.4 性能分析 4 3 系统开…

TPAMI 2022 | 自动搜索文本识别网络的高性能特征提取器

©PaperWeekly 原创 作者 | 陈卓群单位 | 清华大学论文标题&#xff1a;Searching a High Performance Feature Extractor for Text Recognition Network收录情况&#xff1a;TPAMI论文链接&#xff1a;https://ieeexplore.ieee.org/document/9887897代码链接&#xff1a;…

HTTPS(对称加密+非对称加密+证书)

目录 1. 加密和解密 HTTPS工作过程 2. 对称加密 3. 对称加密 4. 既然都有非对称加密了,那为啥还要有对称加密 5. 中间人攻击 6. 引入证书 HTTPS 也是一个应用层协议. 是在 HTTP 协议的基础上引入了一个加密层. HTTP 协议内容都是按照文本的方式明文传输的. 这就导致在…

笔记本电脑恢复删除数据的5种方法

我们都知道笔记本电脑比台式电脑拥有方便携带的优势&#xff0c;但是不论是笔记本还是台式电脑&#xff0c;难免会出现数据丢失情况&#xff0c;如最近有位小伙伴&#xff0c;不小心将自己出差需要使用的工作资料误删了&#xff0c;那么问题来了&#xff0c;笔记本数据删除怎么…

Vuex的搭建与使用

Vuex 专门在Vue中实现集中式状态&#xff08;数据&#xff09;管理的插件 (Vue.use(Vuex))&#xff0c;对Vue应用中多个组件的共享状态进行集中式的管理&#xff08;读、写&#xff09;&#xff0c;也是一种组件间通信的方式&#xff0c;且适用于任意组件间通信。 如果多个组…

git的使用规范及技巧总结

一、什么是Git&#xff1f; Git是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本管理。 也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion 等不同&#x…

聚观早报 | 黑五电子产品销售额飙升;谷歌不满微软收购动视暴雪

今日要闻&#xff1a;黑五电子产品销售额飙升&#xff1b;谷歌不满微软收购动视暴雪&#xff1b;特斯拉海外充电站价格下降&#xff1b;欧盟对微软发起反垄断调查&#xff1b;小米13渲染图曝光黑五电子产品销售额飙升 据消息&#xff0c;Adobe数据和分析部门Adobe Analytics发布…

Navicat Premium 16 连接Oracle注意事项

起因 新同学使用的新版本的Mac电脑 但是装的W系统M芯片 发现 PLSQL Developer 并不兼容 导致无法连接到Oracle数据 就临时换成Navicat Premium 16进行连接 然后就出现了一系列问题 Oracle默认编码集 ZHS16GBK 该问题是Navicat Premium默认使用Navicat自带的instantclient_…

激光雷达发射的PCB布局

1、激光发射的电路如下图所示。 重点就是要考虑电容、GaN、激光器三部分的布局。 2>第一种布局方式 激光器、GaN、电容三者都在同一层上,放电的回路也都在顶层上,此时临近的第二层没有铺地。 用ANSYS仿真得到此时得回路电感为2nH左右。我们都以500M时得寄生电感来评估。…

面试官:介绍一下 Redis 三种集群模式

小码今天去面试。 面试官&#xff1a;给我介绍一下Redis集群&#xff0c; 小码&#xff1a;啊&#xff0c;平时开发用的都是单机Redis&#xff0c;没怎么用过集群了。 面试官&#xff1a;好的&#xff0c;出门右转不谢。 小码内心困惑&#xff1a;在小公司业务量也不大&…

操作系统

文章目录一&#xff0c;操作系统是什么二&#xff0c;操作系统的发展史1) 1945~1955年2) 1955~1965年&#xff1a;首个操作系统诞生3) 1964~1979年&#xff1a;多道程序系统诞生4) 1979~至今&#xff1a;网络操作系统和分布式操作系统快速发展三&#xff0c;操作系统的类别一&a…