Создать класс "Четырехугольник" - C#
Формулировка задачи:
Создать класс четырехугольник, члены класса - координаты 4-х точек. Предусмотреть в классе вычисления и вывода сведений о фигуре - длины сторон, диагоналей, периметр,площадь. Создать производный класс прямоугольник, предусмотреть в классе проверку, является ли фигура прямоугольником. Написать программу, демонстрирующую работу с классом: Дано К четырехугольников и Т прямоугольников, найти кол-во четырехугольников, у которых площадь меньше средней площади четырехугольников и среднюю площадь прямоугольников.
и все, дальше ступор и не знаю что писать, так как на парах отсутствовала по болезни, то тему я не поняла, а сама разобраться не могу.
class Geviert
{
protected double x1, x2, y1, y2;
public Geviert(double x1, double x2, double y1, double y2)
{
this.x1 = x1;
this.x2 = x2;
this.y1 = y1;
this.y2 = y2;
}
public double Perimeter() // Периметр
{
return ((x1 * x2) + (x2 * y1) + (y1 * y2) + (y2 * x1));
}
public double Gipfel() //Высота
{
return (x1 * y2);
}
public double Area() // Площадь
{
return ((y1 * y2) * (x1 * y2));
}
}
class Pryamougolnik: Geviert
{
}Решение задачи: «Создать класс "Четырехугольник"»
textual
Листинг программы
using System;
namespace array
{
Point
{
/* Задание 1. Создать класс Point, содержащий следующие члены класса:
1. Поля:
• int x, y;
2. Конструкторы, позволяющие создать экземпляр класса:
• с нулевыми координатами;
• с заданными координатами.
3. Методы, позволяющие:
• вывести координаты точки на экран;
• рассчитать расстояние от начала координат до точки;
• переместить точку на плоскости на вектор (a, b).
4. Свойство:
• позволяющее получить-установить координаты точки (доступное для чтения и записи);
• позволяющее умножить координаты точки на скаляр (доступное только для записи).
5. Индексатор, позволяющий по индексу 0 обращаться к полю x, по индексу 1 – к
полю y, при других значениях индекса выдается сообщение об ошибке.
6. Перегрузку:
• операции ++ (--): одновременно увеличивает (уменьшает) значение полей х и у на 1;
• констант true и false: обращение к экземпляру класса дает значение true, если
значение полей x и у совпадает, иначе false;
• операции бинарный +: одновременно добавляет к полям х и у значение скаляра.
Продемонстрировать работу класса. */
// Закрытые поля х и у
private double x, y;
// Закрытое поле value для переопределения метода Equals
int value = 0;
// Конструктор 1 - задающий нулевые координаты
public Point() : this(0, 0) { }
// Конструктор 2 - инициализирующий закрытые поля х и уclass
public Point(double x, double y)
{
this.x = x;
this.y = y;
}
// Метод Show выводит координаты точек на экран
public void Show()
{
Console.WriteLine("Координаты точки: х = {0}, у = {1}", x, y);
Console.WriteLine();
}
// Метод Distancе рассчитывает расстояние между точками
public double GetDistance(Point p)
{
return Math.Sqrt(Math.Pow(p.x - x, 2) + Math.Pow(p.y - y, 2));
}
// Метод Transfer перемещения точки на вектор (а,b)
public void Translate(double a, double b)
{
x =+ a;
y =+ b;
}
// Свойство позволяющее получить-установить координаты точки х
public double X
{
get { return x; }
set { x = value; }
}
// Свойство позволяющее получить-установить координаты точки у
public double Y
{
get { return y; }
set { y = value; }
}
// Свойство позволяющее умножить координаты на скаляр
public double Scalar
{
set { x *= value; y *= value; }
}
// Индексатор для обращения свойствам
public double this[int i]
{
get
{
if (i == 0) return X;
else if (i == 1) return Y;
else return 0;
}
set
{
if (i == 0) X = value;
else if (i == 1) Y = value;
}
}
// Перегрузка бинарного оператор " * "
public static Point operator * (Point p, double scalar)
{
return new Point(p.x * scalar, p.y * scalar);
}
// Перегрузка бинарного оператор " + "
public static Point operator + (Point p, double scalar)
{
return new Point(p.x + scalar, p.y + scalar);
}
// Перегрузка бинарного оператор " - "
public static Point operator - (Point p, double scalar)
{
return new Point(p.x - scalar, p.y - scalar);
}
// Перегрузка унарного оператор " ++ "
public static Point operator ++ (Point p)
{
return new Point(p.x + 1, p.y + 1);
}
// Перегрузка унарного оператор " -- "
public static Point operator -- (Point p)
{
return new Point(p.x - 1, p.y - 1);
}
// Возвращает значение true, если поле x = y, иначе false
public static bool operator == (Point x, Point y)
{
return (x.X == y.X) && (x.Y == y.Y);
}
// Возвращает значение true, если поле x != y, иначе false
public static bool operator != (Point x, Point y)
{
return (x.X != y.X) || (x.Y != y.Y);
}
// Перегрузка унарной константы true
public static bool operator true (Point p)
{
return (p.X == p.Y);
}
// Перегрузка унарной константы false
public static bool operator false(Point p)
{
return (p.X != p.Y);
}
// Перегрузка метода Equals
public override bool Equals(object obj)
{
if (!(obj is Point)) return false;
return value == ((Point)obj).value;
}
// Перегрузка метода GetHashCode
public override int GetHashCode()
{
return value;
}
}
/* Класс для работы с экземпляром класса Point
class Program
{
static void Main()
{
Point one = new Point(); // Вызов конструктора нулевых координат
Point two = new Point(5, 5); // Вызов конструктора произвольных координат
double scalar = 5; // значение скаляра
one.Show();
two.Show();
double res = one.GetDistance(two);
Console.WriteLine("Расстояние между точками: {0}", res);
Console.WriteLine();
two.Translate(7, 8);
Console.WriteLine("Перемещение точки на вектор (а, b): ");
two.Show();
Console.WriteLine("Умножение координат на скаляр: ");
two.Scalar = scalar;
two.Show();
Console.WriteLine("Изменение координат на +1: ");
two++;
two.Show();
Console.WriteLine("Изменение координат на -1: ");
two--;
two.Show();
if (two) Console.WriteLine("Точки х и у равны");
else Console.WriteLine("Точки х и у не равны");
Console.WriteLine();
Console.WriteLine("Добавление к полям х и у значение скаляра:");
two = two + scalar;
two.Show();
//выход из программы
Console.WriteLine();
Console.WriteLine("Нажмите любую клавишу для выхода...");
Console.ReadKey(true);
}
}*/
}