您好,欢迎访问三七文档
全国高等教育自学考试课程《面向对象程序设计》实践指导书1一、实践目的C++语言程序设计上机操作实验是本课程必不可少的实践环节。上机实验的目的是使考生熟悉用高级语言解题的全过程,加深对语言的理解,得到程序设计基本方法和技巧的训练,从而能真正掌握C++语言这种工具,来解决实际问题。二、实践内容实验一练习设计、使用类并熟悉C++编程环境1、目的要求1.熟悉C++程序的开发环境MicrosoftVisualC++6.0。2.掌握从编辑含有类的C++源文件、存取文件、编译文件到运行的全过程。3.掌握单步执行和调试C++程序的基本方法。4.初步掌握类的设计和使用类的对象。2、实验内容1.调试下列程序,熟悉C++环境的基本使用方法。#includeiostream.h#defineM_PI3.14156doublecylinder(intra,inthi);voidmain(){intradius,high;doublevolume;cout“Pleaseinputtwonumbers:”endl;cinradiushigh;volume=cylinder(radius,high);cout“radius:”radius“high:”highendl;cout“Thevolumeis”volumeendl;}doublecylinder(intra,inthi){returnhi*M_PI*ra*ra;}2.按下列要求编程并调试程序。建立用于完成复数算术运算的类Complex。编写一个程序测试该类。复数的形式如下:real+imaginary*I用浮点变量表示类中的私有数据成员。给类提供一个能够对所声明的对象初始化的构造函数。为了能够在不提供初始化值的情况下也能对对象初始化,构造函数中应该包含默认的值。给类提供能够完成如下功能的公有成员函数:⑴两个复数相加,即实部和实部相加,虚部和虚部相加。⑵两个复数相减,即实部和实部相减,虚部和虚部相减。⑶以(a,b)的格式输出结果(a是实部,b是虚部)。23.按下列要求编程并调试程序。建立用于完成分数形式算术运算的类RationalNumber。编写一个程序测试该类的程序。用整数变量表示类的私有数据成员(即分子和分母)。该类的构造函数应该以最简分数形式存储数据。公有成员函数应该有以下功能:⑴两个有理数相加,以最简分数形式保存结果。⑵两个有理数相减,以最简分数形式保存结果。⑶两个有理数相乘,以最简分数形式保存结果。⑷两个有理数相除,以最简分数形式保存结果。⑸以a/b的形式输出有理数。(a是分子,b是分母)⑹以浮点形式输出有理数。4.按下列要求编程并调试程序。声明一个名为SimpleCircle的简单圆类,其数据成员int*itsRadius为一个指向其半径值的指针,设计对数据成员的各种操作,给出这个类的完整实现并测试这个类。5.按下列要求编程并调试程序。编程求生日是星期几。(本题参考程序:)//********//类定义部分//********#includeiostream.hstructDate{intmonth;intday;intyear;};classTdateType{public:TdateType(Dateb);//构造函数voidModify(intm=1,intd=2,inty=1999);//修改日期voidNext();//明天voidPrevions();//昨天intWeekday();//星期几voidPrint();//打印日期protected:Datea;//日期结构数据成员intIsLeapYear();//保护成员函数,是闰年否3intNonthEnd(intm);//某月的天数};//*************************//以下为类的成员函数实现部分//*************************TdateType::TdateType(Dateb){a.month=b.month;a.day=b.day;a.year=b.year;}voidTdateType::Modify(intm,intd,inty){a.month=m;a.day=d;a.year=y;}voidTdateType::Next(){a.day++;if(a.dayMonthEnd(a.month)){a.day=1;a.month++if(a.month12){a.month=1;a.year++;}}}voidTdateType::Previous(){a.day--;if(a.day1){a.month--;if(a.month1){a.month=12;4a.year--;}a.day=MonthEnd(a.month);}}intTdateType::IsLeapYear(){return((a.year%4==0&&a.year%100!=0)||(a.year%400==0))}intTdateType::MonthEnd(intm){switch(m){case1:case3:case5:case7:case8:case10:case12:return31;case4:case6:case9:case11:return30;case2:if(IsLeapYear())return29;elsereturn28;}return0;//needless}intTdateType::WeekDay(){longn;n=(a.year–1)*365;//直至去年的天数(不考虑闰年)n+=(a.year–1)/4;//以下3句考虑闰年数n-=(a.year–1)/100;n+=(a.year–1)/400;for(inti=1;ia.month;i++)//本年直至上月的天数n+=monthEnd(i);5n+=a.day;//本月的天数n%=7;//折成星期几,若0,则为星期日returnn;}voidTdateType::Print(){couta.year”年”a.month”月”a.day”日”switch(WeekDay()){case0:cout”Sun\n”;break;case1:cout”Mon\n”;break;case2:cout”Tue\n”;break;case3:cout”Wed\n”;break;case4:cout”Thu\n”;break;case5:cout”Fri\n”;break;case6:cout”Sat\n”;break;}}//***********************//以下为应用程序部分//***********************voidmain(){Datea=(4,22,1999);TdateTypeoneday(a);oneday.Print();oneday.Next();oneday.Print();oneday.Modify(2,15);oneday.Print();oneday.Previous();oneday.print();}实验二熟悉类的特征1、目的要求61.掌握C++的类的基本组成及其派生方法;2.学会使用构造函数、析构函数及成员函数;3.掌握构造函数、析构函数及成员函数的调用顺序;4.进一步认识C++面向对象的程序设计机制。2、实验内容1.按下列要求编程并调试程序。⑴假设我们已开发了一个Location类,这个类描述屏幕上一个点的位置,成员函数用于计算两个点的距离。下面是Location类的头文件Location.h。//Location.h#if!defined(LOCATION_H)#defineLOCATION_HClassLocation{private:intx,y;public:Location(int,int);intgetX(){returnx;}intgetY(){returny;}distance(Location&);~Location();};#endif编写一个Location.cpp文件,给出没有实现的成员函数。要求在构造函数中给出创建不同对象时给出可供区别对象的信息,对析构函数的要求与此相同。测试点为(-10,20)和(-40,60)。⑵再用Location类定义一个椭圆类ellipse,对构造函数和析构函数的要求与Location类相同。⑶从椭圆类派生圆类circle,对构造函数和析构函数的要求与Location类相同。⑷使用Location类的成员函数distance求屏幕上一个圆的圆心和一个椭圆圆心之间的距离。2.按下列要求编程并调试程序。定义一个Shape基类,在此基础上派生出Rectangle和Circle类,二者都有getArea()函数计算对象的面积;再使用Rectangle类创建一个派生类Square。最后创建这三个类的对象进行测试,输出各自的面积。本题参考代码:#includeiostream.hclassShape{private:intx,y;public:Shape(inta,intb){x=a;y=b;}doublegetArea(){return0.0;}7~Shape(){cout”\nDistructorofshapeiscalled.”endl;}}classRectangle:publicShape{private:intw,h;public:Rectangle(inta,intb,intc,intd):Shape(a,b){w=c;h=d;}doublegetArea(){return(double)w*h;}~Rectangle(){cout”\nDistructorofrectangleiscalled.”endl;}}classCircle:publicShape{private:intr;public:Circle(inta,intb,intc):Shape(a,b){r=c;}doublegetArea(){return3.14159*r*r;}~Circle(){cout”\nDistructorofcircleiscalled.”endl;}}classSquare:publicRectangle{public:Square(inta,intb,intc):Rectangle(a,b,c,c){}~Square(){cout”\nDistructorofsquareiscalled.”endl;}}voidmain(){Rectangler(10,20,30,20);Circlec(10,20,10);Squares(10,20,30);cout”矩形r的面积为:”r.getArea()endl;cout”圆c的面积为:”c.getArea()endl;cout”正方形s的面积为:”s.getArea()endl;}实验三多态性练习1、目的要求1.掌握由继承和虚函数获得多态性的方法;2.学会利用成员函数访问类的对象的私有成员。82、实验内容按下列要求编程并上机调试运行。1.使用继承和虚函数编写一个程序,用于计算正方形、三角形和圆的总面积。本题参考代码如下://Shape.hclassShape{public:virtualfloatgetArea()=0;};floattotal(Shape*s[],intn){floatsum=0;for(inti=0;in;i++)sum+=s[i]-getArea();returnsum;}//Shape.cpp#includeiostream.h#include“Shape.h”classTriangle:publicShape{protected:floath,w;public:Triangle(floata,floatb){h=a;w=b;
本文标题:面向对象实验指导书
链接地址:https://www.777doc.com/doc-1980780 .html