综 合 实 验 报 告
面向对象程序设计
专业名称:
班 级:___
姓 名:
学 号:
信息科学与工程学院
二零一三年七月
目 录
第一题······················ 1
1.1题目概述·················· 1
1.2设计思路·················· 1
1.3设计说明与调试分析·············· 2
1.4编码实现·················· 2
1.5程序运行结果················ 4
第二题······················ 4
2.1题目概述·················· 4
2.2设计思路·················· 4
2.3设计说明与调试分析·············· 4
2.4编码实现·················· 5
2.5程序运行结果················ 6
设计心得:···················· 7
参考文献:···················· 7
1.1题目概述
用抽象类设计计算二维平面图形面积的程序,在基类TDshape中设计纯虚函数area()和printName(),area()用于计算机几何图形的面积,printName()用于打印输出几何图形的类名,如Triangle类的对象就打印输出“Triangle”。每个具体形状的类则从抽象类TDshape派生,各自需要定义其独有的数据成员和成员函数,并且定义area()和printName()的具体实现代码,如图5-9所示。
要求编写以TDshape为接口的函数,借以访问具体类如Triangle和Rectangle类的成员函数area(),printName()。
用虚构函数写出基类TDshape,之后创建派生类Trangle、Rectangle,每个派生类都定义double width,height,之后定义area(),printName,每个里面都有cout函数,同时每个派生类都有set和get函数,分别用来给width,height赋值和返回width,height的数值。
见代码。
#include<iostream>
using namespace std;
class TDshape
{
public:
virtual void area()=0;
virtual void printName()=0;
};
class Triangle:public TDshape{ //公有继承TDshape
private:
double width,height; //定义私有成员width,height
public:
void setWidth(double w)
{
width=w; //赋值给width
}
void setHeight(double h)
{
height=h; //赋值给height
}
double getWidth()
{
return width; //返回width的值
}
double getHeight()
{
return height; //返回height的值
}
void printName()
{
cout<<"该图形是三角形。"<<endl; //输出图形的个名字
}
void area(){
cout<<"面积是"<<width*height*0.5<<endl; //计算面积并且输出
}
};
class Rectangle:public TDshape{ //公有继承TDshape
private:
double width,height; //定义私有成员width,height
public:
void setWidth(double w)
{
width=w; //赋值给width
}
void setHeight(double h)
{
height=h; //赋值给height
}
double getWidth()
{
return width; //返回width的值
}
double getHeight()
{
return height; //返回height的值
}
void printName()
{
cout<<"该图形是矩形。"<<endl; //输出图形名称
}
void area(){
cout<<"面积是"<<width*height<<endl; //计算面积并且输出
}
};
int main()
{
Rectangle r;
Triangle t;
r.setHeight(70); //调用Rectangle中的setheight 给height赋值
r.setWidth(60); //调用Rectangle中的setwidth 给width赋值
r.printName(); //调用Rectangle中的printName 打印出图形名称
r.area(); //打印面积。
t.setHeight(70);
t.setWidth(60);
t.printName();
t.area();
}
假设有一个工人类,形式如下:
class Worker{
char name[10];
int age;
double salary;
public:
Worker(…)
void SetData(char *Name,int Age,double wage)
void Display()
……
}
其中的name表示姓名、age表示年龄、salary表示薪金,构造函数worker()实现各数据成员的初始化,SetData()成员函数用于重置各数据成员的值,Display()用于显示输出各数据成员的值。
完成该类的设计,并用STL中的链表list(或向量vector、堆栈stack、队列queue等数据结构)管理该类的对象,要求至少建立两个链表、每个链表中至少存入Worker类的3个对象,通过迭代器访问输出各节点对象的数据成员,并利用链表的merge算法将两个链表合并在一起,然后输出合并后的链表节点对象。
见代码。
#include <iostream>
#include<string.h>
#include <list>
#include <string>
using namespace std;
class Worker //定义Worker类
{
char name[10]; //姓名
int age; //年龄
double salary; //薪水
public:
Worker()
{}
Worker(char* n,int a,double s) //构造函数
{
strcpy(name,n); //把n中的字符复制给name
age=a; //a中的数值赋值给age
salary=s; //s中的数值赋值给salary
}
void SetData(char *Name,int Age,double wage ) //用于重置的函数
{
strcpy(name,Name); //把Name中的字符复制给name
age=Age; //把Age中的数值赋值给age
salary=wage; //把wage中的数赋值给salary
}
void Display() //用于输出的函数
{
cout<<"姓名:"<<name<<endl;
cout<<"年龄:"<<age<<endl;
cout<<"工资:"<<salary<<endl;
}
};
int main()
{
list<Worker*>p,q;
list<Worker*>::iterator i;
Worker a("杨",50,3000);
Worker b("孙",44,3500);
Worker c;
c.SetData("倪",41,5000);
p.push_back(&a);
q.push_back(&b);
for(i=p.begin();i!=p.end();i++)
{
(*i)->Display();
}
for(i=q.begin();i!=q.end();i++)
{
(*i)->Display();
}
while(!p.empty())
{
p.pop_front();
}
cout<<"重置之后的结果 :"<<endl;
p.push_back(&c);
for(i=p.begin();i!=p.end();i++)
{
(*i)->Display();
}
p.merge(q);
cout<<"合并之后的结果:"<<endl;
for(i=p.begin();i!=p.end();i++)
(*i)->Display();
}
设计心得:程序设计是一门考验耐心和细心的学科,需要很强的逻辑思维能力,尤其是指针部分,逻辑思维能力尤其重要。程序的编写是一个枯燥的过程,需要耐心和兴趣来支持。
参考文献:《C++面向对象程序设计(第二版)》 杜茂康等 电子工业出版社 2011.7
《面向对象程序设计》上机实验报告
第 1 次上机
班 级: 131112
学 号: 13111151
姓 名: 王悦
面向对象程序设计之课程设计上海电力学院课题名称院系专业学号姓名时间地点指导教师课程设计报告面向对象程序设计20xx20xx学年第一…
面向对象程序设计实验报告姓名学号班级专业学院实验三函数的应用一实验目的掌握函数的定义和调用方法练习重载函数使用练习函数模板的使用练…
题目11问题描述建立一个二维坐标系的类TwoCoor用xy表示坐标值实现两坐标点的加减运算计算两坐标点间的距离并重载输入输出运算符…
综合实验报告面向对象程序设计专业名称班级姓名学号信息科学与工程学院二零一三年七月信息科学与工程学院面向对象程序设计综合实验报告目录…
课程实验报告课程名称面向对象程序设计实验名称面向过程的整型栈编程院系计算机科学与技术专业班级学号姓名指导教师年日面向对象程序设计实…
课程实验报告课程名称面向对象程序设计实验名称面向过程的整型栈编程院系计算机科学与技术专业班级学号姓名指导教师年日面向对象程序设计实…
面向对象程序设计之课程设计上海电力学院课题名称院系专业学号姓名时间地点指导教师课程设计报告面向对象程序设计20xx20xx学年第一…
面向对象程序设计Java实验报告20xx20xx学年第2学期班级学号姓名指导教师序号班级学号姓名序号班级学号姓名序号班级学号姓名
课程实验报告课程名称面向对象程序设计实验名称面向对象的整型队列编程院系计算机科学与技术专业班级学号姓名指导教师月日面向对象程序设计…
西北农林科技大学信息工程学院面向对象程序设计西北农林科技大学信息工程学院面向对象程序设计实习报告题目简易计算器的设计与实现学号20…