Создайте родительский класс GeometricFigure, который имеет пустой метод определения площади getArea() и метод toString() для вывода названия класса.
Создайте 3 дочерних класса Triangle, Square и Circle, которые подражают классу GeometricFigure. Каждый из дочерних классов имеет свою реализацию метода getArea() для определения площади фигуры. В конструкторах дочерних классов предусмотреть свойства необходимые для определения площади фигуры, например для окружности – радиус r.
Создайте внешнюю функцию handleFigures(figures), которая будет принимать массив объектов дочерних классов figures, проверять объект принадлежащего родительскому классу с учетом подражания, выводить название созданного объекта соответствующей фигуры, рассчитанную площадь фигуры и суммарную площадь всех фигур. Для реализации функции можно использовать метод reduce().
Это обязательное начало:
class GeometricFigure {
getArea() {
return 0;
}
toString() {
return Object.getPrototypeOf(this).constructor.name;
}
}
Your code . . .
Пример результата:
const figures = [new Triangle(4, 5), new Square(7), new Circle(5)];
console.log(handleFigures(figures));
Geometric figure: Triangle - area: 10
Geometric figure: Square - area: 49
Geometric figure: Circle - area: 78.53981633974483
137.53981633974485 // total area
Мой код, можете доработать его:
<code>
class GeometricFigure {
getArea() {
return 0;
}
toString() {
return Object.getPrototypeOf(this).constructor.name;
}
}
class Square extends GeometricFigure {
constructor(side) {
super();
this.side = side;
}
getArea() {
return this.side * 2;
}
}
class Circle extends GeometricFigure {
constructor(radius) {
super();
this.radius = radius;
}
getArea() {
return 3.14 * this.radius;
}
}
class Triangle extends GeometricFigure {
constructor(legA, legB) {
super();
this.legA = legA;
this.legB = legB;
}
getArea() {
return (this.legA * this.legB) / 2;
}
}
function handleFigures(figures) {
for (var i = 0; i < figures.length; i++) {
console.log(GeometricFigure.name + ": " + figures[i] + getArea());
}
}
</code>