软考软件设计师中级-程序设计题Java实现

历年软件设计师软考中级全部考试资料,获取方式见:

2016下半年

在这里插入图片描述

class Invoice {  // 发票类
    public void printInvoice() {
        System.out.println("This is the content of the invoice!");
    }
}

class Decorator extends Invoice {
    protected Invoice ticket;

    public Decorator(Invoice t) {// 构造方法
        this.ticket = t;
    }

    @Override
    public void printInvoice() {
        if (ticket != null) {
            ticket.printInvoice();      // 填空1
        }
    }
}

class HeadDecorator extends Decorator {
    public HeadDecorator(Invoice t) {
        super(t);
    }

    @Override
    public void printInvoice() {
        System.out.println("This is the header of the invoice! ");
        ticket.printInvoice();      // 填空2
    }
}

class FootDecorator extends Decorator {
    public FootDecorator(Invoice t) {
        super(t);
    }

    @Override
    public void printInvoice() {
        ticket.printInvoice();      // 填空3
        System.out.println("This is the foot of the invoice! ");
    }
}

public class InvoiceTest {
    public static void main(String[] args) {
        Invoice t = new Invoice();// 定义一个发票
        Invoice ticket;
        ticket = new FootDecorator(new HeadDecorator(t));       // 填空4
        ticket.printInvoice();
        System.out.println("---------------------");
        ticket = new FootDecorator(new HeadDecorator(new Decorator(null)));       // 填空5
        ticket.printInvoice();
    }
}

// 输出结果:
// This is the header of the invoice!
// This is the content of the invoice!
// This is the foot of the invoice!
//---------------------
// This is the header of the invoice!
// This is the foot of the invoice!

2017下半年

在这里插入图片描述

class Matrix {
} // 各种格式的文件最终都被转化为像素矩阵   // 此处代码省略

abstract class Implementor {
    public abstract void doPaint(Matrix m); // 1
// 显示像素矩阵 m
}

class Winlmp extends Implementor {

    public void doPaint(Matrix m) {
        // 调用 Windows 系统的绘制函数绘制像素矩阵
    }
}

class Linuxlmp extends Implementor {

    public void doPaint(Matrix m) {
        // 用 Linux 系统的绘制函数绘制像素矩
    }
}

abstract class Image {
    public void setlmp(Implementor imp) {
        this.imp = imp;
    }

    public abstract void parseFile(String fileName);

    protected Implementor imp;
}

// class BMPImage extends Image {
//     // 此处代码省略
// }

class GIFlmage extends Image {
    public void parseFile(String fileName) {
        // 此处解析 BMP 文件并获得一个像素矩阵对象 m;
        // 显示像素矩阵 m
        // imp.doPaint(m);
    }
}

// class JPEGlmage extends Image {
// // 此处代码省略
// }

class Main {
    public static void main(String[] args) {
        // 在 Linux 操作系统上查看 demo.gif 图像文件lmage
        Image image = new GIFlmage();
        Implementor imagelmp = new Linuxlmp();
        image.setlmp(imagelmp);
        image.parseFile("demo.gif");
    }
}

2019下半年

在这里插入图片描述

import java.util.*;

interface Observer {
    public void update();  // 1
}

interface Subject {
    public void Attach(Observer obs);

    public void Detach(Observer obs);

    public void Notify();

    public void setStatus(int staus);

    public int getStatus();
}

class OfficeDoc implements Subject {
    private List<Observer> myObs;  // 2
    private String mySubjectName;
    private int m_status;

    public OfficeDoc(String name) {
        mySubjectName = name;
        this.myObs = new ArrayList<Observer>();
        m_status = 0;
    }

    public void Attach(Observer obs) {
        this.myObs.add(obs);
    }

    public void Detach(Observer obs) {
        this.myObs.remove(obs);
    }

    public void Notify() {
        for (Observer obs : this.myObs) {
            obs.update();  // 3
        }
    }

    public void setStatus(int status) {
        m_status = status;
        System.out.println("SetStatus Subject[" + mySubjectName + "]status:" + status);
    }

    public int getStatus() {
        return m_status;
    }
}

class DocExplorer implements Observer {
    private String myObsName;

    public DocExplorer(String name, Subject sub) {  // 4
        myObsName = name;
        sub.Attach(this);  // 5
    }

    public void update() {
        System.out.println("update observer[" + myObsName + "]");
    }
}

class ObserverTest {
    public static void main(String[] args) {
        Subject subjectA = new OfficeDoc("subjectA");
        Observer observerA = new DocExplorer("observerA", subjectA);
        subjectA.setStatus(1);
        subjectA.Notify();
    }
}

2020下半年

在这里插入图片描述

interface WebServiceMediator {
    public void buy(double money, WebService service);  // 1

