Advertisement
avr39ripe

jsShapeClass

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