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
类里面的方法,对于其方法在图中都无法找出,可以根据其实现类(BlackPiece
和WhitePiece
类)来看,对应得是方法public void draw( )
,又由于其在抽象类Piece
里面,所以是抽象方法,需要加上关键词abstract
,则为public abstract void draw( )
对于第二空,可知该空填写的是动态数组Arraylist
的泛型,<>
里面填写得应该是对应的m_arrayPiece
的类型,用类进行修饰,可知其属于Piece
类,填写的应该是Piece
对于第三空,可知该空填写的是对象创建的声明对象过程,格式应该为类名 对象名称=null
,可知该对象piece
对应的类是Piece
(类名字母大写)
对于第四空和第五空,根据注释来看,是放黑子和白子的过程,已知实例化该对象piece
,具体的放黑子和白子过程,都需要调用draw()
方法来指向,故第4空和第5空填写的应该都是piece.draw()
以上是关于2021年下半年软件设计师下午真题答案及解析的主要内容,如果未能解决你的问题,请参考以下文章