public abstract class Shape
public Shape(string inName){
public abstract double Area { get; }
public abstract double Perimeter { get; }
public override string ToString() => GetType().Name;
public static double GetArea(Shape shape) => shape.Area;
public static double GetPerimeter(Shape shape) => shape.Perimeter;
public class Square : Shape
public Square(): base("square"){
public Square(double length): base("square")
throw new System.ArgumentException("Parameter cannot be less than zero");
public double Side { get; }
public override double Area => Math.Pow(Side, 2);
public override double Perimeter => Side * 4;
public double Diagonal => Math.Round(Math.Sqrt(2) * Side, 2);
public static void Main()
Square result = new Square(10);
Console.WriteLine(result.Perimeter);
Console.WriteLine(Square.GetPerimeter(result));