首页 > 其他分享 >番外-软件设计(10)

番外-软件设计(10)

时间:2023-11-13 19:47:06浏览次数:29  
标签:10 软件设计 番外 Coordinates int Chess ChessFactory new public

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

实验要求:

1. 提交类图;

 

2.提交源代码;

package Enjoy_element_pattern;

 

public class Client {

    public static void main(String[] args) {

        Chess black1,black2,black3,white1,white2;

        ChessFactory factory;

        factory = ChessFactory.getInstance();

        black1 = ChessFactory.getChess("b");

        black2 = ChessFactory.getChess("b");

        black3 = ChessFactory.getChess("b");

        white1 = ChessFactory.getChess("w");

        white2 = ChessFactory.getChess("w");

        black1.locate(new Coordinates(2, 5));

        black2.locate(new Coordinates(-3, 9));

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

        white1.locate(new Coordinates(-1, 5));

        white2.locate(new Coordinates(5, 4));

    }

}

package Enjoy_element_pattern;

 

import java.util.Hashtable;

 

public class ChessFactory {

    private static ChessFactory instance=new ChessFactory();

    private static Hashtable ht;

    public ChessFactory() {

        ht=new Hashtable();

        Chess black,white;

        black=new BlackChess();

        ht.put("b", black);

        white=new WhiteChess();

        ht.put("w", white);

    }

    public static ChessFactory getInstance() {

        return instance;

    }

    public static Chess getChess(String color) {

        return (Chess)ht.get(color)

                ;    }

}

package Enjoy_element_pattern;

 

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 Enjoy_element_pattern;

 

abstract class Chess {

    public abstract  String getColor();

    public void locate(Coordinates co){

        System.out.println(this.getColor()+"棋的位置:"+co.getX()+","+co.getY());

    }

}

package Enjoy_element_pattern;

 

public class WhiteChess extends Chess {

    @Override

    public String getColor(){

        return "白";

    }

}

package Enjoy_element_pattern;

 

public class BlackChess extends Chess {

    @Override

    public String getColor(){

        return "黑";

    }

}

3.注意编程规范;

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

标签:10,软件设计,番外,Coordinates,int,Chess,ChessFactory,new,public
From: https://www.cnblogs.com/zjsdbk/p/17829949.html

相关文章

  • 软件设计模式学习每日总结-第一天
    Uml类图1、分三层,从上至下分别为类名,属性,方法。2、类与类之间的关系:关联(聚合,组合)、依赖、继承、实现。3、依赖是最低耦合,继承是最高耦合。  七大原则1、开闭原则:程序代码对扩展开发,对修改关闭。2、里氏代换原则:子类可以扩展父类功能,但是不要修改父类原有的功能。3......
  • [题解] CFgym101623F Factor-Free Tree
    Factor-FreeTree当一棵二叉树中的每个节点的权值都与它所有祖先的权值互质时,我们称它为factor-freetree。给你一棵按照中序遍历的顺序的权值序列\(a\),求这个序列是否对应这一棵factor-freetree。如果是就输出每个节点的父亲。\(n\le10^5,a_i\le10^7\)。考虑怎么......
  • Nessus 10.6 Auto Installer for macOS Sonoma (updated Nov 2023)
    Nessus10.6AutoInstallerformacOSSonoma(updatedNov2023)发布Nessus试用版自动化安装程序,支持macOSSonoma、RHEL9和Ubuntu22.04请访问原文链接:https://sysin.org/blog/nessus-auto-install-for-macos/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org......
  • 数据库设计心得——软件2105最抽象的一组
    一、前言我们小组的项目是医学图像去噪系统,项目工作的重点在于去噪模型的训练,有关数据库的结构不是很复杂。需要数据库完成的工作主要就是用户账户信息的存储和图像信息的存储以及实体之间关系的处理。二、具体实现在数据库的具体实现上,主要围绕两点来搭建框架。第一点是医生的......
  • 2023-2024-1 20232309 《网络空间安全导论》第10周学习总结
    2023-2024-120232309《网络空间安全导论》第10周学习总结教材学习内容总结说明:由于本章作为“概述”性章节的特殊性,具有大量识记性基础内容(一个不太准确的描述...),许多内容通过教材的分类子目录与解释已经清晰明了,故在思维导图中不做抄写的重复劳动(虽然还是有抄书嫌疑在其中.........
  • macOs Catalina 10.15.7安装xcode
    iMac新装了系统(Catalina10.15.7)之后,安装git提示缺少xcode试了以下方法,都没有成功:1、执行 xcode-select--install,提示:requestedforcommandlinedevelopertools2、通过appstore下载xcode,提示:不能将Xcode安装在macOs上,因为需要macOsv13.5或更高版本 查询了网上的方法......
  • [ARC106E] Medals 题解
    题意有一个商店和\(N\)名员工,其中第\(i\)名员工在第\(1\simA_i\)天工作,在第\(A_i+1\sim2\timesA_i\)休息,接下来每\(A_i\)天改变一次状态。每一天你都可以选择一名来上班的员工并为其颁一个奖,求使得每名员工都获得至少\(K\)个奖的最小天数。\(1\leN\le......
  • 代码随想训练营第三十四天(Python)| 1005.K次取反后最大化的数组和、134. 加油站、135.
    1005.K次取反后最大化的数组和classSolution:deflargestSumAfterKNegations(self,nums:List[int],k:int)->int:nums.sort(key=lambdax:abs(x),reverse=True)foriinrange(len(nums)):ifnums[i]<0andk>0:......
  • 具有易失性存储器,MCP47CVD12-E/MF、MCP47CVD12T-E/MF双通道、10位数模转换器(DAC)
    MCP47CVD12是一款双通道、10位、缓冲电压输出数模转换器(DAC),具有易失性存储器和I²C兼容串行接口。该器件提供四种不同的基准电压选项:器件VDD、外部VREF(缓冲或无缓冲)和内部带隙。它提供0.25LSB积分非线性(INL)、低功耗和4µs的快速建立时间。它适合消费和工业应用,如设定点或失调调整......
  • 2023.10.21 CSP-S 复赛游记
    2023.10.21CSP-S复赛游记咕了一段时间。Day-2上午下午正常打模拟赛、改题,晚上开始复习板子。主要是确实忘了很多东西。Day-1上午的模拟赛没参加,打了一天板子。图论还是我的一大弱点。被Tarjan薄纱下午写了个计划,把已经复习的和没有复习的都写出来了,发现要复习的板子......