2021年下半年软件设计师下午真题答案及解析

Posted Zhang Jun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021年下半年软件设计师下午真题答案及解析相关的知识,希望对你有一定的参考价值。

阅读下列说明和Java代码,将应填入(n)处的字句写在题纸的对应栏内。
【说明】
享元(flyweight)模式主要用于减少创建对象的数量,以低内存占用,提高性能。现要开发一个网络围棋程序允许多个玩家联机下棋。由于只有一台服务器,为节内存空间,采用享元模式实现该程序,得到如图6-1所的类图。

【Java代码】

import java.util.*:
enum PieceColor 
	BLACK,
	WHITE
 //棋子颜色
class PiecePos  //棋子位置
	private int x;
	private int y;
	pubic PiecePos(int a, int b) 
		x = a;
		y = b;
	
	public int getX() 
		return x;
	
	public int getY() 
		return y;
  	


abstract class Piece  //棋子定义
	protected PieceColor m_color; //颜色
	protected Piecemopos m_pos; //位置
	public Piece(PieceColor color, PiecePos pos) 
		m_color = color;
		m_pos = pos;
	
	(1);


class BlackPiece extends Piece 
	public BlackPiece(PieceColor color, PiecePos pos) 
		super(color, pos);
	
	public void draw () 
		System out println("draw a black piece");
  	


class WhitePiece extends Piece 
	public WhitePiece(PieceColor color, PiecePos pos) 
		super(color, pos);
	
	public void draw() 
		System.out.println("draw a white piece");
  	


class PieceBoard 
	//棋盘上已有的棋子
	private static final  ArrayList<(2)> m_arrayPiece=new ArrayList<>();
	private String m_blackName; //黑方名称
	private String m_whiteName; //白方名称
	public PieceBoard(String black, String white) 
		m_blackName = black;
		m_whiteName = white;
 	
	//一步棋,在棋盘上放一颗棋子
	public void SetePiece(PieceColor color, PiecePos pos) 
		(3)piece = null;
		if(color == PieceColor.BLACK) //放黑子
			piece = new BlackPiece(color, pos); //获取一颗黑子
			System.out.println(m_blackName + "在位置(" + 
			pos.getX( ) + ", " + pos.getY( ) + ")");
			(4);
		 else //放白子
			piece = new WhitePiece(color, pos); //获取一颗白子
			System.out.println(m whiteName + "在位置(" + pos.getX() + ", " + pos.getY() + ")");
			(5);
		
		m_arrayPiece.add(piece);
	

参考答案:
(1)public abstract void draw()
(2)Piece
(3)Piece
(4)piece.draw()
(5)piece.draw()

答案解析:

对于第一空,可知该空需要填写的是Piece类里面的方法,对于其方法在图中都无法找出,可以根据其实现类(BlackPieceWhitePiece类)来看,对应得是方法public void draw( ),又由于其在抽象类Piece里面,所以是抽象方法,需要加上关键词abstract,则为public abstract void draw( )

对于第二空,可知该空填写的是动态数组Arraylist的泛型,<>里面填写得应该是对应的m_arrayPiece的类型,用类进行修饰,可知其属于Piece类,填写的应该是Piece

对于第三空,可知该空填写的是对象创建的声明对象过程,格式应该为类名 对象名称=null,可知该对象piece对应的类是Piece(类名字母大写)

对于第四空和第五空,根据注释来看,是放黑子和白子的过程,已知实例化该对象piece,具体的放黑子和白子过程,都需要调用draw()方法来指向,故第4空和第5空填写的应该都是piece.draw()

以上是关于2021年下半年软件设计师下午真题答案及解析的主要内容,如果未能解决你的问题,请参考以下文章

2021年下半年软件设计师下午真题答案及解析

2021年下半年软件设计师下午真题答案及解析

2021年下半年软件设计师下午真题答案及解析

2021年下半年软件设计师下午真题答案及解析

2021年下半年软件设计师下午真题答案及解析

2021年下半年软件设计师下午真题答案及解析