实验四

// test4.cpp : 定义控制台应用程序的入口点。
//    1.声明一个CPU类,包含等级rank,频率frequency,电压voltage等属性,有两个共有函数
//    stop 和ran。
//    其中,rank为枚举类型CPU_Rank,声明为enum CPU_Rank{p1=1,p2,p3,p4,p5,p6,p7},frequency为单位
//    MHz整数,voltage是浮点型电压值。
//2.声明一个RAM类,CDROM类。为实验四下半部分基于类的组合来构建Computer类打下基础。
//    提示:1.RAM类的主要参数包括:容量。类型和主频;类型建议用枚举类型(DDR4/DDR3/DDR2...)。
//         2.CD_ROM类的主要参数包括:接口类型、缓存容量、安装方式;
//         接口interface类型建议用枚举类型(SATA、USB...),安装install方式建议用枚举类型(external/built-in)。
//
//3.拓展练习:
//    设计一个用于人事管理的People(人员)类,(为了通用性:抽象出所有类型人员都具有的属性:number(编号)、sex、birthday、id等)
//    要求:
//    1.“出生日期”声明为一个“日期”类内嵌子对象。
//    2.用成员函数实现对人员信息的录入和显示。
//    3.包括构造函数和析构函数、拷贝函数、内联成员函数、组合。

#include "stdafx.h"
#include <iostream>
using namespace std;

enum CPU_Rank{p1=1,p2,p3,p4,p5,p6,p7};//初始值为1,后面一次递增
//注意:类名后直接大括号+分号“;”
class CPU{
private: //声明cpu类的属性,数据成员
    CPU_Rank rank;//等级
    int frequency;//频率
    float voltage;//电压
public:
    //带有参数的CPU类的构造函数
    CPU (CPU_Rank r, int f, float v){
        rank = r;
        frequency = f;
        voltage = v;
        cout<<"Creat a CPU构造函数!\n";
    }
    //拷贝构造函数
    CPU(CPU &c){
        rank = c.rank;
        frequency = c.frequency;
        voltage = c.voltage;
        cout<<"拷贝构造了一个CPU!"<<endl;
    }
    //析构函数
    ~CPU(){cout<<"release a CPU析构函数!\n";}

    //函数成员
    //外部接口函数,外部访问私有成员的接口
    CPU_Rank GetRank()const{return rank;}//const作用:常量类型,不可变,因为是私有成员,不允许改变。
    int GetFrequency()const{return frequency;}
    float GetVoltage()const{return voltage;}

    void SetRank(CPU_Rank r){rank = r;}
    void SetFrequency(int f){frequency = f;}
    void SetVoltage(float v){voltage = v;}
    void run(){cout<<"CPU开始运行\n";}//成员函数与正常定义函数相同;返回值类型,函数名,含参数
    void stop(){cout<<"CPU停止运行\n";}

};

enum RAM_Type{DDR2=2,DDR3,DDR4 };
class RAM{
private:
    enum RAM_Type type;
    unsigned int frequency;//MHz
    unsigned int capacity;//GB
public:
    RAM(RAM_Type t, int f, int c){
        capacity = c;
        frequency = f;
        type = t;
        cout<<"creat a RAM构造函数\n";
    }
    ~RAM(){cout<<"release a RAM析构函数\n";}
    //成员函数
    //外部接口
    //获取3个私有成员
    RAM_Type GetType()const{return type;}
    unsigned int GetFrequency()const{return frequency;}
    unsigned int GetCapacity()const{return capacity;}
    //设置3个私有成员值
    void SetType(RAM_Type t){type=t;}
    void SetFrequency(unsigned int f){frequency = f;}
    void SetCapacity(unsigned int c){capacity = c;}

    void run(){cout<<"run the RAM\n";}
    void stop(){cout<<"stop the RAM\n";}
};

enum CD_ROM_Install{external, built_in};//安装
enum CD_ROM_Interface{STAT, USB};//接口interface
class CDROM{
private:
    CD_ROM_Install install;
    unsigned int cache_size;//MB
    CD_ROM_Interface interf;
public:
    //构造函数
    CDROM(CD_ROM_Install ist,unsigned int s, CD_ROM_Interface itf){
        install = ist;
        cache_size = s;
        interf = itf;
        cout<<"creat a CDROM 构造函数!\n";
}
    ~CDROM(){cout<<"release a CDROM析构函数!\n";}

    //外部接口
    //获取两个私有成员,使外部可以访问私有成员
    CD_ROM_Install GetInstall()const{return install;}
    unsigned int GetCache_size()const{return cache_size;}
    CD_ROM_Interface GetInterface()const{return interf;}
    //设置私有成员:将外部传进来的参数赋值给私有数据成员
    void SetCD_ROM_Install(CD_ROM_Install ist){install = ist;}
    void SetCache_size(unsigned int s){cache_size = s;}
    void SetCD_ROM_Interface(CD_ROM_Interface itf){interf = itf;}

    void run(){cout<<"run the CDROM\n";}
    void stop(){cout<<"stop the CDROM\n";}
};
class Computer{
private:
    CPU my_cpu;
    RAM my_ram;
    CDROM my_cdrom;
    unsigned int storage_size;//GB存储容量
    unsigned int bandwidth;//MB带宽
public:
    //声明注意那个分号,在class外部进行具体的定义
    Computer(CPU c,RAM r,CDROM cd, unsigned int s,unsigned int b);
    ~Computer(){cout<<"computer 的析构函数\n";}

    void run(){
    //调用CPU,RAM,CDROM
        my_cpu.run();
        my_ram.run();
        my_cdrom.run();
        cout<<"Computer开始运行\n";
    }
    void stop(){
    //停止CPU,RAM,CDROM
        my_cpu.stop();
        my_ram.stop();
        my_cdrom.stop();
        cout<<"Computer停止运行\n";
    }
};
Computer::Computer(CPU c,RAM r,CDROM cd, unsigned int s,unsigned int b):my_cpu(c),my_ram(r),my_cdrom(cd) //组合类对象赋值格式如上。
{
    //简单数据成员赋值
    storage_size = s;
    bandwidth = b;
    cout<<"构造了一个Computer"<<endl;
}

int main(int argc, _TCHAR* argv[])
{
    CPU a(p6,300,2.8);//声明类对象,并初始化
    a.run();
    a.stop();
    cout<<"*******************************"<<endl;
    
    RAM b(DDR4, 1600, 8);//type,frequency,capacity
    b.run();
    b.stop();
    cout<<"*******************************"<<endl;

    CDROM c(external,1200 ,STAT);//install, cache_size, interface
    c.run();
    c.stop();
    cout<<"*******************************"<<endl;

    Computer com(a,b,c,8,120);
    com.run();
    com.stop();
    cout<<"*******************************"<<endl;

    return 0;//return之前会进行析构函数调用。
}

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验一 C++简单程序设计(2学时) 1.编程计算图形的面积。程序可以计算圆形、长方形、正方形的面积、运行时先提示用户选择图形型,然后,对圆形要求用户输入半径、对长方形要求用户输入长和宽的值,对正方形要求用户输入边长,计算出面积后将其显示出来。要求使用debug调试功能观察程序运行中变量值的变化情况。 2.定义一个表示时间的结构体,可以精确的表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。 实验函数的应用(2学时) 1.编写重载函数Max1,分别求出两个整数,两个双精度数,三个整数,三个双精度数的最大值。 2.使用重载函数模板重新实现上面的函数Max1。 要求:(1)练习重载函数的使用;(2) 练习函数模板的使用。 实验与对象(2学时) 1.声明一个Dog,包含age、weight等属性,以及对这些属性操作的方法。实现并测试这个。 2.设计并测试一个名为Rectangle的矩形,其属性为矩形的左下角和右上角两个点的坐标,有成员函数能计算矩形的面积。 3.定义一个CPU,包含等级、频率,电压等属性,并编写构造函数、析构函数,以及成员函数runstop模拟CPU的状态。其中,等级为整型,频率为单位是兆赫兹的整数,电压为浮点型。要求自己设计各个属性的标识。 4.定义一个简单的Computer,包含数据成员cpuram、cdrom等等,有两个成员函数runstop。其中cpuCPU的一个对象,ramRAM的一个对象,cdrom为CDROM的一个对象,定义并实现这个。 5.(必做)设计一个用于人事管理的People。考虑到通用性,可以只抽象出所有人员都 具有的属性:number(编号),sex(性别) ,birthday(出生日期),id(身份证号)等等。其中“出生日期”定义为一个“日期”内嵌子对象。用成员函数实现对人员函数的录入和显示。要求包括:编写构造函数和析构函数、拷贝构造函数、内联成员函数的组合。 实验 C++程序的结构(2学时) 1.编写程序,实现并测试客户机(Client)。定义字符型静态数据成员ServerName[10],保存其服务器名称;整型静态数据成员ClientNum,记录定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。在头文件client.h中定义,在文件client.cpp中实现,在文件test.cpp中测试这个,观察相应的成员变量的取值的变化情况。 2、在实验三题目5编写的人员中设计适当的方法来实现中数据的共享性,并采用多文件结构实现程序。 3.(选做)定义X、Y、Z,函数h(X *),满足:X有私有成员i,Y的成员函数g(X *)是X的友元函数,实现对X的成员i加1,Z是X的友元,其成员函数f(X *)实现对X的成员i加5,函数h(X *)是X的友元函数,实现对X的成员i加10。在一个文件中声明,在一个文件中实现,在另一个文件中测试实验五 继承和派生(2学时) 1.设计并定义一个交通工具,并通过该派生出新的,编写程序定义这些并测试它; 2.(选做)声明一个基Shape,在此基础上派生Rectangle和Circle,二者都有GetArea()函数计算对象的面积,编写程序测试。 3.(选做)声明一个哺乳动物Mammal,再由此派生出狗Dog,定义一个Dog的对象,观察基与派生的构造函数和析构函数的调用顺序。 4.完善实验第2题的程序,具体要求如下: 任务1:从people(人员)派生出student(学生),添加属性:学校、学院、专业、班号、入学成绩,设计相应的成员函数(构造函数,拷贝构造函数,录入函数,显示函数)。 任务2:从people派生出teacher(教师),添加属性:职务,部门,职称。并设计相应的成员函数。 任务3:从student派生出graduate(研究生),添加属性:导师,研究方向。并设计相应的成员函数。 任务4:编写程序来测试这个实验六 小型学生管理系统的设计与实现1(2学时) 设计学生、课程、成绩及相应的成员函数。要求能实现学生的信息、课程信息和成绩信息的增加、修改、删除与查询。 实验七 多态性(2学时) 1.定义Point,有坐标X和Y两个成员变量,对Point重载++和――运算符,实现对坐标值的改变。 2.定义一个车(Vehicle),有runstop等成员函数,由此派生出自行车(bicycle)、汽车(car),由bicyclecar派生出摩托车(motocar),它们都包含runstop等成员函数,编写相应的虚函数并测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值