Создать абстрактный базовый класс с виртуальной функцией - площадь - 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());
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д