Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ExamOOP
- {
- class Program
- {
- // интерфейс
- interface IChangeCentre
- {
- void ChangeCentre(int n);
- }
- static void Action(IChangeCentre change, int n)
- {
- change.ChangeCentre(n);
- }
- class Circle : IChangeCentre
- {
- public double X { get; set; } // автореализуемое свойство - координата центра круга по оси X
- public double Y { get; set; } // автореализуемое свойство - координата центра круга по оси Y
- public double S { get; } // автореализуемое свойство - площадь круга (только для чтения)
- private double r { get; set; } // приватное поле - радиус круга
- // делегат для площади
- public delegate void SquareHandler(double rad);
- // событие для площади
- public event SquareHandler eventSquare;
- // свойство для радиуса
- public double R
- {
- get
- {
- return this.r;
- }
- set
- {
- if (value > 0)
- this.r = value;
- else
- Console.WriteLine("Радиус не может быть 0 либо отрицательным");
- }
- }
- // конструктор по умолчанию
- public Circle()
- {
- this.X = 0;
- this.Y = 0;
- this.R = 1;
- }
- // конструктор с параметрами
- public Circle(double x, double y, double r)
- {
- this.X = x;
- this.Y = y;
- this.R = r;
- }
- // проверка площади равной 1
- public void SquareEqualOne(double square)
- {
- if (this.r == 1)
- {
- if (eventSquare != null)
- Console.WriteLine("Радиус равна 1");
- }
- }
- // метод для подсчета площади
- public double Square()
- {
- double s = Math.PI * Math.Pow(this.r, 2);
- // триггерим тут события
- eventSquare(s);
- return s;
- }
- // перегруженный оператор умножения
- public static double operator *(Circle c, int k)
- {
- return c.R * k;
- }
- // перегруженный метод ToString()
- public override string ToString()
- {
- return "x = " + X + ", y = " + Y + ", r = " + R;
- }
- // реализация интерфейса
- public void ChangeCentre(int n)
- {
- this.X += n;
- this.Y += n;
- }
- }
- static void Main(string[] args)
- {
- Circle c = new Circle(0, 0, 1/Math.Sqrt(Math.PI));
- // Подписываемся на события
- c.eventSquare += c.SquareEqualOne;
- c.Square();
- //Console.WriteLine("Площадь: " + c.Square());
- Console.WriteLine(c.ToString());
- Action(c, 3);
- Console.WriteLine(c.ToString());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement