Создание массива классов - C#
Формулировка задачи:
Добрый день. Начал изучать С#. Возникли некоторые сложности.
Задача:
"Разработать абстрактный класс «Геометрическая Фигура» с методами
«Площадь Фигуры» и «Периметр Фигуры». Разработать классы-наследники: Треугольник,
Квадрат, Ромб, Прямоугольник, Параллелограмм, Трапеция, Круг, Эллипс. Реализовать
конструкторы, которые однозначно определяют объекты данных классов.
Реализовать класс «Составная Фигура», который может состоять из любого
количества «Геометрических Фигур». Для данного класса определить метод нахождения
площади фигуры. Создать диаграмму взаимоотношений классов"
С первой частью худо-бедно справился:
Базовый класс
Несколько из всех наследников...
И все остальные в том же духе
После идет реализация в main'е
Вот...
А дальше нужно реализовать класс Составная фигура и посчитать сумму заданных площадей.
Буду признателен за помощь, потому что как-то совсем застопорился.
Сразу хочу сказать, что коллекции еще не изучали
В мэйне
Но программа в этом месте падает
Пожалуйста, помогите разобраться
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"); }
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));
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д