помогите пожалуйста с заданием
Создать абстрактный класс Figure. На его основе реализовать классы Rectangle (прямоугольник), Circle (круг) и Trapezium (трапеция) с возможностью вычисления площади, центра тяжести и периметра.
Создать класс Picture, содержащий параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов.
Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp7
{
class Program
{
static void Main(string[] args)
{
Figure[] Фигуры = new Figure[6];
Фигуры[0] = new Circle(3.0);
Фигуры[1] = new Rectangle(4.0, 5.0);
Фигуры[2] = new Trapezium(3.0, 4.0, 5.0,6.0,7.0);
Фигуры[3] = new Rectangle(3.0,5.0);
Фигуры[4] = new Rectangle(3.0, 4.0);
Фигуры[5] = new Circle(3.0);
for (int i = 0; i < Фигуры.Length; i++)
{
Console.WriteLine("Площадь равна: " + Фигуры[i].Pl());
Console.WriteLine("Периметр равен: " + Фигуры[i].Per());
Console.WriteLine();
}
Console.Read();
}
}
public abstract class Figure
{
protected Exception OutOfMaxBorder = new Exception("Исключение, превышена максимальная граница");
protected Exception NonBellowZero = new Exception("Исключение, введенное значение не может быть отрицательным!");
double a, b, c, d, r,h;
public double A
{
get { return a; }
set { if (value > 0) a = value; }
}
public double B
{
get { return b; }
set { if (value > 0) b = value; }
}
public double C
{
get { return c; }
set { if (value > 0) C = value; }
}
public double D
{
get { return d; }
set { if (value > 0) d = value; }
}
public double R
{
get { return r; }
set { if (value > 0) r = value; }
}
public double H
{
get { return h; }
set { if (value > 0) h = value; }
}
public Figure(double r) //Конструктор для круга, квадрата и равностороннего треугольника
{
this.r = r;
}
public Figure(double a, double b) //Конструктор для круга, квадрата и равностороннего треугольника
{
this.a = a;
this.b = b;
}
public Figure(double a, double b, double c, double d, double h) //Конструктор для круга, квадрата и равностороннего треугольника
{
this.a = a;
this.b = b;
this.c = c;
this.d = d;
this.h = h;
}
public abstract double Pl();
public abstract double CT();
public abstract double Per();
}
class Rectangle : Figure // Треугольник
{
public Rectangle(double a, double b) : base(a, b)
{
}// Конструктор по умолчанию
public override double Pl()
{
return A * B;
}
public override double CT()
{
return B / 2.0;
}
public override double Per()
{
return 2 * (A + B);
}
}
class Circle : Figure // Треугольник
{
public Circle(double r) : base(r)
{ }// Конструктор по умолчанию
public override double Pl()
{
return Math.PI*R*R;
}
public override double CT()
{
return R;
}
public override double Per()
{
return 2 * Math.PI*R;
}
}
class Trapezium : Figure // Треугольник
{
public Trapezium(double a, double b, double c, double d, double h) : base(a, b, c, d, h)
{ }// Конструктор по умолчанию
public override double Pl()
{
return ((A + B)/2.0)*H;
}
public override double CT()
{
return (H/3.0)*(2*B+A)/(A+B);
}
public override double Per()
{
return (A+B+C+D);
}
}
}