Создать абстрактный базовый класс с виртуальной функцией - площадь - C#

Узнай цену своей работы

Формулировка задачи:

Создать абстрактный базовый класс с виртуальной функцией - площадь. Создать производные классы: прямоугольник, КРУГ, прямоугольный треугольник, трапеция со своими функциями площади. Площадь прямоугольника S = ab (а b - стороны) площадь круга S = πr ^ 2 (r - радиус) площадь прямоугольного треугольника S = ab / 2 (а, b - катеты) площадь трапеции S = (a + b) h / 2 (а, b - основания трапеции, h - высота). Для проверки вызовов виртуальных функций определить массив указателей на абстрактный класс, которым присваиваются адреса объектов не абстрактных классов. Что-то есть, чего-то нет:
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace PR9
  6. {
  7. class Baz
  8. {
  9. virtual double Ploshad(int a, int b);
  10. }
  11. class Pramougolnik : Baz
  12. {
  13. double a, b;
  14. Pramougolnik(double a1 = 0, double b1 = 0)
  15. { a = a1; b = b1; }
  16. virtual double Ploshad()
  17. {
  18. return a * b;
  19. }
  20. }
  21. class Krug : Baz
  22. {
  23. double Pi = 3.14;
  24. double r;
  25. Krug(double R = 0)
  26. { r = R; }
  27. virtual double Ploshad()
  28. {
  29. return Pi * r * r;
  30. }
  31. }
  32. class Pramougolniy_treugolnik : Baz
  33. {
  34. double a, b;
  35. Pramougolniy_treugolnik(double a1 = 0, double b1 = 0)
  36. { a = a1; b = b1; }
  37. virtual double Ploshad()
  38. {
  39. return (a * b) / 2;
  40. }
  41. }
  42. class Trapeciya : Baz
  43. {
  44. double a, b, h;
  45. Trapeciya(double a1 = 0, double b1 = 0, double h1 = 0)
  46. { a = a1; b = b1; h = h1; }
  47. virtual double Ploshad()
  48. {
  49. return (a + b) * h / 2;
  50. }
  51. }
  52. class Program
  53. {
  54. static void Main(string[] args)
  55. {
  56. }
  57. }
  58. }

Решение задачи: «Создать абстрактный базовый класс с виртуальной функцией - площадь»

textual
Листинг программы
  1. abstract class Shape
  2. {
  3.     public abstract double CalculateArea();
  4. }
  5. class Rectangle : Shape
  6. {
  7.     public double Width { get; private set; }
  8.     public double Height { get; private set; }
  9.  
  10.     public Rectangle(double width, double height)
  11.     {
  12.         Width = width;
  13.         Height = height;
  14.     }
  15.  
  16.     public override double CalculateArea()
  17.     {
  18.         return Width * Height;
  19.     }
  20. }
  21. class Circle : Shape
  22. {
  23.     public double Radius { get; private set; }
  24.  
  25.     public Circle(double radius)
  26.     {
  27.         Radius = radius;
  28.     }
  29.  
  30.     public override double CalculateArea()
  31.     {
  32.         return Math.PI * Radius * Radius;
  33.     }
  34. }
  35. class RightTriangle : Shape
  36. {
  37.     public Tuple<double, double> Legs { get; private set; }
  38.  
  39.     public RightTriangle(double a, double b)
  40.     {
  41.         Legs = new Tuple<double, double>(a, b);
  42.     }
  43.  
  44.     public override double CalculateArea()
  45.     {
  46.         return Legs.Item1 * Legs.Item2 * .5;
  47.     }
  48. }
  49. class Trapeze : Shape
  50. {
  51.     public double Top { get; private set; }
  52.     public double Bottom { get; private set; }
  53.     public double Height { get; private set; }
  54.  
  55.     public Trapeze(double top, double bottom, double height)
  56.     {
  57.         Top = top;
  58.         Bottom = bottom;
  59.         Height = height;
  60.     }
  61.  
  62.     public override double CalculateArea()
  63.     {
  64.         return (Top + Bottom) * Height * .5;
  65.     }
  66. }
  67.  
  68. static void Main(string[] args)
  69. {
  70.     List<Shape> shapes = new List<Shape>();
  71.  
  72.     shapes.Add(new Trapeze(10, 100, 5));
  73.     shapes.Add(new Circle(5));
  74.     shapes.Add(new Rectangle(5, 5));
  75.     shapes.Add(new Trapeze(5, 5, 5));
  76.     shapes.Add(new RightTriangle(5, 10));
  77.     shapes.Add(new Rectangle(10, 5));
  78.     shapes.Add(new RightTriangle(25, 15));
  79.     shapes.Add(new Trapeze(10, 1, 25));
  80.     shapes.Add(new Rectangle(10, 5));
  81.  
  82.     Console.WriteLine("Array currently contains:");
  83.  
  84.     int index = 0;
  85.     foreach (var s in shapes)
  86.     {
  87.         Console.WriteLine("{0}) {1} with area = {2:f3}", index++, s.GetType().Name, s.CalculateArea());
  88.     }
  89. }

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


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

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

9   голосов , оценка 4.111 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы