概述
// 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 RAMn";}
void stop(){cout<<"stop the RAMn";}
};
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 CDROMn";}
void stop(){cout<<"stop the CDROMn";}
};
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之前会进行析构函数调用。
}
最后
以上就是魁梧小蜜蜂为你收集整理的实验四的全部内容,希望文章能够帮你解决实验四所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复