Создание программы для расчета площади - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть четыре ошибки, с которыми я борюсь.

В блоке WriteLine, предназначенном для распечатки областей фигур, в обоих местах, где появляется переменная 'area', выдается сообщение об ошибке: «Имя« area »не существует в текущем контексте». Вторая проблема заключается в классе Rectangle: GeometricFigure для 'ComputeArea', ошибка гласит: «Rectangle.ComputeArea ()» скрывает унаследованный член «GeometricFigure.ComputeArea ()». Используйте ключевое слово new, если скрытие было запланировано ». Последняя ошибка относится к классу Triangle: GeometricFigure и касается 'Triangle' в выражении 'public Triangle (int x, int y)'. Сообщение об ошибке гласит: «Rectangle.ComputeArea ()» скрывает унаследованный член «GeometricFigure.ComputeArea ()». Используйте новое ключевое слово, если было скрыто.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.Console;
namespace ShapesDemo
{
    class Program
{
    static void Main(string[] args)
    {
        Rectangle rec = new Rectangle(8, 10);
        Square squ = new Square(11, 12);
        Triangle tri = new Triangle(10, 20);
        Console.WriteLine("Computed area is {0}" + "\n\n" + "Computed Triangle is: {1}" + "\n",
            squ.ComputeArea(area), tri.ComputeArea(area));
    }
}
abstract class GeometricFigure
{
    public GeometricFigure(decimal sideA, decimal sideB)
    {
        this.height = sideA;
        this.width = sideB;
    }
    protected decimal area;
    protected decimal width;
    protected decimal height;
    public decimal Height
    {
        get
        {
            return height;
        }
        set
        {
            height = value;
            ComputeArea();
        } 
    }
    public decimal Width
    {
        get
        {
            return width;
        }
        set { width = value; }
    }
    public decimal Area
    {
        get { return area; }
        set { area = value; }
    }
    public void ComputeArea()
    {
    }
}
class Rectangle : GeometricFigure
{
    public Rectangle(decimal sideA, decimal sideB) : base(sideA, sideB)
    {

    }
    public void ComputeArea()
    {
        area = width * height;
        WriteLine("The Area is" + width.ToString(), height.ToString());
    }
    static void Display(Rectangle rec)
    {

    }
}
class Square : GeometricFigure
{
    static void Display(Square squ)
    {
    }
    public Square(decimal sideA, decimal sideB) : base(sideA, sideA)
    {
    }
}
class Triangle : GeometricFigure
{
    static void Display(Triangle tri)
    {
    }
    public Triangle(int x, int y)
    {
        this.Width = x;
        this.Height = y;
    }
}

}

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Область имени не существует, поэтому вы не можете ее использовать.Метод Main () не имеет доступа к области.Я думаю, что вы пытаетесь сделать:

class Program
    {
        static void Main(string[] args)
        {
            Rectangle rec = new Rectangle(8, 10);
            Square squ = new Square(11, 12);
            squ.ComputeArea();
            Triangle tri = new Triangle(10, 20);
            tri.ComputeArea();
            Console.WriteLine("Computed area is {0}" + "\n\n" + "Computed Triangle is: {1}" + "\n",
            squ.Area, tri.Area);
            Console.ReadLine();
        }
    }

Но у вас есть и большая проблема с дизайном.Использование базового класса GeometricFigure доставит вам много проблем.Я хотел бы получить его полностью или использовать вместо этого интерфейс.Также ваш Треугольник должен быть:

public Triangle(decimal sideA, decimal sideB) : base(sideA, sideA)
        {
            this.Width = sideA;
            this.Height = sideB;
        }
0 голосов
/ 13 ноября 2018

Документы Microsoft имеют хороший пример того, что вы пытаетесь выполнить здесь, обычно вы хотите:

  1. Аннотация, что является общим (в данном случае это вычисление площади)
  2. Укажите, что не характерно для ваших бетонов

https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/how-to-define-abstract-properties

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...