    public void setAmazon(WebService amazon);

    public void setEbay(WebService ebay);
}

abstract class WebService {
    protected WebServiceMediator mediator;  //(2)

    public abstract void setMediator(WebServiceMediator mediator);

    public abstract void buyService(double money);//(3)

    public abstract void search(double money);
}

class ConcreteServiceMediator implements WebServiceMediator {
    private WebService amazon;
    private WebService ebay;

    public ConcreteServiceMediator() {
        amazon = null;
        ebay = null;
    }

    public void setAmazon(WebService amazon) {
        this.amazon = amazon;
    }

    public void setEbay(WebService ebay) {
        this.ebay = ebay;
    }

    public void buy(double money, WebService service) {
        if (service == amazon) {
            amazon.search(money);
        } else {
            ebay.search(money);
        }
    }
}

class Amazon extends WebService {
    public void setMediator(WebServiceMediator mediator) {
        this.mediator = mediator;
    }

    public void buyService(double money) {
        mediator.buy(money, this); // 4
    }

    public void search(double money) {
        System.out.println(money);
    }
}

class Ebay extends WebService {
    public void setMediator(WebServiceMediator mediator) {
        this.mediator = mediator;
    }

    public void buyService(double money) {
        mediator.buy(money, this);  // 5
    }

    public void search(double money) {
        System.out.println(money);
    }
}

2021上半年

在这里插入图片描述

import java.util.*;

/*组合模式*/
abstract class MenuComponent { // 构成层叠菜单的元素

    public String name; // 菜单项或子菜单名称  1

    public void printName() {
        System.out.println(name);
    }

    public abstract boolean addMenuElement(MenuComponent element); // 2

    public abstract boolean removeMenuElement(MenuComponent element);

    public abstract List<MenuComponent> getElement(); // 3
}

class MenuItem extends MenuComponent {
    public MenuItem(String name) {
        this.name = name;
    }

    public boolean addMenuElement(MenuComponent element) {
        return false;
    }

    public boolean removeMenuElement(MenuComponent element) {
        return false;
    }

    public List<MenuComponent> getElement() {
        return null;
    }
}

class Menu extends MenuComponent {
    private ArrayList<MenuComponent> elementList;

    public Menu(String name) {
        this.name = name;
        this.elementList = new ArrayList<MenuComponent>();
    }

    public boolean addMenuElement(MenuComponent element) {
        return elementList.add(element);
    }

    public boolean removeMenuElement(MenuComponent element) {
        return elementList.remove(element);
    }

    public List<MenuComponent> getElement() {
        return elementList;
    }
}

class CompositeTest {
    public static void main(String[] args) {
        MenuComponent mainMenu = new Menu("Insert");
        MenuComponent subMenu = new Menu("Chart");
        MenuComponent element = new MenuItem("On This Sheet");
        mainMenu.addMenuElement(subMenu);  // 5
        subMenu.addMenuElement(element);
        printMenus(mainMenu);
    }

    private static void printMenus(MenuComponent ifile) {
        ifile.printName();
        List<MenuComponent> children = ifile.getElement();
        if (children == null) return;
        for (MenuComponent element : children) {
            printMenus(element);
        }
    }
}

2021下半年

在这里插入图片描述

import java.util.*;

enum PieceColor {BLACK, WHITE}// 棋子颜色

class PiecePos {// 棋子位置
    private int x;
    private int y;

    public PiecePos(int a, int b) {
        x = a;
        y = b;
    }

    public int getX0() {
        return x;
    }

    public int getYO() {
        return y;
    }
}

abstract class Piece {// 棋子定义
    protected PieceColor m_color;// 颜色
    protected PiecePos m_pos;// 位置

    public Piece(PieceColor color, PiecePos pos) {
        m_color = color;
        m_pos = pos;
    }

    // 抽象方法
    public abstract void draw();
}

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<Piece> 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) {
        Piece piece = null;
        if (color == PieceColor.BLACK) {// 放黑子
            piece = new BlackPiece(color, pos);// 获取一颗黑子
            System.out.println(m_blackName + "在位置(" + pos.getX0() + "," + pos.getYO() + ")");

        } else {// 放白子
            piece = new WhitePiece(color, pos);// 获取一颗白子
            System.out.println(m_whiteName + "在位置(" + pos.getX0() + "," + pos.getYO() + ")");

        }
        m_arrayPiece.add(piece);
    }

    public static void main(String[] args) {
        PieceBoard pieceBoard = new PieceBoard("BLACK", "WHITE");
        pieceBoard.SetePiece(PieceColor.valueOf("BLACK"), new PiecePos(1, 2));
    }
}

2022上半年

在这里插入图片描述

import java.util.*;

class Memento {

    private String state;

    public Memento(String state) {
        this.state = state;
    }

