@ggtt21

Как использовать метод из класса в функции?

Создайте родительский класс 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>
  • Вопрос задан
  • 185 просмотров
Пригласить эксперта
Ответы на вопрос 1
@alekcena
Нелинейный наставник
console.log(GeometricFigure.name + ": " + figures[i] + getArea());

getArea - это метод. Он вызывается у объекта.
Чтобы получить поля у класса из любого места, его нужно сделать статическим.
console.log(GeometricFigure.name + ": " + figures[i] + figures[i].getArea());
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы