首页 > 其他分享 >软件设计13

软件设计13

时间:2023-12-21 20:13:14浏览次数:31  
标签:13 软件设计 factory Coordinates IgoChessmanFactory int new public

[实验任务一]:围棋

设计一个围棋软件,在系统中只存在一个白棋对象和一个黑棋对象,但是它们可以在棋盘的不同位置显示多次。

实验要求:

1. 提交类图;

 

 

2. 提交源代码;

package sou;

/**

 * 客户端测试类

 *

 */

public class Client {

    public static void main(String[] args) {

        IgoChessman black1,black2,black3,white1,white2;

        IgoChessmanFactory factory;

        factory = IgoChessmanFactory.getInstance();

        black1 = factory.getIgoChessman("b");

        black2 = factory.getIgoChessman("b");

        black3 = factory.getIgoChessman("b");

        System.out.println("判断两颗黑棋是否相同:"+(black1==black2));

        white1 = factory.getIgoChessman("w");

        white2 = factory.getIgoChessman("w");

        System.out.println("判断两颗白棋是否相同:"+(white1==white2));

        black1.locate(new Coordinates(1, 1));

        black2.locate(new Coordinates(2, 4));

        black3.locate(new Coordinates(2, 3));

        white1.locate(new Coordinates(3, 5));

        white2.locate(new Coordinates(2, 6));

    }

}

package sou;

/**

 * 坐标类:外部状态类

 *

 */

public class Coordinates {

    private int x;

    private int y;

    public Coordinates(int x,int y) {

        // TODO Auto-generated constructor stub

        this.x = x;

        this.y = y;

    }

    public int getX() {

        return x;

    }

    public void setX(int x) {

        this.x = x;

    }

    public int getY() {

        return y;

    }

    public void setY(int y) {

        this.y = y;

    }

}

package sou;

/**

 * 围棋棋子类:抽象享元类

 *

 */

public abstract class IgoChessman {

    public abstract String getColor();

    public void locate(Coordinates coord){

        System.out.println("棋子颜色:"+this.getColor()+",棋子位置:"+coord.getX()+","+coord.getY());

    }

}

/**

 * 黑色棋子类:具体享元类

 * @author fly

 *

 */

class BlackIgoChessman extends IgoChessman{

    @Override

    public String getColor() {

        // TODO Auto-generated method stub

        return "黑色";

    }

}

/**

 * 白色棋子类:具体享元类

 * @author fly

 *

 */

class WhiteIgoChessman extends IgoChessman{

    @Override

    public String getColor() {

        // TODO Auto-generated method stub

        return "白色";

    }

}

package sou;

import java.util.Hashtable;

/**

 * 围棋棋子工厂类:享元工厂类

 *

 */

public class IgoChessmanFactory {

    private static IgoChessmanFactory instance = new IgoChessmanFactory();

    private static Hashtable ht;

    public IgoChessmanFactory() {

        // TODO Auto-generated constructor stub

        ht = new Hashtable();

        IgoChessman black,white;

        black = new BlackIgoChessman();

        ht.put("b", black);

        white = new WhiteIgoChessman();

        ht.put("w", white);

    }

    public static IgoChessmanFactory getInstance(){

        return instance;

    }

    public static IgoChessman getIgoChessman(String color){

        return (IgoChessman)ht.get(color);

    }

}

3.注意编程规范;

4.要求用简单工厂模式和单例模式实现享元工厂类的设计

标签:13,软件设计,factory,Coordinates,IgoChessmanFactory,int,new,public
From: https://www.cnblogs.com/renliqin/p/17920009.html

相关文章

  • centos7上源码安装postgresql 13.6
    1环境描述操作系统:Centos7.6postgresql:13.6安装方式:源码安装2创建用户#groupadd-g2000pgsql#useradd-u2000-gpgsqlpgsql3目录规划#mkdir-p/postgresql/{pgdata,archive,scripts,backup,pg13,soft,pg_log}#chown-Rpgsql:pgsql/postgresql#......
  • 文心一言 VS 讯飞星火 VS chatgpt (161)-- 算法导论13.1 1题
    一、用go语言,按照图13-1(a)的方式,画出在关键字集合(1,2,…,15)上高度为3的完全二叉搜索树。以三种不同方式向图中加入NIL叶结点并对各结点着色,使所得的红黑树的黑高分别为2、3和4。文心一言:首先,我们需要明确什么是完全二叉搜索树(CompleteBinarySearchTree,CBST)和红黑树(Red......
  • 12/13
    又是一周三,本周就要考四级了,英语老师在课上也开始讲解一些四级知识,并讲解了一些作文。在网上也找到了一些作文模板。1、第一段引出话题:Thetopicof(主题)hastriggeredanavalancheofmixedreactionsanddebatesnotonlyinreallifebutinthenetwork,whichboilsdo......
  • [LeetCode] 1362. Closest Divisors 最接近的因数
    Givenaninteger num,findtheclosesttwointegersinabsolutedifferencewhoseproductequals num+1 or num+2.Returnthetwointegersinanyorder.Example1:Input:num=8Output:[3,3]Explanation:Fornum+1=9,theclosestdivisorsare3&......
  • 11/13
    又是周一,上午是工程实训,下午是建民老师的课.还是servlet会执行doGet()方法其生命周期由容器来管理,分为4个阶段:1、加载和实例化:默认情况下,当Servlet第一次被访问时,由容器创建Servlet对象;非默认情况下,可以通过@WebServlet(urlPatterns="/demo",loadOnStartup=1)进行Servlet......
  • 2023-2024-120231329《计算机基础与程序设计》第13周学习总结
    作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html这个作业的目标《C语言程序设计》第12章并完成云班课测试作业正文https://www.cnblogs.com/xjn123/p/17......
  • 软件设计12
    [实验任务一]:计算机开启在计算机主机(Mainframe)中,只需要按下主机的开机按钮(on()),即可调用其他硬件设备和软件的启动方法,如内存(Memory)的自检(check())、CPU的运行(run())、硬盘(HardDisk)的读取(read())、操作系统(OS)的载入(load()),如果某一过程发生错误则计算机启动失败。......
  • 2023-2024 20231313《计算机基础与程序设计》第十三周学习总结
    2023-202420231313《计算机基础与程序设计》第十二周学习总结作业速达作业课程班级链接作业要求计算机基础与程序设计第十三周学习总结作业内容《C语言程序设计》第12章并完成云班课测试作业正文我的作业目录教材总结总结学习过程的问题《C语言程序......
  • 软件设计模式基本知识点
         ......
  • 软件设计期末试卷2020级
    第1页/共6页石家庄铁道大学2022年秋季学期2020级本科期末考试试卷(A)课程名称:软件设计(闭卷)任课教师:王辉考试时间:100分钟学号:姓名:班级:考试性质(学生填写):正常考试()缓考()补考()重修()提前修读()题号一二三四五六七总分满分102020201515100得分阅卷人......