我目前正在尝试解决如下问题:
实现一个对象层次结构,其中至少包含矩形、三角形和圆形的类。实现一个函数float SumArea(),它将迭代这些形状的n个大小的容器并求和它们的面积。也实现函数void AddTriangle(浮动b,浮动h), void AddSquare(浮动大小),void AddCircle(浮动半径)。
- 注1:您只需要为每个类编写一个函数(加上构造函数)。
- 注2:无论形状是否重叠,都需要总面积。
- 注3:尽可能优化迭代代码。
到目前为止,我已经设法为形状编写类以及每个计算其面积的方法(这个问题有点令人困惑,因为它说矩形,但在答案类中有一个名为addsquare的函数)。我也添加了面积在一起的总和面积,但我有点失落,我怎么能计算面积,即使形状重叠在容器?
到目前为止我写的是:
class Rectangle {
constructor(size) {
this.size = size;
}
area() {
return this.size * this.size;
}
}
class Triangle {
constructor(base, height) {
this.base = base;
this.height = height;
}
area() {
return this.base * this.height / 2;
}
}
class Circle {
constructor(radius) {
this.radius = radius;
}
area() {
return Math.PI * this.radius ** 2;
}
}
class Answer {
addTriangle(b, h) {
const triangle = new Triangle(b, h);
return triangle.area();
}
addSquare(size) {
const rectangle = new Rectangle(size);
return rectangle.area();
}
addCircle(radius) {
const circle = new Circle(radius);
return circle.area();
}
sumArea() {
return Answer.addTriangle + Answer.addSquare + Answer.addCircle;
}
}
任何帮助都非常感谢。
您的实现没有与容器一起工作,因为赋值告诉您要这样做。它要求您存储一个形状列表,当您调用sumArea
方法
时,您将遍历这些形状。他是一个片段,帮助你在正确的方向:
class Rectangle {
constructor(size) { this.size = size; }
area() { return this.size * this.size; }
}
class Triangle {
constructor(base, height) { this.base = base; this.height = height; }
area() { return this.base * this.height / 2; }
}
class Circle {
constructor(radius) { this.radius = radius; }
area() { return Math.PI * this.radius ** 2; }
}
class Answer {
container = [];
addTriangle(b, h) {
this.container.push(new Triangle(b, h));
}
// Implement `addSquare` and `addCircle`
sumArea() {
// Iterate over `this.container` here, to add together all shapes'
// areas in the container. Look into using `reduce` for that.
}
}
const answer = new Answer();
answer.addTriangle(3, 5);
answer.addTriangle(4, 1);
// answer.addSquare(2, 4);
// answer.addCircle(6);
console.log(answer.sumArea());