Создать абстрактный базовый класс с виртуальной функцией - площадь - 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());
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.111 из 5
Похожие ответы