Advertisement
avr39-ripe

shapeClass

Apr 9th, 2020
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class Shape
  2. {
  3.     constructor()
  4.     {
  5.         this._sides = [];
  6.     };
  7.     _setSide(sideId, sideLength)
  8.     {
  9.         this._sides[sideId] = sideLength;
  10.     };
  11.     _getSide(sideId)
  12.     {
  13.         return this._sides[sideId];
  14.     };
  15.     sidesInfo()
  16.     {
  17.         this._sides.forEach((it,id)=>{console.log(`Side #${id} is ${it} long`);});
  18.     };
  19.     getPerimeter()
  20.     {
  21.         return this._sides.reduce((prev,cur)=>{return prev+cur;},0)
  22.     };
  23.     getArea()
  24.     {
  25.         return 0;
  26.     };
  27.     get name()
  28.     {
  29.         return this.constructor.name;
  30.     };
  31. }
  32.  
  33. class Rectangle extends Shape
  34. {
  35.     constructor(sideA, sideB)
  36.     {
  37.         super();
  38.         this._setSide(0,sideA);
  39.         this._setSide(1,sideB);
  40.     };
  41.     getPerimeter()
  42.     {
  43.        return super.getPerimeter() * 2;
  44.     };
  45.     getArea()
  46.     {
  47.         return this._getSide(0) * this._getSide(1);
  48.     }
  49. }
  50.  
  51. class Square extends Rectangle
  52. {
  53.     constructor(sideA)
  54.     {
  55.         super(sideA,sideA);
  56.     };
  57. }
  58.  
  59. class Triangle extends Shape
  60. {
  61.     constructor(sideA, sideB, sideC)
  62.     {
  63.         super();
  64.         this._setSide(0,sideA);
  65.         this._setSide(1,sideB);
  66.         this._setSide(2,sideC);
  67.     };
  68.     getArea()
  69.     {
  70.         let p = this.getPerimeter() / 2;
  71.         return Math.sqrt(p*(p-this._getSide(0))*(p-this._getSide(1))*(p-this._getSide(2)));
  72.     }
  73. }
  74.  
  75. let shapes = [new Rectangle(4,5), new Square(6), new Triangle(3,4,5)];
  76. shapes.forEach((it,id)=>{console.log(`${id}.${it.name} Perimeter: ${it.getPerimeter()} Area: ${it.getArea()}`); it.sidesInfo();});
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement