面向对象程序设计论文
题目:出版物CPublication类的定义与实现
学院(系):
年级专业:
学号:
学生姓名:
指导教师:
教师职称:
一、问题分析
根据出版物CPublication类的定义,该类包括出版物名称、价钱、出版日期和可供出借否等数据成员,以及构造函数、析构函数、设置出版物属性的成员函数、打印数据成员的函数、借出和归还的成员函数等。
完成该类的实现,并编写一主函数对其进行测试。
二、代码实现
#include<iostream.h>
#include<string.h>
#include<stdlib.h>
class CPublication
{
private:
char *p_title;
float price;
char data[20];
bool on_loan;
bool on_loan1;
public:
CPublication(char *p_t,float p,char *p_d);
void set(char *p_t,float p,char * p_d);
bool borrowIt();
bool returnIt();
void print()const;
~CPublication();
};
CPublication::CPublication(char *p_t,float p,char *p_d)
{
p_title=new char[strlen(p_t)+1];
if(p_title==NULL)
exit(1);
strcpy(p_title,p_t);
price=p;
strcpy(data,p_d);
on_loan=CPublication::borrowIt();
on_loan1=CPublication::returnIt();
}
void CPublication::set(char *p_t,float p,char * p_d) {
p_title=new char[strlen(p_t)+1];
if(p_title==NULL)
exit(1);
strcpy(p_title,p_t);
price=p;
strcpy(data,p_d);
}
bool CPublication::borrowIt()
{
return true;
}
bool CPublication::returnIt()
{
return false;
}
void CPublication::print()const
{
int i=0,j=0;
cout<<"The book's name is ";
cout<<p_title<<endl;
cout<<"The book's price is "<<price<<endl;
cout<<"The book's date of publication is on ";
cout<<data<<endl;
if(on_loan)
{
if(on_loan1)
cout<<"The book has been borrowed and has been returned"<<endl;
else
cout<<"The book has been borrowed and hasn't been returned"<<endl;
}
else
cout<<"The book hasn't been borrowed yet"<<endl; }
CPublication::~CPublication()
{
cout<<"destructing"<<endl;
delete p_title;
}
void main()
{
char *name="Science",*time="20101024",b;
float bookprice=25;
char name1[40],time1[20];
float bookprice1;
CPublication book(name,bookprice,time);
book.print();
cout<<"if need to rewrite the information?"<<endl;
cin>>b;
switch (b)
{
case 'y':{
cout<<"Please input new information" <<endl;
cout<<"The name is :";cin>>name1;
cout<<"The price is :";cin>>bookprice1;
cout<<"The date is :";cin>>time1;
book.set(name1,bookprice1,time1);
book.print();break;}
case 'n':{
cout<<"No new information"<<endl;break;} default:cout<<"ERROR"<<endl;
}
}
结果截图:。
三、代码分析
本文是对出版物CPublication类的简单定义和实现,目的是显示出版物的出版信息,包括出版物名称、价钱、出版日期和可供出借否,完成各成员函数的简单调用及对信息的修改。
程序中将判断可供出借否的变量设为布尔型,并将成员函数borrowIt(),returnIt()的返回值也设为布尔型,用来判断出版物是否可以借出,然后print()成员函数再根据返回值判断打印的信息。
main函数中分别将name,time ,bookprice初始化,然后调用构造函数,输出了出版物的相关信息,然后问用户是否需要修改相关信息,如果需要,输入y,再通过set() 成员函数修改出版物的信息,输出最新的情况;如不需要,输入n,则输出没有新信息;如输入其他值,则输出"ERROR"。
本程序只实现了需要修改信息时的情况。
四、总结
大一刚开始接触C++的时候,觉得很茫然,只学习到了一
些基础知识和简单的编程,也可以说只停留在了它的边缘地带,而对它的精华部分确知之甚少,通过这次面向对象程序设计的学习,我对C++语言有了更深层次的了解。
C++是在C语言的基础上发展起来的一种即支持面向过程又支持面向对象的编程语言。
所谓的面向对象,它将数据及对数据的操作方法放在一起,作为一个相互依存、不可分离的整体——对象。
对同类型对象抽象出其共性,形成类。
类中的大多数数据,只能用本类的方法进行处理。
类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。
C++既然是由C语言发展起来的,当然具有C语言的大部分优点,然而C++与C相比最显著的变化就是增加了面向对象的成分,也就是增加了类的概念,因为类的增加使软件开发可以比较容易的描述人类的思维,使得软件的开发和维护变得相对简单,直接降低了软件的成本。
本次编程使我对类的定义和实现有了更深刻的了解,当然,编程过程中也遇到了很多困难,但通过努力查阅书本和网络资料都一一解决了。
同时我也深深体会到了,要想学好C++必须经常上机实践,只有自己实际操作后,才能明白问题的所在,才能对所学知识有更全面的了解。