Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Shape
- {
- constructor()
- {
- this._sides = [];
- };
- _setSide(sideId, sideLength)
- {
- this._sides[sideId] = sideLength;
- };
- _getSide(sideId)
- {
- return this._sides[sideId];
- };
- sidesInfo()
- {
- this._sides.forEach((it, id)=>{ console.log(`Side #${id} is ${it} long`); });
- };
- getPerimeter()
- {
- return this._sides.reduce((prev,cur)=>{return prev+cur;},0);
- };
- getArea()
- {
- return 0;
- };
- get name()
- {
- return this.constructor.name;
- }
- }
- class Rectangle extends Shape
- {
- constructor(sideA, sideB)
- {
- super();
- this._setSide(0,sideA);
- this._setSide(1,sideB);
- };
- getPerimeter()
- {
- return super.getPerimeter() * 2;
- };
- getArea()
- {
- return this._getSide(0) * this._getSide(1);
- };
- }
- class Square extends Rectangle
- {
- constructor(sideA)
- {
- super(sideA,sideA);
- };
- };
- class Triangle extends Shape
- {
- constructor(sideA, sideB, sideC)
- {
- super();
- this._setSide(0,sideA);
- this._setSide(1,sideB);
- this._setSide(2,sideC);
- };
- getArea()
- {
- let p = this.getPerimeter() / 2;
- return Math.sqrt(p*(p-this._getSide(0))*(p-this._getSide(1))*(p-this._getSide(2)));
- };
- }
- let shapes =[new Rectangle(4,5), new Square(6), new Triangle(3,4,5)];
- shapes.forEach((it,id)=>{console.log(`${id}. ${it.name} Perimeter: ${it.getPerimeter()} Area: ${it.getArea()}`);});
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement