Описать базовый класс: линия, параллелограмм, ромб - C#
Формулировка задачи:
Условие:
Определить иерархию классов, определить в этих классах методы, которые перемещает фигуру по плоскости, возвращают ее площадь, периметр, и строку символов, отражающую имя класса и состояние объекта.
Добавить абстрактный класс «Фигура» в систему классов(Линия, параллелограмм, ромб), включите в него все методы прочих классов.
подскажите пожалуйста как должно выглядеть решение
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Nasledovanie { public abstract class AbstractFigure { protected double x1; protected double x2; protected double y1; protected double y2; protected AbstractFigure(double x1, double x2, double y1, double y2) { this.x1 = x1; this.x2 = x2; this.y1 = y1; this.y2 = y2; } public abstract string Name { get; } public override string ToString() { return String.Format("Фигура: {0}, x1 = {1}, x2 = {2}, y1 = {3}, y2 = {4}", Name, x1, x2, y1, y2); } public abstract double Dlina(); public abstract double Perimeter(); public abstract double Square(); public void Run() { Console.WriteLine(ToString()); Console.WriteLine(String.Concat("Длина: ", Dlina())); Console.WriteLine(String.Concat("Периметр: ", Perimeter())); Console.WriteLine(String.Concat("Площадь: ", Square())); Console.WriteLine(); } } public class Line : AbstractFigure { public Line(double x1, double x2, double y1, double y2) : base(x1, x2, y1, y2) { } public override string Name { get { return "Линия:"; } } public override double Dlina() { return (x2 - x1) + (y2 - y1); } public override double Perimeter() { return 0; } public override double Square() { return 0; } } public class Parallelogram : Line { private double alfa; public Parallelogram(double x1, double x2, double alfa) : base(x1, x2, x1, x2) { this.alfa = alfa; } public override string Name { get { return "Параллелограмм"; } } public override double Dlina() { return 0; } public override double Perimeter() { return x1 + x2 + y1 + y2; } public override double Square() { return x1 * x2 * Math.Sin(Math.PI * alfa / 180.0); } } public class Rhombus : Parallelogram { public Rhombus(double x1, double alfa) : base(x1, x1, alfa) { } public override string Name { get { return "Ромб"; } } } class Program { static void Main(string[] args) { List<AbstractFigure> figures = new List<AbstractFigure>(); figures.Add(new Line (4, 3, 7,14)); figures.Add(new Parallelogram(3, 5, 45)); figures.Add(new Rhombus(8, 45)); foreach (AbstractFigure figure in figures) { figure.Run(); } Console.ReadLine(); } } }
Решение задачи: «Описать базовый класс: линия, параллелограмм, ромб»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { Point pointX = new Point { X = 1, Y = 1 }; Point pointY = new Point { X = 2, Y = 2 }; Line line = new Line(); line.AddPoint(pointX,0); line.AddPoint(pointY,1); foreach(var item in line.Points) { Console.WriteLine(String.Format("Координата \"X\": {0} \nКоордината \"Y\": {1}", item.X, item.Y)); Console.WriteLine(); } } } /// <summary> /// интерфейс для фигур с базовыми возможностями каждой фигуры /// </summary> public interface IFigure { /// <summary> /// массив точек каждой фигуры /// </summary> Point[] Points { get; set; } /// <summary> /// метод для добавления точки в массив точек фигуры /// </summary> /// <param name="point">Объект содержащий координаты точки по оси X и по оси Y</param> /// <param name="index">Индекс для добавления</param> void AddPoint(Point point, int index); } /// <summary> /// Класс содержащий данные о координатах точки /// </summary> public class Point { /// <summary> /// координата по X /// </summary> public int X { get; set; } /// <summary> /// Координата по Y /// </summary> public int Y { get; set; } } /// <summary> /// Абстрактный класс, который содержит(подсказывает) более конкретную реализацию для классов фигур /// </summary> abstract class Figure : IFigure { #region Реализация интерфейса IFigure public Point[] Points { get; set; } public void AddPoint(Point point, int index) { Points[index] = point; } #endregion } /// <summary> /// Линия /// </summary> class Line : Figure { /// <summary> /// Конструктор объекта линии /// </summary> public Line() { //состоит из двух точек потому массив ограничен до двух значений Points = new Point[2]; } } /// <summary> /// Параллелограм /// </summary> class Parallelogram : Figure { /// <summary> /// Контруктор параллелограма /// </summary> public Parallelogram() { //состоит из 4 точек потому массив ограничен до 4х значений Points = new Point[4]; } } /// <summary> /// Ромб /// </summary> class Rhomb : Figure { /// <summary> /// Конструктор ромба /// </summary> public Rhomb() { //состоит из 4 точек потому массив ограничен до 4х значений Points = new Point[4]; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д