面向对象作业(一)
作业要求:完成两个程序,分别实现两个类及类的基本操作(请根据实际需要设计类的成员)。
一、创建矩形Rectangle类,有保护的int类型的成员变量r_long长和r_width宽;无参数的构造函数和有参数(参数没有默认值)的构造函数;其他成员函数comp_area()计算并返回矩形的面积,成员函数comp_perimeter()计算并返回矩形的周长,成员函数get_long()返回矩形的长;成员函数get_width()返回矩形的宽。
主函数要求:
1.无参构造矩形对象A
2.输入整数a、b,通过a、b构造矩形对象B
3.输出A的长、宽
4.输出B的长、宽
5.输出A的面积
6.输出B的周长
二、创建球Ball类,有保护的double型成员radius,其他成员请根据主程序要求自行设计,主程序要求:
输入半径、构造球类对象A;
1.输出A球的表面积、体积
2.拷贝构造新的球类对象B;
3.B半径扩大一倍;
4.输出B球的表面积、体积;
作业提交说明:
1.直接在输入框提交本次作业,不要上传其他文件
2.提交的内容应至少包含以下几个部分:
a.程序代码截图(在编译器中)
b.程序运行截图
c.程序的说明,针对核心代码的解释说明、结果的说明
一、
代码如下:
#include <iostream>
using namespace std;
class Rectangle{ //创建类 Rectangle
private:
int r_long,r_width;
public:
Rectangle(){ //无参构造函数
r_long=20; r_width=10; //默认矩形长为20 宽为10
}
Rectangle(int l,int w){ //含参构造函数
r_long=l;
r_width=w;
}
int comp_area(){ //面积
return r_long*r_width;
}
int comp_perimeter(){ //周长
return 2*(r_long+r_width);
}
int get_long(){ //矩形长
return r_long;
}
int get_width(){ //矩形宽
return r_width;
}
};
int main()
{
int a, b;
cout<<"请输入矩形的长宽a,b:";
cin >> a >> b;
Rectangle A, B(a, b);
cout << "A的长:" << A.get_long() << "\t" <<"A的宽:" << A.get_width() << endl;
cout << "B的长:" << B.get_long() << "\t" <<"B的宽:" << B.get_width() << endl;
cout << "A的面积:"<< A.comp_area() << endl;
cout << "B的周长:"<< B.comp_perimeter() << endl;
}
运行截图:
Rectangle(){ //无参构造函数
r_long=20; r_width=10; //默认矩形长为20 宽为10
}
此题的无参构造函数需设置初始值,即矩形的长和宽,通过其他的成员函数实现题中所需的各项功能
二、
#include <iostream>
using namespace std;
const float PI = 3.14159; //定义常量 PI
class Ball{ //声明类Ball
private:
double raduis;
public:
Ball (double r){ //声明含参构造函数
raduis=r;
}
Ball (Ball &p); //拷贝构造函数
double S(){ //返回球表面积
return 4*PI*raduis;
}
double V(){ //返回球体积
return (4*1.0/3)*PI*raduis*raduis*raduis;
}
};
Ball::Ball(Ball &p){ // 拷贝构造函数实现 将半径扩大一倍
raduis=2*p.raduis;
}
int main(){
double r;
cout<<"请输入球的半径:";
cin>>r;
Ball A(r);
Ball B(A); //拷贝构造函数的调用
cout<<"A球表面积:"<< A.S() <<" "<<"A球体积:"<< A.V() <<endl;
cout<<"B球表面积:"<< B.S() <<" "<<"B球体积:"<< B.V() <<endl;
}
运行截图:
本题的核心是使用拷贝构造函数将半径变为原来的二倍:
Ball (Ball &p); // 此代码是声明一个拷贝构造函数
Ball::Ball(Ball &p){ // 拷贝构造函数的实现 将半径扩大一倍
raduis=2*p.raduis;
}