Я работаю над заданием с очень конкретными инструкциями, которые, если это будет интересно, я опубликую под кодом, который я создал.Но, короче говоря, я должен создать абстрактный класс BasicShape
, а также подклассы Circle
и Rectangle
.У каждого подкласса есть метод расчета площади фигуры.площадь рассчитывается с использованием переменных-членов.Однако в моем коде ниже этим переменным-членам никогда не присваивается значение.Я не совсем понимаю, как их назначить, потому что методы Circle
и Rectangle
также требуют, чтобы им передавались аргументы.Эти аргументы x
, y
, r
для Circle
и w
, l
для Rectangle
указываются в основной программе при создании нового экземпляра фигуры, но эти значения также кажутсяничего не делать, поскольку вывод всегда равен 0. Какое отношение имеют аргументы, передаваемые в методы, к переменным-членам?Как получается, что переменным-членам должны быть присвоены значения, когда значения задаются через аргументы, заданные при вызове экземпляра Circle
или Rectangle
?
Вот мой код:
abstract class BasicShape
{
protected double area;
public double getArea()
{
Console.WriteLine("Area: {0}", area);
return area;
}
public virtual void calcArea()
{
}
}
class Circle : BasicShape
{
private int centerX;
private int centerY;
private double radius;
public Circle(int x, int y, double r)
{
calcArea();
}
public int genCenterX()
{
return centerX;
}
public int genCenterY()
{
return centerY;
}
public override void calcArea()
{
area = 3.14159 * radius * radius;
Console.WriteLine("The area of the circle is: {0}", area);
}
}
class Rectangle : BasicShape
{
private int width;
private int length;
public Rectangle(int w, int l)
{
calcArea();
}
public int getWidth()
{
return width;
}
public int getLength()
{
return length;
}
public override void calcArea()
{
area = length * width;
Console.WriteLine("The area of the rectangle is: {0}", area);
}
}
public class TestShapes
{
static void Main(string[] args)
{
Circle circle1 = new Circle(2, 2, 5);
Rectangle rectangle = new Rectangle(6, 7);
Console.ReadLine();
}
}
Вот инструкции для назначения:
Определите чистый абстрактный базовый класс с именем BasicShape.Класс BasicShape должен иметь следующие члены:
Переменная закрытого члена: area, двойник, используемый для хранения области фигуры.
Методы открытого члена: getArea (): Этот метод должен возвращать значениев области переменных члена.calcArea (): этот метод должен быть чисто виртуальным.
Далее определите класс с именем Circle.Он должен быть производным от класса BasicShape.Он должен иметь следующие члены:
Переменная закрытого члена: centerX, целое число, используемое для хранения координаты x центра круга.centerY, целое число, используемое для хранения координаты y центра круга.radius, double, используемый для хранения радиуса круга.
Методы открытого члена:
Circle (int x, int y, int r): принимает значения для centerX, centerY и radius.Должен вызвать переопределенный метод calcArea, описанный ниже.
genCenterX: вернул значение в centerX
genCenterY: вернул значение в centerY
calcArea (): вычисляет площадь областиокружность (область = 3.14159 * радиус * радиус) и сохранить результат в унаследованной области члена.
Затем определите класс с именем Rectangle.Он должен быть производным от класса BasicShape.Он должен иметь следующие члены: Переменная закрытого члена:
width, целое число, используемое для хранения ширины длины прямоугольника, целое число, используемое для хранения длины прямоугольника
Public Member Methods:
Прямоугольник (int w, int l): принимает значения ширины и длины.Должен вызывать переопределенный метод calcArea, описанный ниже.
getWidth (): возвращает значение по ширине.getLength (): возвращает значение длины. calcArea (): вычисляет площадь круга (area = length * width) и сохраняет результат в унаследованной области члена.
После создания этих классов создайтеосновная программа, которая определила объект Circle и объект Rectangle.
Продемонстрируйте, что каждый объект правильно рассчитывает и сообщает свою площадь.