Advertisement
Guest User

Untitled

a guest
Apr 6th, 2020
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.84 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ExamOOP
  8. {
  9.     class Program
  10.     {
  11.  
  12.         // интерфейс
  13.         interface IChangeCentre
  14.         {
  15.             void ChangeCentre(int n);
  16.         }
  17.         static void Action(IChangeCentre change, int n)
  18.         {
  19.             change.ChangeCentre(n);
  20.         }
  21.         class Circle : IChangeCentre
  22.         {
  23.             public double X { get; set; } // автореализуемое свойство - координата центра круга по оси X
  24.             public double Y { get; set; } // автореализуемое свойство - координата центра круга по оси Y
  25.             public double S { get; } // автореализуемое свойство - площадь круга (только для чтения)
  26.             private double r { get; set; } // приватное поле - радиус круга
  27.  
  28.             // делегат для площади
  29.             public delegate void SquareHandler(double rad);
  30.             // событие для площади
  31.             public event SquareHandler eventSquare;
  32.  
  33.  
  34.  
  35.             // свойство для радиуса
  36.             public double R
  37.             {
  38.                 get
  39.                 {
  40.                     return this.r;
  41.                 }
  42.                 set
  43.                 {
  44.                     if (value > 0)
  45.                         this.r = value;
  46.                     else
  47.                         Console.WriteLine("Радиус не может быть 0 либо отрицательным");
  48.                 }
  49.             }
  50.  
  51.             // конструктор по умолчанию
  52.             public Circle()
  53.             {
  54.                 this.X = 0;
  55.                 this.Y = 0;
  56.                 this.R = 1;
  57.             }
  58.  
  59.             // конструктор с параметрами
  60.             public Circle(double x, double y, double r)
  61.             {
  62.                 this.X = x;
  63.                 this.Y = y;
  64.                 this.R = r;
  65.             }
  66.  
  67.             // проверка площади равной 1
  68.             public void SquareEqualOne(double square)
  69.             {
  70.                 if (this.r == 1)
  71.                 {
  72.                     if (eventSquare != null)
  73.                         Console.WriteLine("Радиус равна 1");
  74.                 }
  75.             }
  76.  
  77.             // метод для подсчета площади
  78.             public double Square()
  79.             {
  80.                 double s = Math.PI * Math.Pow(this.r, 2);
  81.                 // триггерим тут события
  82.                 eventSquare(s);
  83.                 return s;
  84.             }
  85.  
  86.             // перегруженный оператор умножения
  87.             public static double operator *(Circle c, int k)
  88.             {
  89.                 return c.R * k;
  90.             }
  91.             // перегруженный метод ToString()
  92.             public override string ToString()
  93.             {
  94.                 return "x = " + X + ", y = " + Y + ", r = " + R;
  95.             }
  96.             // реализация интерфейса
  97.             public void ChangeCentre(int n)
  98.             {
  99.                 this.X += n;
  100.                 this.Y += n;
  101.             }
  102.         }
  103.         static void Main(string[] args)
  104.         {
  105.             Circle c = new Circle(0, 0, 1/Math.Sqrt(Math.PI));
  106.             // Подписываемся на события
  107.             c.eventSquare += c.SquareEqualOne;
  108.             c.Square();
  109.             //Console.WriteLine("Площадь: " + c.Square());
  110.             Console.WriteLine(c.ToString());
  111.             Action(c, 3);
  112.             Console.WriteLine(c.ToString());
  113.         }
  114.     }
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement