Создать абстрактный класс 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].CT()); Console.WriteLine("Периметр равен: " + Фигуры[i].Per()); Console.WriteLine(); } Console.Read(); } } // абстрактный класс фигуры abstract class Figure { // исключения для классов наследников protected Exception OutOfMaxBorder = new Exception("Исключение, превышена максимальная граница"); protected Exception NonBellowZero = new Exception("Исключение, введенное значение не может быть отрицательным!"); // абстрактный метод для получения площади public abstract double Pl(); // абстрактный метод для получения центра тяжести public abstract double CT(); // абстрактный метод для получения периметра public abstract double Per(); } class Rectangle : Figure // производный класс прямоугольника { double a,b; 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 Rectangle(double a, double b) { this.A=a; this.B=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 //производный класс круга { double r; public double R { get { return r; } set { if (value > 0) r = value; } } public Circle(double r) { this.R=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 // производный класс трапеции { double a,b,c,d,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) d = value; } } public double D { get { return d; } set { if (value > 0) d = value; } } public double H { get { return h; } set { if (value > 0) h = value; } } public Trapezium(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 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); } } }
|
|