Создание массива классов - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день. Начал изучать С#. Возникли некоторые сложности. Задача: "Разработать абстрактный класс «Геометрическая Фигура» с методами «Площадь Фигуры» и «Периметр Фигуры». Разработать классы-наследники: Треугольник, Квадрат, Ромб, Прямоугольник, Параллелограмм, Трапеция, Круг, Эллипс. Реализовать конструкторы, которые однозначно определяют объекты данных классов. Реализовать класс «Составная Фигура», который может состоять из любого количества «Геометрических Фигур». Для данного класса определить метод нахождения площади фигуры. Создать диаграмму взаимоотношений классов" С первой частью худо-бедно справился: Базовый класс
namespace Home_4._1
{
    public abstract class GeometricFigure
    {
 
        public abstract double SquareFigure();
        public abstract void PerimeterFifure();
    }
}
Несколько из всех наследников...
class Triangle: GeometricFigure
    {
        //double _height;
        //double _baseTriangle;
        double _sideA;
        double _sideB;
        double _sideC;
 
        public Triangle(double sideA, double sideB, double sideC)
        {
            _sideA = sideA;
            _sideB = sideB;
            _sideC = sideC;
        }
        public override void SquareFigure()
        {
            double p = (_sideA + _sideB + _sideC) / 2;
            Console.WriteLine($"Square of Triangle: {Math.Sqrt(p * (p - _sideA) * (p - _sideB) * (p - _sideC))}");
 
        }
        public override void PerimeterFifure()
        {
            Console.WriteLine($"Perimeter of Triangle: {_sideA + _sideB + _sideC}\n");
 
        }
class Rectangle: GeometricFigure
    {
        double _sideA;
        double _sideB;
 
        public Rectangle (double sideA, double sideB) 
        {
            _sideA = sideA;
            _sideB = sideB;
        }
        public override void SquareFigure()
        {
            Console.WriteLine($"Square of Rectangle: {_sideA * _sideB}");
 
        }
        public override void PerimeterFifure()
        {
            Console.WriteLine($"Perimeter of Rectangle: {(_sideA + _sideB) * 2}\n");
        }
И все остальные в том же духе После идет реализация в main'е
 GeometricFigure[] figures = { new Triangle(4, 6, 5.5),
                new Square(6), new Rhombus(6, 4.6), new Rectangle(12, 10),
                new Parallelogram(8, 7, 50.0), new Trapeze(5, 8, 9, 7, 6),
                new Circle(12.3), new Ellipse(12.5, 9.2)
                };
 
            foreach (GeometricFigure item in figures)
            {
                item.SquareFigure();
                item.PerimeterFifure();
 
            }
Вот... А дальше нужно реализовать класс Составная фигура и посчитать сумму заданных площадей. Буду признателен за помощь, потому что как-то совсем застопорился. Сразу хочу сказать, что коллекции еще не изучали
Была попытка
public class CompoundShapes
    {
        static double generalSquare;
        
        GeometricFigure[] geometricFigureArray;

        public CompoundShapes()
        {
            geometricFigureArray = new GeometricFigure[0];
        }
        public double AddGeometricFigure(GeometricFigure[] geometricFigureArray)
        {
            Array.Resize(ref geometricFigureArray, geometricFigureArray.Length + 1);
 
            for (int i = 0; i < geometricFigureArray.Length; i++)
            {
                generalSquare += geometricFigureArray[i].SquareFigure();
            }
 
            return generalSquare;
        }
}
В мэйне
 CompoundShapes f = new CompoundShapes();
  Console.WriteLine(f.AddGeometricFigure(figures));
Но программа в этом месте падает
generalSquare += geometricFigureArray[i].SquareFigure();
Пожалуйста, помогите разобраться

Решение задачи: «Создание массива классов»

textual
Листинг программы
 Triangle figure1 = new Triangle(4, 6, 5.5);
            Square figure2 = new Square(6);
            Rhombus figure3 = new Rhombus(6, 4.6);
CompoundShapes f = new CompoundShapes();
            Console.WriteLine(f.AddGeometricFigure(figure1));
            Console.WriteLine(f.AddGeometricFigure(figure2));
            Console.WriteLine(f.AddGeometricFigure(figure3));

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5