Пример: По време на теоретичния изпит се предоставя непълен/неработещ/некоректен програмен фрагмент. Предоставеният фрагмент да се приведе в работещ вид.
Условие: Създайте
абстрактен клас ColoredFigure, който притежава:
• Поле color за отбелязване на цвета (като низ)
• Поле size за отбелязване на размер на фигурата
•
Конструктор, който приема за параметри цвят и размер
• Метод Show(), който отпечатва цвета и размера на обекта.
• Абстрактен метод GetName(),
който връща името на фигурата • Абстрактен метод GetArea(), който връща лицето на фигурата
Създайте клас Triangle, който наследява ColoredFigure, като този клас има:
• Конструктор, който извиква конструктора на суперкласа
• Дефиниция за абстрактния метод GetName(), като този метод връща низа "Triangle".
• Дефиниция за абстрактния метод GetArea(), като този метод връща лицето на триъгълника, като триъгълникът се приема за равностранен, със страна size. Използвайте формулата:
Създайте
клас Square, който наследява ColoredFigure, като този клас има:
• Конструктор, който извиква конструктора на суперкласа
• Дефиниция за абстрактния метод GetName(), като този метод връща низа "Square".
• Дефиниция за абстрактния метод GetArea(), като този метод връща лицето на квадрата със страна size.
Създайте
клас Circle, който наследява ColoredFigure, като този клас има:
• Конструктор, който извиква конструктора на суперкласа
• Дефиниция за абстрактния метод GetName(), като този метод връща низа "Circle".
• Дефиниция за абстрактния метод GetArea(), като този
метод връща лицето на кръга, с радиус size.
Вход:
На първия ред на входа има единствено цяло число N – брой заявки. От следващите N реда се подава заявка в един от следните формати:
• Triangle <цвят> <размер>
• Circle <цвят> <размер>
• Square <цвят> <размер>
Изход:
За всяка заявка трябва да създаде обект от съответния клас, след което трябва да изпечатате 4 реда:
<име на фигурата>:
Color: <цвят>
Size: <размер>
Area: <лице>
Отпечатайте лицето с точно два знака след запетаята.
Пример:
Вход
Изход
3
Circle blue 1
Square red 2
Triangle green 3
Circle:
Color: blue
Size: 1
Area: 3.14
Square:
Color: red
Size: 2
Area: 4.00
Triangle:
Color: green
Size: 3
Area: 7.79
Фрагмент:
ColoredFigure.cs
public abstract class ColoredFigure { protected string color;
protected double size; public ColoredFigure(string color, double size) { this.color = color; this.size = size;
} public void Show() {
Console.WriteLine(string.Format("Color: {0}", this.color));
Console.WriteLine(string.Format("Size: {0}", this.size));
} public abstract string GetName(); public abstract double GetArea();
}
Circle.cs public class Circle: ColoredFigure { public Circle(string color, double size): base(color, size) { } public override double GetArea() { return Math.PI * Math.Pow(base.size, 2.0);
} public override string GetName() { return "Circle";
}
}
Triangle.cs
public class Triangle: ColoredFigure { public Triangle(string color, double size): base(color, size) {} public override double GetArea() { return (Math.Pow(base.size, 2.0) * Math.Sqrt(3)) / 4.0;
} public override string GetName() { return "Triangle";
}
}
Square.cs public class Square: ColoredFigure { public Square(string color, double size): base(color, size) {} public override double GetArea() { return Math.Pow(base.size, 2.0);
} public override string GetName() { return "Square";
}
}
Program.cs class Program { static void Main(string[] args) { int n = int.Parse(Console.ReadLine()); for (int i = 0; i < n; i++) { var cmd = Console.ReadLine().Split(); switch (cmd[0]) { case "Circle": {
Circle circle = new Circle(cmd[1], double.Parse(cmd[2]));
Console.WriteLine(string.Format("Name: {0}", circle.GetName())); circle.Show();
Console.WriteLine(string.Format("Area: {0:f2}", circle.GetArea())); break;
} case "Square": {
Square square = new Square(cmd[1], double.Parse(cmd[2]));
Console.WriteLine(string.Format("Name: {0}", square.GetName())); square.Show();
Console.WriteLine(string.Format("Area: {0:f2}", square.GetArea())); break;
} case "Triangle": {
Triangle triangle = new Triangle(cmd[1], double.Parse(cmd[2]));
Console.WriteLine(string.Format("Name: {0}", triangle.GetName())); triangle.Show();
Console.WriteLine(string.Format("Area: {0:f2}", triangle.GetArea())); break;
}
}
}
}
}
Сподели с приятели: