题目的主要信息:
- 采用封装的思想设计一个立方体类(Cube),成员变量有:长(length)、宽(width)、高(height),都为 int 类型
- 成员方法有:设置长宽高的方法、获取长宽高方法、获取表面积的方法(getArea)、获取体积的方法(getVolume)
具体做法:
构建一个类,最主要的就是构建成员变量和成员方法。
对于变量而言,一般我们封装的变量不会允许外界直接访问,只能由成员方法来访问,因此我们将其设置为private,增加三个int型变量:length、width、height。
对于方法而言,有的方法也不允许外界访问,只能由类的成员方法访问,这类方法也设置为private,其他方法我们设置为public,方便外界可以访问这些方法。本题中的方法,因为外界都要访问,因此设置为public。
我们仔细看主函数,因此成员变量都是private的,不允许外界访问,我们只能调用类似setLength的成员方法来访问变量,将外界的值复制给变量,因此我们添加了三个设置值的成员方法。同时,主函数要获取长宽高,因此我们还需要三个获取长宽高值的成员方法,直接返回即可。
然后还有计算表面积和体积的成员方法,表面积我们返回2∗(length∗width+length∗height+width∗height),体积我们返回length∗width∗heigth
#include <iostream>
using namespace std;
class Cube {
// write your code here......
private:
int length, width, height; //成员变量
public:
void setLength(int l){ //设置长
length = l;
}
void setWidth(int w){ //设置宽
width = w;
}
void setHeight(int h){ //设置高
height = h;
}
int getLength(){ //获取长
return length;
}
int getWidth(){ //获取宽
return width;
}
int getHeight(){ //获取高
return height;
}
int getArea(){ //获取表面积
return 2 * (length * width + length * height + width * height); //表面公式
}
int getVolume(){ //获取体积
return length * width * height; //体积公式
}
};
int main() {
int length, width, height; //输入长宽高
cin >> length;
cin >> width;
cin >> height;
Cube c; //将长宽高输入到类中
c.setLength(length);
c.setWidth(width);
c.setHeight(height);
//获取长宽高及表面积体积
cout << c.getLength() << " "
<< c.getWidth() << " "
<< c.getHeight() << " "
<< c.getArea() << " "
<< c.getVolume() << endl;
return 0;
}
复杂度分析:
- 时间复杂度:O(1),常数时间
- 空间复杂度:O(1),常数空间