    public String getState() {
        return state;
    }

}

class Originator {

    private String state;

    public void setState(String state) {
        this.state = state;
    }

    public String getState() {
        return state;
    }

    public Memento saveStateToMemento() {
        return new Memento(state);  //1
    }

    public void getStateFromMemento(Memento memento) {
        state = memento.getState();   //2
    }

}

class CareTaker {
    private List<Memento> mementoList = new ArrayList<>();

    public void add(Memento state) {   //3

        mementoList.add(state);

    }

    public Memento get(int index) {  //4

        return mementoList.get(index);

    }

}

class MementoPatternDemo {

    public static void main(String[] args) {

        Originator originator = new Originator();
        CareTaker careTaker = new CareTaker();
        originator.setState("State #1");
        originator.setState("State #2");

        careTaker.add(originator.saveStateToMemento());  // 5
        originator.setState("State #3");
        careTaker.add(originator.saveStateToMemento());  // 6

        originator.setState("State #4");
        System.out.println("cur state " + originator.getState());

        originator.getStateFromMemento(careTaker.get(0));
        System.out.println("fir saved state " + originator.getState());

        originator.getStateFromMemento(careTaker.get(1));
        System.out.println("sec saved state " + originator.getState());

    }
}

2022下半年

在这里插入图片描述

interface Patient {
    String getName();  // 1
}

interface Disposer {

    void dispose(Patient patient);  // 2
}

class Registry implements Disposer {   // 挂号

    public void dispose(Patient patient) {
        System.out.println("I am registering..." + patient.getName());

    }
}

class Doctor implements Disposer {   // 医生门诊

    public void dispose(Patient patient) {

        System.out.println("I am diagnosing..." + patient.getName());
    }
}

class Pharmacy implements Disposer {   // 取药

    public void dispose(Patient patient) {

        System.out.println("I am giving medicine..." + patient.getName());
    }
}

class Facade {

    private Patient patient;

    public Facade(Patient patient) {
        this.patient = patient;
    }

    public void dispose() {

        Registry registry = new Registry();

        Doctor doctor = new Doctor();

        Pharmacy ph = new Pharmacy();

        registry.dispose(patient);

        doctor.dispose(patient);

        ph.dispose(patient);
    }
}

class ConcretePatient implements Patient {

    private String name;

    public ConcretePatient(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

}

class FacadeTest {

    public static void main(String[] args) {

        Patient patient = new ConcretePatient("");  // 3

        Facade f = new Facade(patient);   //  4  5

        f.dispose();  // 6
    }
}

2023上半年

发发发

enum TYPE {COMMA, DOTS, LINE}

interface PrintStrategy {

    public void doPrint(Interval val);  // 1

}

class Interval {

    private double lowerBound;
    private double upperBound;

    public Interval(double pLower, double pUpper) {

        lowerBound = pLower;
        upperBound = pUpper;
    }

    public void printInterval(PrintStrategy ps) {
        ps.doPrint(new Interval(lowerBound, upperBound));  // 2
    }

    public double getLower() {
        return lowerBound;
    }

    public double getUpper() {
        return upperBound;
    }
}

class PrintIntervalLine implements PrintStrategy {

    public void doPrint(Interval val) {

        System.out.println("[" + val.getLower() + "-" + val.getUpper() + "]");

    }
}

class PrintIntervalDots implements PrintStrategy {

    public void doPrint(Interval val) {

        System.out.println("[" + val.getLower() + ".." + val.getUpper() + "]");

    }
}

class PrintIntervalComma implements PrintStrategy {

    public void doPrint(Interval val) {

        System.out.println("[" + val.getLower() + "," + val.getUpper() + "]");

    }
}


class Client {
    public static PrintStrategy getStrategy(TYPE type) {

        PrintStrategy st = null;

        switch (type) {

            case COMMA:
                st = new PrintIntervalComma(); // 3
                break;

            case DOTS:
                st = new PrintIntervalDots(); // 4
                break;

            case LINE:
                st = new PrintIntervalLine();  // 5
                break;
        }
        return st;
    }

    public static void main(String[] args) {

        Interval interval = new Interval(1.7, 2.1);
        interval.printInterval(getStrategy(TYPE.COMMA));
        interval.printInterval(getStrategy(TYPE.DOTS));
        interval.printInterval(getStrategy(TYPE.LINE));
    }
}

更多速成版资料点击👉👉【闲鱼】https://m.tb.cn/h.5yHks14?tk=3iMKWpNBanT MF3543 「我在闲鱼发布了【自己一次性高分通过软考中级!】」
点击链接直接打开


整理不易🚀🚀,关注和收藏后拿走📌📌欢迎留言🧐👋📣
欢迎专注我的公众号AdaCoding 和 Github:AdaCoding123
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值