Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Study</title>
- </head>
- <body>
- <script>
- 'use strict'
- 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, curr) => { return prev + curr }, 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()}`); it.sidesInfo(); });
- }
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement