我一直在为CS类编写一个程序,它应该从用户那里得到X和Y坐标,以及一个正方形的长度和立方体的高度,然后它应该计算出它的面积。正方形和立方体的表面积和体积(加上一些坐标,但现在这不是一个紧迫的问题)
我已经编写了测试文件并且编译成功了,但是我已经得到了很明显错误的方形和立方体属性的很长的答案。任何人都可以指出我可能遇到的任何逻辑错误,或者我是否有错误的访问规范和关系?
Point.h
class Point
{
protected:
double Xint, Yint;
public:
Point();
void setX(double);
void setY(double);
double getX() const;
double getY() const;
};
Point.ccp
Point::Point()
{
Xint = 0;
Yint = 0;
}
void Point::setX(double x)
{ Xint = x; }
void Point::setY(double y)
{ Yint = y; }
double Point::getX() const
{ return Xint; }
double Point::getY() const
{ return Yint; }
Square.h
#include "Point.h"
class Square : public Point
{
protected:
Point lowerLeft;
double sideLength;
public:
Square(double sideLength, double x, double y) : Point()
{
sideLength = 0.0;
x = 0.0;
y = 0.0;
}
void setLowerLeft(double, double);
void setSideLength(double);
double getSideLength() const;
double getSquareArea() const;
};
Square.ccp
#include "Square.h"
void Square::setLowerLeft(double x, double y)
{
lowerLeft.setX(x);
lowerLeft.setY(y);
}
void Square::setSideLength(double SL)
{ sideLength = SL; }
double Square::getSideLength() const
{ return sideLength; }
// Calculate the area of square
double Square::getSquareArea() const
{ return sideLength * sideLength; }
Cube.h
#include "Square.h"
class Cube : public Square
{
protected:
double height;
double volume;
public:
Cube(double height, double volume) : Square(sideLength, Xint, Yint)
{
height = 0.0;
volume = 0.0;
}
double getSurfaceArea() const;
double getVolume() const;
};
Cube.ccp
#include "Cube.h"
// Redefine GetSquareArea to calculate the cube's surface area
double Cube::getSurfaceArea() const
{ return Square::getSquareArea() * 6; }
// Calculate the volume
double Cube::getVolume() const
{ return getSquareArea() * height; }
答案 0 :(得分:0)
"任何人都可以指出我可能遇到的任何逻辑错误,或者我是否有错误的访问规范和关系?"
嗯,从我们众所周知的三维几何中,立方体由6个正方形组成。
那么您认为从Cube
继承Square
类实际上应该如何运作呢?
您可以通过固定Cube
(例如上,左,前角)和边长的固定大小轻松定义Point
类。
如果你真的想要和需要,你可以为你的Cube
类添加一个便利函数,它返回它在3维空间中包含的所有6 Squares
:
class Cube {
public:
Cube(const Point& upperLeftFrontCorner, double edgeLength);
std::array<Square,6> getSides() const;
};