VOOZH about

URL: https://en.wikiversity.org/wiki/Object-Oriented_Programming/Polymorphism/JavaScript

⇱ Object-Oriented Programming/Polymorphism/JavaScript - Wikiversity


Jump to content
From Wikiversity

index.js

[edit | edit source]
// This program demonstrates use of the Polygon, Triangle, Rectangle, and Square classes.

constPolygon=require("./polygon");
constSquare=require("./square");
constRectangle=require("./rectangle");
constTriangle=require("./triangle");

main();

functionmain(){
lettriangle=newPolygon([3,4,5]);
console.log("triangle sides:",triangle.sides);
console.log("triangle perimeter:",triangle.perimeter);

letrectangle=newPolygon([4,2,4,2]);
console.log("rectangle sides:",rectangle.sides);
console.log("rectangle perimeter:",rectangle.perimeter);

letsquare=newPolygon([2,2,2,2]);
console.log("square sides:",square.sides);
console.log("square perimeter:",square.perimeter);

triangle=newTriangle(3,4,5);
console.log("triangle sides:",triangle.sides);
console.log("triangle perimeter:",triangle.perimeter);
console.log("triangle area:",triangle.area);

rectangle=newRectangle(4,2);
console.log("rectangle sides:",rectangle.sides);
console.log("rectangle perimeter:",rectangle.perimeter);
console.log("rectangle area:",rectangle.area);

square=newSquare(2);
console.log("square sides:",square.sides);
console.log("square perimeter:",square.perimeter);
console.log("square area:",square.area);
}

polygon.js

[edit | edit source]
// Supports polygon calculations for perimeter.

classPolygon{
_sides=undefined;

// Creates a polygon object.
constructor(sides){
this.sides=sides;
}

getperimeter(){
returnthis.sides.reduce((a,b)=>a+b,0);
}
}

module.exports=Polygon;

rectangle.js

[edit | edit source]
// Supports rectangle calculations for perimeter and area.

constPolygon=require("./polygon");

classRectangleextendsPolygon{
// Creates a rectangle object.
constructor(length,width){
super(length,width,length,width);
}

// Gets area of the rectangle.
getarea(){
letlength=this.sides[0];
letwidth=this.sides[1];
if(length==width){
width=this.sides[2];
}
letarea=length*width;
returnarea;
}
}

module.exports=Rectangle;

square.js

[edit | edit source]
// Supports square calculations for perimeter and area.

constPolygon=require("./polygon");

classSquareextendsPolygon{
// Creates a square object.
constructor(side){
super(side,side,side,side);
}

// Gets area of the square.
getarea(){
letside=this.sides[0];
letarea=side*side
returnarea;
}
}

module.exports=Square;

triangle.js

[edit | edit source]
// Supports triangle calculations for perimeter and area.

constPolygon=require("./polygon");

classTriangleextendsPolygon{
// Creates a triangle object.
constructor(side1,side2,side3){
super(side1,side2,side3);
}

// Gets area of the triangle.
// References: 
// https://www.mathsisfun.com/geometry/herons-formula.html 
getarea(){
lets=this.perimeter/2;
leta=this.sides[0];
letb=this.sides[1];
letc=this.sides[2];
letarea=Math.sqrt(s*(s-a)*(s-b)*(s-c));
returnarea;
}
}

module.exports=Triangle;

Try It

[edit | edit source]

Copy and paste the code above into one of the following free online development environments or use your own JavaScript compiler / interpreter / IDE.

See Also

[edit | edit source]