Advertisement
avr39-ripe

figuresClasses

Apr 10th, 2020
299
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.  
  8.     _setSide(sideId, sideLength)
  9.     {
  10.         this._sides[sideId] = sideLength;
  11.     };
  12.  
  13.     _getSide(sideId)
  14.     {
  15.         return this._sides[sideId];
  16.     };
  17.  
  18.     sidesInfo()
  19.     {
  20.         this._sides.forEach((it, id)=>{ console.log(`Side #${id} is ${it} long`); });
  21.     };
  22.  
  23.     getPerimeter()
  24.     {
  25.         return this._sides.reduce((prev,cur)=>{return prev+cur;},0);
  26.     };
  27.  
  28.     getArea()
  29.     {
  30.         return 0;
  31.     };
  32.  
  33.     get name()
  34.     {
  35.         return this.constructor.name;
  36.     }
  37. }
  38.  
  39. class Rectangle extends Shape
  40. {
  41.     constructor(sideA, sideB)
  42.     {
  43.         super();
  44.         this._setSide(0,sideA);
  45.         this._setSide(1,sideB);
  46.     };
  47.  
  48.     getPerimeter()
  49.     {
  50.         return super.getPerimeter() * 2;
  51.     };
  52.  
  53.     getArea()
  54.     {
  55.         return this._getSide(0) * this._getSide(1);
  56.     };
  57. }
  58.  
  59. class Square extends Rectangle
  60. {
  61.     constructor(sideA)
  62.     {
  63.         super(sideA,sideA);
  64.     };
  65. };
  66.  
  67. class Triangle extends Shape
  68. {
  69.     constructor(sideA, sideB, sideC)
  70.     {
  71.         super();
  72.         this._setSide(0,sideA);
  73.         this._setSide(1,sideB);
  74.         this._setSide(2,sideC);
  75.     };
  76.  
  77.     getArea()
  78.     {
  79.         let p = this.getPerimeter() / 2;
  80.         return Math.sqrt(p*(p-this._getSide(0))*(p-this._getSide(1))*(p-this._getSide(2)));
  81.     };
  82. }
  83.  
  84. let shapes =[new Rectangle(4,5), new Square(6), new Triangle(3,4,5)];
  85. 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