public abstract class Shape {
public abstract int getArea ();
public abstract double getPerimeter ();
protected Shape(int sides) {
public class Rectangle: Shape {
public Rectangle(int w, int h) {
public override int getArea (){
public override double getPerimeter (){
return (width * 2 + height * 2);
public class IsoscelesTriangle: Shape {
public IsoscelesTriangle(int w, int h) {
public override int getArea (){
return ((width * height) / 2);
public override double getPerimeter (){
return ( width + ( Math.Sqrt(Math.Pow(width / 2, 2) + Math.Pow(height, 2) ) * 2 ) );
public static void Main()
Shape rectangle = new Rectangle(5, 8);
Console.WriteLine("Rectangle area: {0}", rectangle.getArea());
Console.WriteLine("Rectangle perimeter: {0}", rectangle.getPerimeter());
Shape isocelestriangle = new IsoscelesTriangle(5, 8);
Console.WriteLine("Triangle area: {0}", isocelestriangle.getArea());
Console.WriteLine("Triangle perimeter {0}", isocelestriangle.getPerimeter());