文档介绍:面向对象应用实例讲解------图书馆流通系统——对象与类的识别1、对象和类的识别图书馆流通系统内,有书、读者、借书证、管理人员、借书还书行为等对象和事件,他们分别各是一个群体。在图书流通系统内,有以下类:读者(Reader)类图书类(暂用Item款目表示)图书借阅信息类(Loan)管理人员类(Manager),是借书还书行为的操作人。借书证对象只作为读者类的一个数据成员。2、对象属性的识别每个对象的情况称为对象的属性。“图书类”,应包含书名Title、作者名Author、分类号IndexCode、册数Number、条码号BarCode等属性。读者类,包含姓名Name、职务Position、年龄Age、借书证编号Code等。一个读者允许借阅若干册书,在此用一个Item的数组items保存相应信息。另外对读者所借书册数要统计,定义一个计数的成员Counter;图书借阅信息类,包含所借书item、借书人reader、借书操作员manager等;管理人员类,包含姓名Name、年龄Age、工号Code等;——对象与类的识别3、对象功能的确定对象的功能指为了达到目的必须执行的动作,或是对象对所发生事件的反应。功能也可称为对象的操作。图书类应包含为各属性赋值(Set…)的操作、读取条码(GetCode)和显示图书基本信息(Show)的操作,另外还定义了缺省构造函数和拷贝构造函数。读者类,需定义为各属性赋值(Set…)的操作、读取借书证号的操作,借书和还书需要向所借书数组中添加或减少书,定义AddBook和DelBook两个操作,还有显示所借书的操作ShowBooks。图对象与类的标记——对象与类的识别图书流通管理系统中的类——对象与类的识别图书流通管理系统的对象若定义类的对象:Itemitem;Readerreader1;Managermanager1;Loanloan1;则下图可表示这些对象。——对象与类的识别定义了类和对象,它们之间就可以互相通讯,完成特定的功能了。。 图书流通管理系统的对象——对象与类的识别——改进类的封装根据面向对象的思想,数据和对它们的操作可以封装为类,很自然,我们可以将图书馆的信息(书、读者、借阅情况及管理员)与业务(创建书目、读者库、管理员库及借书、还书、查询等操作函数)封装为图书馆类Library,分别作为图书馆类的数据成员和函数成员。而且,由于操作对象定义为类的数据成员,图书馆类的函数成员所进行的业务操作就不再需要参数,可以直接访问数据成员,简化了编程。Library类的成员函数中多了一个Run函数,这是图书馆业务开始执行的入口,因此原来在main函数中执行的操作,都要在Run中执行,如创建书目、读者信息、管理员信息等,主菜单的显示也应放在Run中。 图书馆类——改进类的封装voidLibrary::Run(){intchoice;charc;do{ choice=ShowMainMenu(); switch(choice){ case1:CreateBibliotheca();break;//创建书目 case2:CreateReader();break;//创建读者信息 case3:CreateManager();break;//创建管理员信息 case4:do{Borrow(); cout<<"继续吗?Y(y)es/N(n)o\n"; cin>>c; ();}while(c=='Y'||c=='y');//借书操作 break; case5:do{Return(); cout<<"继续吗?Y(y)es/N(n)o\n"; cin>>c; ();}while(c=='Y'||c=='y');//还书操作 break;——改进类的封装case6:do{Require(); cout<<"继续吗?Y(y)es/N(n)o\n"; cin>>c; ();}while(c=='Y'||c=='y');//查询操作 break; case0:exit(0);break;//退出 default:cout<<"请重新输入"<<endl;break; }}while(1);}main函数所要做的就是定义一个Library的对象,然后调用该对象的Run函数:voidmain(){Librarylib;//();//调用运行函数,开始执行图书馆功能return;}更符合面向对象提出的“程序=对象+对象”这一思想。下面给出借书函数: