软件设计实验5

实验5:建造者模式

[实验任务一]:计算机组装

使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机。

直接放源码:

#include <iostream>

using namespace std;

class Computer{
public:
    virtual void setCpu(){};
    virtual void setNc(){};
    virtual void setYp(){};
    virtual void setZj(){};
};

class LapComputer:public Computer{
private:
    string CPU="";
    string nc="";
    string yp="";
public:
    string tostring() {
        return "LapComputer [" + CPU + ", " + nc + ", " + yp + "]";
    }

    void setCpu() {
        // TODO Auto-generated method stub
         CPU="CPU";
    }

    void setNc() {
        // TODO Auto-generated method stub
         nc="内存条";
    }

    void setYp() {
        // TODO Auto-generated method stub
         yp="硬盘";
    }

    void setZj() {
        // TODO Auto-generated method stub

    }
};

class PCComputer:public Computer{
private:
    string CPU="";
    string nc="";
    string yp="";
    string zj="";

public:
    void setCpu() {
        // TODO Auto-generated method stub
         CPU="CPU";
    }

    void setNc() {
        // TODO Auto-generated method stub
         nc="内存条";
    }

    void setYp() {
        // TODO Auto-generated method stub
         yp="硬盘";
    }

    void setZj() {
        // TODO Auto-generated method stub
         zj="主机";
    }

    string tostring() {
        return "PCComputer [" + CPU + ", " + nc + ", " + yp + ", " + zj + "]";
    }

    string getCPU() {
        return CPU;
    }

    void setCPU(string cPU) {
        CPU = cPU;
    }

    string getNc() {
        return nc;
    }

    void setNc(string nc) {
         nc = nc;
    }

    string getYp() {
        return yp;
    }

    void setYp(string yp) {
         yp = yp;
    }

};

class Builder{
public:
    virtual void produceCPU(){};
    virtual void produceNC(){};
    virtual void ProduceYP(){};
    virtual void ProduceZJ(){};
    virtual Computer* build(int n){};
};

class ConcreteBuilder:public Builder{
private:
    Computer *cp;

public:
    Computer* build(int t) {
        cout<<"正在安装... ..."<<endl;
        //1是笔记本  2是台式
        if(t==1) {
            LapComputer c;
            cp=&c;
            produceCPU();
            produceNC();
            ProduceYP();
            cout<<"笔记本安装成功"<<endl;
            cout<<c.tostring()<<endl;
        }
        else if(t==2) {
            PCComputer c;
            cp=&c;
            produceCPU();
            produceNC();
            ProduceYP();
            ProduceZJ();
            cout<<"台式电脑安装成功"<<endl;
            cout<<c.tostring()<<endl;
        }
        else {
                ;
        }
    }

    void produceCPU() {
        // TODO Auto-generated method stub
         cp->setCpu();
        cout<<"安装CPU"<<endl;
    }

    void produceNC() {
        // TODO Auto-generated method stub
         cp->setNc();
        cout<<"安装内存条"<<endl;
    }

    void ProduceYP() {
        // TODO Auto-generated method stub
         cp->setYp();
        cout<<"安装硬盘"<<endl;
    }

    void ProduceZJ() {
        // TODO Auto-generated method stub
         cp->setZj();
        cout<<"安装主机"<<endl;
    }
};


int main()
{
    int n;
    ConcreteBuilder b;
    Builder* bd=&b;
    cout<<"请选择你要的电脑类型  1为笔记本电脑 2位台式电脑"<<endl;
    cin>>n;
    if(n==1||n==2) {
        bd->build(n);
    }else {
        cout<<"请输入正确选项"<<endl;
    }
    return 0;
}

  

posted @ 2022-10-09 14:08  Lindseyyip  阅读(23)  评论(0编辑  收藏  举报