Описать базовый класс: линия, параллелограмм, ромб - 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];
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.2 из 5
Похожие ответы