Podążam za samouczkiem opartym na solidnych zasadach, ale nie rozumiem, jak faktycznie wdrażać tę metodę, oto samouczek Link

W pełni rozumiem koncepcję kodu, ale nie mogę dowiedzieć się, jak wezwać metodę kalkulatora obszaru.area z mojego głównego

Jak nazwać metodą, aby obliczyć obszar prostokąta lub obszaru koła? Na podstawie kodu w samouczku

Area(Circle with 10 radius);
Area(Rectangle with 10 width and 5 height);

Kształt

public abstract class Shape
{
    public abstract double Area();
}

Circle.cs.

    public class Circle : Shape
    {
        public double Radius { get; set; }
        public override double Area()
        {
            return Radius * Radius * Math.PI;
        }
    }

Prostokąt.cs.

    public class Rectangle : Shape
    {
        public double Width { get; set; }
        public double Height { get; set; }
        public override double Area()
        {
            return Width * Height;
        }
    }

ALECALCulator.cs.

public static double Area(Shape[] shapes)
        {
            double area = 0;
            foreach (var shape in shapes)
            {
                area += shape.Area();
            }

            return area;
        }

Dziękuję Ci

0
ScreamoIsDead 13 kwiecień 2021, 16:46

2 odpowiedzi

Najlepsza odpowiedź
var circle = new Circle { Radius = 10 };                  // Create a circle
var rectangle = new Rectangle { Width = 10, Height = 5 }; // Create a rectangle

var shapes = new Shape[] { circle, rectangle };           // Create array of shapes

double area = AreaCalculator.Area(shapes);                // Call Area method with array

Jeśli potrzebujesz tylko obszaru pojedynczego kształtu, AreaCalculator jest niepotrzebne; Po prostu wywołaj metodę Area na indywidualnym kształcie:

double circleArea = circle.Area();
double rectangleArea = rectangle.Area();
2
Johnathan Barclay 13 kwiecień 2021, 14:02

Musisz instancji instancji każdego kształtu i przekazać te jako tablicę do metody AreaCalculator.Area(). Kluczową atak jest metodą Area weźmie dowolne obiekty, które rozciągają Shape.

var circle = new Circle();
circle.Radius = 5;

var rectangle = new Rectangle();
rectangle.Width = 10;
rectangle.Height = 3;

var area = AreaCalculator.Area(new Shape[] {circle, rectangle});

Lub bardziej zwięźle.

AreaCalculator.Area(new Shape[]{
    new Circle() {Radius = 5},
    new Rectangle() {Width = 10, Height = 3}
});
1
Alex 13 kwiecień 2021, 14:03