.NET 4.x Создать класс Point - C#
Формулировка задачи:
Здравствуйте уважаемые! Помогите выяснить почему программа не работает так как нужно!
Создать класс Point, содержащий следующие члены класса:
1. Поля: int x, y;
2. Конструкторы, позволяющие создать экземпляр класса:
• с нулевыми координатами;
• с заданными координатами.
3. Методы, позволяющие:
• вывести координаты точки на экран;
• рассчитать расстояние от начала координат до точки;
• переместить точку на плоскости на вектор (a, b).
4. Свойство:
• позволяющее получить-установить координаты точки (доступное для чтения и
записи);
• позволяющее умножить координаты точки на скаляр (доступное только для
записи).
5. Индексатор, позволяющий по индексу 0 обращаться к полю x, по индексу 1 – к
полю y, при других значениях индекса выдается сообщение об ошибке.
6. Перегрузку:
• операции ++ (--): одновременно увеличивает (уменьшает) значение полей х и у
на 1;
• констант true и false: обращение к экземпляру класса дает значение true, если
значение полей x и у совпадает, иначе false;
• операции бинарный +: одновременно добавляет к полям х и у значение скаляра.
using static System.Console;
namespace array
{
class Program
{
static void Main()
{
Point one = new Point(); // Вызов конструктора нулевых координат
Point two = new Point(); // Вызов конструктора произвольных координат
Point three = new Point(); // Вызов конструктора задания скаляра
Point foor = new Point(); // Вызов конструктора бинарного оператора " * "
Point five = new Point(); // Вызов конструктора бинарного оператора " * "
one.Show();
two[0] = 5;
two[1] = 5;
two.Show();
three[2] = 1;
three.Skalar();
double res = one.Distance(two);
foor = one * three;
five = two * three;
// Вывод результата расчета растояния между точками
WriteLine($"Растояние между точками: {res}");
//Вывод результата расчета координат на скаляр
WriteLine($"Умножение первых координат на скаляр: {foor}");
WriteLine($"Умножение вторых координат на скаляр: {five}");
//выход из программы
WriteLine();
WriteLine("Нажмите любую клавишу для выхода...");
ReadKey(true);
}
}
}using static System.Console;
using static System.Math;
namespace array
{
class Point
{
// Закрытое поле х - инициализация координыты х
private double x;
// Закрытое поле у - инициализация координыты у
private double y;
// Закрытое поле scalar - инициализируя скаляр
private double scalar;
// Конструктор 1 - задающий нулевые координаты
public Point() : this(0, 0) { }
// Конструктор 2 - инициализирующий закрытые поля х и у
public Point(double x, double y)
{
this.x = x;
this.y = y;
}
// Конструктор 3 - инициализирующий закрытое поле scalar
public Point(double scalar)
{
this.scalar = scalar;
}
// Метод Show выводит координаты точек на экран
public void Show()
{
WriteLine($"Координаты точки: х = {x}, у = {y}");
}
// Метод Distancе расчитывает растояние между точками
public double Distance(Point p)
{
return Sqrt(Pow(p.x - x, 2) + Pow(p.y - y, 2));
}
// Метод Skalar выводит скалрное значение
public void Skalar()
{
WriteLine($"Скалярное значение: {scalar}");
}
// Свойство позволяющее получить-установить координаты точки х
private double X
{
get { return this.x; }
set { if (this.x != value) this.x = value; }
}
// Свойство позволяющее получить-установить координаты точки у
private double Y
{
get { return this.y; }
set { if (this.y != value) this.y = value; }
}
// Свойство позволяюшее получить-установить скаляр
public double Scalar
{
get { return this.scalar; }
set { if (this.scalar != value) this.scalar = value; }
}
// Индексатор для обращения свойствам
public double this[int i]
{
get
{
if (i == 0) return X;
else if (i == 1) return Y;
else if (i == 2) return Scalar;
else
{
WriteLine("Недопустимый индекс");
return 0;
}
}
set
{
if (i == 0) X = value;
else if (i == 1) Y = value;
else if (i == 2) Scalar = value;
else WriteLine("Недопустимый индекс");
}
}
// Перегрузк бинарног оператор " * "
public static Point operator * (Point p1, Point p2)
{
Point result = new Point();
result.x = p1.x * p2.scalar;
result.y = p1.y * p2.scalar;
return result;
}
// Перегрузк бинарног оператор " + "
public static Point operator + (Point m)
{
Point xx = new Point(m);
return xx =+ 1;
}
// Перегрузк бинарног оператор " - "
public static Point operator - (Point m)
{
Point xx = new Point(m);
return xx =-1;
}
// Перегрузк унарного оператор " ++ "
public static Point operator ++ (Point o)
{
Point xx = new Point(o);
return xx++;
}
// Перегрузк унарного оператор " ++ "
public static Point operator -- (Point y)
{
Point yy = new Point(y);
return yy--;
}
}
}Решение задачи: «.NET 4.x Создать класс Point»
textual
Листинг программы
class Point
{
private double _x;
private double _y;
public Point(double x, double y)
{
_x = x;
_y = y;
}
public double MultiplyScalar { set { _x *= value; _y *= value; } }
}
.....
Point p = new Point(2, 5);
p.MultiplyScalar = 3;