fr0stn1k

FigureOOPModel

Feb 3rd, 2018
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.83 KB | None | 0 0
  1. using System;
  2.  
  3. namespace WorkTestApp
  4. {
  5.     abstract class TwoDFigure
  6.     {
  7.         double _aSide;
  8.  
  9.         //Конструктор по умолчанию
  10.         public TwoDFigure()
  11.         {
  12.             aSide = 0.0;
  13.             name = "null";
  14.         }
  15.  
  16.         //Параметризированный конструктор
  17.         public TwoDFigure(double a, string n)
  18.         {
  19.             aSide = a;
  20.             name = n;
  21.         }
  22.  
  23.         //Базовый параметр, одна сторона
  24.         public double aSide
  25.         {
  26.             get { return _aSide; }
  27.             set { _aSide = value < 0 ? -value : value;}
  28.         }
  29.  
  30.         //Базовый параметр, имя
  31.         public string name { get; set; }
  32.  
  33.         //Абстрактный метод Площадь
  34.         public abstract double Area();
  35.     }
  36.  
  37.     class Circle : TwoDFigure
  38.     {
  39.  
  40.         //Конструктор класса Circle
  41.         public Circle(double r) : base(r, "Окружность") { }
  42.  
  43.         //Перегрузка метода нахождения площади
  44.         public override double Area()
  45.         {
  46.             return Math.PI * Math.Pow(aSide, 2);
  47.         }
  48.     }
  49.     class Triangle : TwoDFigure
  50.     {
  51.         double _bSide;
  52.         double _cSide;
  53.  
  54.         public Triangle()
  55.         {
  56.             bSide = cSide = 0.0;
  57.         }
  58.  
  59.         //Конструктор класса Triangle
  60.         public Triangle(double a, double b, double c) : base(a, "Треугольник")
  61.         {
  62.             bSide = b;
  63.             cSide = c;
  64.         }
  65.  
  66.         //Две дополнительные стороны у треугольника
  67.         public double bSide
  68.         {
  69.             get { return _bSide; }
  70.             set { _bSide = value < 0 ? -value : value; }
  71.         }
  72.         public double cSide
  73.         {
  74.             get { return _cSide; }
  75.             set { _cSide = value < 0 ? -value : value; }
  76.         }
  77.  
  78.         //Перегрузка метода нахождения площади
  79.         public override double Area()
  80.         {
  81.             double p = (aSide + bSide + cSide) / 2;
  82.             return Math.Sqrt(p * (p - aSide) * (p - bSide) * (p - cSide));
  83.         }
  84.      }
  85.  
  86.         class Tests
  87.         {
  88.             public static void Main(string[] args)
  89.             {
  90.                 TwoDFigure[] shapes = new TwoDFigure[2];
  91.  
  92.                 shapes[0] = new Triangle(-3.0, -4.0, 5.0);
  93.                 shapes[1] = new Circle(5);
  94.                
  95.                
  96.                 for (int i = 0; i < shapes.Length; i++)
  97.                 {
  98.                     Console.WriteLine("Объект - " + shapes[i].name);
  99.                     Console.WriteLine("Площадь равна - " + shapes[i].Area());
  100.                 }
  101.             }
  102.         }
  103. }
Advertisement
Add Comment
Please, Sign In to add comment