面向抽象类编程-电脑组装练习

#include <iostream>


using namespace std;

//抽象层--------------------------------------
class cpu
{
public:
    virtual void CPU()=0;

};

class gpu
{
public:
    virtual void GPU()=0;
};


class neicun
{
public:
    virtual void NEICUN()=0;
};



class computer
{
public:
    computer(cpu *p1,gpu *p2,neicun *p3)
    {
        this->p1=p1;
        this->p2=p2;
        this->p3=p3;

    }

    void print()
    {
        p1->CPU();
        p2->GPU();
        p3->NEICUN();
    }


private:
    cpu *p1;
    gpu *p2;
    neicun *p3;


};

//实现层--------------------------------------------
class intercpu:public cpu
{
public:
    virtual void CPU()
    {
        cout<<"使用因特尔的cpu"<<endl;
    }

};

class intergpu:public gpu
{
public:
    virtual void GPU()
    {
        cout<<"使用因特尔的Gpu"<<endl;
    }

};


class interneicun:public neicun
{
public:
    virtual void NEICUN()
    {
        cout<<"使用因特尔的内存"<<endl;
    }
};



class nvidiagpu:public gpu
{
public:
    virtual void GPU()
    {
        cout<<"使用nvidia的gpu"<<endl;
    }

};

class kingstonneicun:public neicun
{
public:
    virtual void NEICUN()
    {
        cout<<"使用kingston的内存"<<endl;
    }

};



class couputer1:public intercpu,public intergpu,public interneicun
{
public:
    void print()
    {
        this->CPU();
        this->GPU();
        this->NEICUN();
        cout<<"couputer1........"<<endl;
    }

};



class couputer2:public intercpu,public nvidiagpu,public kingstonneicun
{
public:
    void print()
    {
        this->CPU();
        this->GPU();
        this->NEICUN();
        cout<<"couputer2..............."<<endl;
    }


};


//业务层---------------------

//case1 若有新组合类型电脑,仍然需要继承不同的类
//int main()
//{
//
//    couputer1 com1=couputer1();
//    couputer2 com2=couputer2();
//    com1.print();
//
//    com1.CPU();
//    com1.NEICUN();
//    com1.GPU();
//    cout<<"---------------------------"<<endl;
//    com2.print();
//
//}

//case 2 不需要新写实现层

int main()
{
    intercpu *pp1=new intercpu;
    intergpu *pp2=new intergpu;
    interneicun *pp3=new interneicun;
    nvidiagpu *pp4=new nvidiagpu;
    kingstonneicun *pp5=new kingstonneicun;


    computer *com1=new computer(pp1,pp2,pp3);
    com1->print();
//
    cout<<"----------------------------"<<endl;
    computer com2=computer(pp1,pp4,pp5);
    com2.print();
//    delete com2;

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值