【作业练习】 类与对象
来源:互联网 发布:学校网络环境建设 编辑:程序博客网 时间:2024/05/16 09:20
(1)掌握类的定义和使用
(2)掌握类的定义和对象的使用
(3)复习具有不同访问属性的成员的访问方法
(4)观察构造函数和析构函数的执行过程
(5)学习类的聚集使用方法
(6)使用debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序
实验内容:
(1)定义一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个共有成员函数run、stop。其中,rank为枚举类型定义为enumCPU_Ranl{P1=1,P2,P3,P4,P4,P5,P6,P7},frequency为单位是MHz的整数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。
#include <iostream> using namespace std; enum CPU_Rank {p1=1,p2,p3,p4,p5,p6,p7}; class CPU { private: CPU_Rank rank; int freauency; float voltage; public: CPU(CPU_Rank r, int f,float v) { rank=r; freauency=f; voltage=v; cout<<" This is CPU construct program"<<endl;} ~CPU() {cout<<" This is CPU destroy function"<<endl;} void run(){cout<< " The CPU is running"<<endl;} void stop(){cout<< " The CPU is Stopping"<<endl;} }; int main() { enum CPU_Rank rank; rank=p5; CPU cpu1(rank,1024,3.6); cpu1.run(); cpu1.stop(); return 0; }
(2)定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,有两个公有成员函数run、stop。Cpu为CPU类的对象,ram为RAM类的一个对象,cdrom为CDROM类的对象,定义并实现这个类。
#include <iostream> using namespace std; enum CPU_Rank {p1=1,p2,p3,p4,p5,p6,p7};class CPU { private: CPU_Rank rank; int freauency; float voltage; public: CPU(CPU_Rank r, int f,float v) { rank=r; freauency=f; voltage=v; cout<<" This is CPU construct program"<<endl;} ~CPU() {cout<<" This is CPU destroy function"<<endl;} void run(){cout<< " The CPU is running"<<endl;} void stop(){cout<< " The CPU is Stopping"<<endl;} }; int main() { enum CPU_Rank rank; rank=p5; CPU cpu1(rank,1024,3.6); cpu1.run(); cpu1.stop(); return 0;}
(3)设计一个用于人事管理的People类。考虑到通用性,只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。其中“出生日期”定义为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。
#include <iostream>using namespace std;class data{ //data类的定义 public: data(int y=0,int m=0,int d=0) //构造函数 { year=y; month=m; day=d; } data(data &mybirthday); int gety() {return year;} int getm() {return month;} int getd() {return day;} void ouput(){cout<<" 年: "<<year<<" 月: "<<month<<" 日: "<<day<<endl;}private: int year; int month; int day;};data::data(data &mybirthday) //复制构造函数的实现{ year=mybirthday.year; month=mybirthday.month; day=mybirthday.day; }class people{ //personal类的定义public: //外部接口 people(int n,char s,int i,data b); people(people &liming); void input(); void output();private: int number; char sex; int id; data birthday; //data类的对象birthday};//组合类的构造函数实现people::people(int n,char s,int i,data b):number(n),sex(s),id(i),birthday(b){ }//组合类的复制构造函数实现people::people(people &liming):number(liming.number),sex(liming.number),id(liming.id){ }void people::output(){ cout<<"学号:"<<number<<" 性别: "<<sex<<" 身份证号: "<<id; birthday.ouput();}int main(){ data mybirthday(1995,07,07); people yanggengchen(1610003033,'m', 412702 ,mybirthday); cout<<"my information is:"<<endl; cout<<"注意性别中m为男,f为女"<<endl; yanggengchen.output(); return 0;}
(4)(综合)设计一个电子日期类CDate。满足如下要求:
● 用日/月/年格式输出日期
● 可运行日期加一天的操作
● 设置日期
// 设计类CDate// 满足:输出年月日日期格式;输入的日期加1;设置日期#include<iostream>using namespace std;class CDate{private:int m_nDay;int m_nMonth;int m_nYear;bool IsLeapYear(); // 输入日期格式涉及到对闰年的判断public:CDate();CDate(int, int, int);void Display();void AddDay();void SetDate(int, int, int);~CDate();};CDate::CDate(){} // 默认构造函数初始化CDate::CDate(int year, int month, int day) // 带参构造函数初始化{m_nDay=day;m_nMonth=month;m_nYear=year;}void CDate::Display() // 日期显示{cout<<m_nDay<<"日"<<m_nMonth<<"月"<<m_nYear<<"年"<<endl;}void CDate::AddDay() // 当前日期加1{if(IsLeapYear()) // 先判断是否是闰年{if(m_nMonth == 2 && m_nDay == 29){m_nMonth++;m_nDay=1;return;}}else{if(m_nMonth == 2 && m_nDay == 28){m_nMonth++;m_nDay=1;return;}}if(m_nMonth == 4 || m_nMonth == 6 || m_nMonth == 9 || m_nMonth == 11) // 再判断月份{if(m_nDay == 30){m_nMonth++;m_nDay=1;return;}}else if(m_nMonth == 12){if(m_nDay == 30){m_nMonth=1;m_nDay=1;return;}}else{if(m_nDay == 31){m_nMonth++;m_nDay=1;return;}}m_nDay++; // 普通年份普通月份普通日子就直接加1}void CDate::SetDate(int year, int month, int day) // 设置当前日期{m_nYear=year;m_nMonth=month;m_nDay=day;}CDate::~CDate(){}bool CDate::IsLeapYear() // 判读闰年{bool bLeap;if((m_nYear%100 != 0 && m_nYear%4 == 0) || m_nMonth%400 ==0)bLeap=1;return bLeap;}int main(){CDate date;int y, m, d;cout<<"请输入年月日:";cin>>y>>m>>d;date.SetDate(y, m, d);cout<<"当前输入日期:";date.Display();date.AddDay();cout<<"当前日期加1:";date.Display();return 0;}
0 0
- 【作业练习】 类与对象
- 第四周作业:上机练习2类与对象
- 第8周作业1——类与对象练习之TV
- 第8周作业1——类与对象练习之TV
- java类与对象练习
- 类与对象题目练习
- 重点练习类与对象
- #小练习类与文件对象
- #小练习 类与文件对象
- 创建类与对象的练习
- 上机练习2 类与对象
- 上机练习2 类与对象
- 上机练习2 类与对象
- 上机练习2 类与对象
- 上机练习2 类与对象
- 上机练习2 类与对象
- 上机练习2 类与对象2
- Java开发练习2,类与对象
- VS上使用OpenCV报错解决方法
- jdbc将图片(二进制文件如电影,音乐等)从数据库取出
- CSS Layout
- Linux运维笔记-课后练习-RHCSA测验
- uboot的命令分析
- 【作业练习】 类与对象
- CSS | CSS属性推荐书写顺序
- 随便开个头
- macOS系统eclipse安装tomcat与配置以及找不到server选项的解决
- Java订单号生成工具(实现一)基于对象锁
- 安卓开发:创建带子菜单的选项菜单
- Uva572-油田
- Java订单号生成工具(实现二)基于队列
- LeetCode 14. Longest Common Prefix