首页 > 其他分享 >软件设计实验5

软件设计实验5

时间:2022-10-09 14:24:12浏览次数:54  
标签:string 软件设计 void nc virtual 实验 yp CPU

实验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;
}

  

标签:string,软件设计,void,nc,virtual,实验,yp,CPU
From: https://www.cnblogs.com/lyf3701/p/16771947.html

相关文章

  • 实验3:OpenFlow协议分析实践
    一、实验目的能够运用wireshark对OpenFlow协议数据交互过程进行抓包;能够借助包解析工具,分析与解释OpenFlow协议的数据包交互过程与机制。二、实验环境Ubuntu20.0......
  • 实验5:开源控制器实践——POX
    这个作业属于哪个课程https://edu.cnblogs.com/campus/fzzcxy/FZUZCSDN202201这个作业要求在哪里https://edu.cnblogs.com/campus/fzu/FZUSDN2022/homework/12765这个......
  • 实验4:开源控制器实践——OpenDaylight
    一、实验目的1能够独立完成OpenDaylight控制器的安装配置;2能够使用Postman工具调用OpenDaylightAPI接口下发流表。二、实验环境1下载虚拟机软件OracleVisualBox或......
  • 状态机:给定规则下分类讨论——红黑树(+队列实验-银行模拟)
    状态机:分类讨论,为了递归与美观,把重复的去掉dueto二叉树不保证平衡,herecomesRed-Blacktree——每条路黑高相同,lmax<2lmin类似还有AVLT(1.44lgn,但维护代价大)红黑树......
  • 《MiniPRO H750开发指南》第四十二章 FLASH模拟EEPROM实验
    第四十二章FLASH模拟EEPROM实验​STM32H750本身没有自带EEPROM,但是STM32H750具有IAP(在应用编程)功能,所以我们可以把它的FLASH当成EEPROM来使用。本章,我们将利用STM32H750内......
  • 实验5:开源控制器实践——POX
    实验5:开源控制器实践——POX(一)基本要求验证Hub模块h1pingh2h1pingh3验证Switch模块h1pingh2h1pingh3L2_learning模块流程图(二)进阶要求1.重新搭建(一......
  • 实验4:开源控制器实践——OpenDaylight
    基本要求利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器通过Postman工具调用OpenDaylight提供的API下发流表,实现拓扑内主机h1和h3网络中断10s进阶要......
  • 实验5:开源控制器实践——POX
    实验5:开源控制器实践——POX一、实验目的能够理解POX控制器的工作原理;通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;......
  • 实验5:开源控制器实践——POX
    实验5:开源控制器实践——POX一、实验目的能够理解POX控制器的工作原理;通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法;能够......
  • 实验4:开源控制器实践——OpenDaylight
    实验4:开源控制器实践——OpenDaylight一、实验目的能够独立完成OpenDaylight控制器的安装配置;能够使用Postman工具调用OpenDaylightAPI接口下发流表。二、实验环境......