Создать абстрактный базовый класс с виртуальной функцией - площадь - C#
Формулировка задачи:
Создать абстрактный базовый класс с виртуальной функцией - площадь. Создать производные классы: прямоугольник, КРУГ, прямоугольный треугольник, трапеция со своими функциями площади. Площадь прямоугольника S = ab (а b - стороны) площадь круга S = πr ^ 2 (r - радиус) площадь прямоугольного треугольника S = ab / 2 (а, b - катеты) площадь трапеции S = (a + b) h / 2 (а, b - основания трапеции, h - высота). Для проверки вызовов виртуальных функций определить массив указателей на абстрактный класс, которым присваиваются адреса объектов не абстрактных классов.
Что-то есть, чего-то нет:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace PR9 { class Baz { virtual double Ploshad(int a, int b); } class Pramougolnik : Baz { double a, b; Pramougolnik(double a1 = 0, double b1 = 0) { a = a1; b = b1; } virtual double Ploshad() { return a * b; } } class Krug : Baz { double Pi = 3.14; double r; Krug(double R = 0) { r = R; } virtual double Ploshad() { return Pi * r * r; } } class Pramougolniy_treugolnik : Baz { double a, b; Pramougolniy_treugolnik(double a1 = 0, double b1 = 0) { a = a1; b = b1; } virtual double Ploshad() { return (a * b) / 2; } } class Trapeciya : Baz { double a, b, h; Trapeciya(double a1 = 0, double b1 = 0, double h1 = 0) { a = a1; b = b1; h = h1; } virtual double Ploshad() { return (a + b) * h / 2; } } class Program { static void Main(string[] args) { } } }
Решение задачи: «Создать абстрактный базовый класс с виртуальной функцией - площадь»
textual
Листинг программы
abstract class Shape { public abstract double CalculateArea(); } class Rectangle : Shape { public double Width { get; private set; } public double Height { get; private set; } public Rectangle(double width, double height) { Width = width; Height = height; } public override double CalculateArea() { return Width * Height; } } class Circle : Shape { public double Radius { get; private set; } public Circle(double radius) { Radius = radius; } public override double CalculateArea() { return Math.PI * Radius * Radius; } } class RightTriangle : Shape { public Tuple<double, double> Legs { get; private set; } public RightTriangle(double a, double b) { Legs = new Tuple<double, double>(a, b); } public override double CalculateArea() { return Legs.Item1 * Legs.Item2 * .5; } } class Trapeze : Shape { public double Top { get; private set; } public double Bottom { get; private set; } public double Height { get; private set; } public Trapeze(double top, double bottom, double height) { Top = top; Bottom = bottom; Height = height; } public override double CalculateArea() { return (Top + Bottom) * Height * .5; } } static void Main(string[] args) { List<Shape> shapes = new List<Shape>(); shapes.Add(new Trapeze(10, 100, 5)); shapes.Add(new Circle(5)); shapes.Add(new Rectangle(5, 5)); shapes.Add(new Trapeze(5, 5, 5)); shapes.Add(new RightTriangle(5, 10)); shapes.Add(new Rectangle(10, 5)); shapes.Add(new RightTriangle(25, 15)); shapes.Add(new Trapeze(10, 1, 25)); shapes.Add(new Rectangle(10, 5)); Console.WriteLine("Array currently contains:"); int index = 0; foreach (var s in shapes) { Console.WriteLine("{0}) {1} with area = {2:f3}", index++, s.GetType().Name, s.CalculateArea()); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д