Абстрактный класс Figure - C#

Узнай цену своей работы

Формулировка задачи:

/*
1.Создать абстрактный класс Figure с методами вычисления площади и периметра, а также методом, выводящим информацию о фигуре на экран.  
2.Создать производные классы: Rectangle (прямоугольник), Circle (круг), Triangle (треугольник) со своими методами вычисления площади и периметра.  
3.Создать массив n фигур и вывести полную информацию о фигурах на экран.  
*/
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Win32;
 
namespace prakt_10
{
    abstract public class Figure
    {
        abstract public double Area();    // get area
        abstract public double Perimeter();    //get perimetr
        abstract public void Show();    //show information
    }
 
    class Trangle : Figure
    {
        private readonly string name = "Trangle";
 
        private int x1, y1;
        private int x2, y2;
        private int x3, y3;
 
        public Trangle(int x1, int y1, int x2, int y2, int x3, int y3)
        {
            this.x1 = x1;
            this.y1 = y1;
 
            this.x2 = x2;
            this.y2 = y2;
 
            this.x3 = x3;
            this.y3 = y3;
        }
 
        public int lengthSegment(int x1, int y1, int x2, int y2)
        {
            return ((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
        }
 
        public override double Area()
        {
            int segment1 = lengthSegment(this.x2, this.x1, this.y1, this.y2);
            int segment2 = lengthSegment(this.x3, this.x2, this.y3, this.y2);
            int segment3 = lengthSegment(this.x1, this.x3, this.y1, this.y3);
 
            double pPerimetr = segment3 + segment1 + segment2;
 
            return pPerimetr * Math.Sqrt((pPerimetr - segment1) * (pPerimetr - segment2) * (pPerimetr - segment3));
        }
 
        public override double Perimeter()
        {
            int segment1 = lengthSegment(this.x2, this.x1, this.y1, this.y2);
            int segment2 = lengthSegment(this.x3, this.x2, this.y3, this.y2);
            int segment3 = lengthSegment(this.x1, this.x3, this.y1, this.y3);
 
            return segment2 + segment1 + segment3;
        }
 
        public override void Show()
        {
            Console.WriteLine("Name figure:{0}", this.name);
 
            Console.WriteLine("Point coordinates:");
            Console.WriteLine("Point 1: ({0};{1})", this.x1, this.y1);
            Console.WriteLine("Point 2: ({0};{1})", this.x2, this.y2);
            Console.WriteLine("Point 3: ({0};{1})", this.x3, this.y3);
 
            Console.WriteLine("Length of a segment: {0}, {1}, {2}, area: {3}, perimetr: {4}",
                this.lengthSegment(this.x2, this.x1, this.y1, this.y2),
                this.lengthSegment(this.x3, this.x2, this.y3, this.y2),
                this.lengthSegment(this.x1, this.x3, this.y1, this.y3),
                this.Area(), this.Perimeter());
        }
    }
 
    class Rectangle : Figure
    {
        private readonly string name = "Rectangle";
 
        private int x1, y1;
        private int x2, y2;
        private int x3, y3;
        private int x4, y4;
 
        public Rectangle(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
        {
            this.x1 = x1;
            this.y1 = y1;
 
            this.x2 = x2;
            this.y2 = y2;
 
            this.x3 = x3;
            this.y3 = y3;
 
            this.x4 = x4;
            this.y4 = y4;
        }
 
        public int lengthSegment(int x1, int y1, int x2, int y2)
        {
            return ((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));
        }
 
        public override double Area()
        {
            int segment1 = lengthSegment(this.x2, this.x1, this.y1, this.y2);
            int segment2 = lengthSegment(this.x3, this.x2, this.y3, this.y2);
            return (segment2 * segment1);
        }
 
        public override double Perimeter()
        {
            int segment1 = lengthSegment(this.x2, this.x1, this.y1, this.y2);
            int segment2 = lengthSegment(this.x3, this.x2, this.y3, this.y2);
            return ((segment2 + segment1) * 2);
        }
 
        public override void Show()
        {
            Console.WriteLine("Name figure:{0}", this.name);
 
            Console.WriteLine("Point coordinates:");
            Console.WriteLine("Point 1: ({0};{1})", this.x1, this.y1);
            Console.WriteLine("Point 2: ({0};{1})", this.x2, this.y2);
            Console.WriteLine("Point 3: ({0};{1})", this.x3, this.y3);
            Console.WriteLine("Point 4: ({0};{1})", this.x4, this.y4);
 
            Console.WriteLine("Length of a segment: length {0}, width: {1}, area: {2}, perimetr: {3}",
                this.lengthSegment(this.x2, this.x1, this.y1, this.y2),
                this.lengthSegment(this.x3, this.x2, this.y3, this.y2),
                this.Area(), this.Perimeter());
        }
    }
 
    class Circle : Figure
    {
        private readonly string name = "Circle";
 
        private int x, y;
        private double radius;
 
        public Circle(int x, int y, int radius)
        {
            this.x = x;
            this.y = y;
            this.radius = radius;
        }
 
        public override double Area()
        {
            return Math.PI * this.radius * this.radius;
        }
 
        public override double Perimeter()
        {
            return Math.PI * this.radius * 2;
        }
 
        public override void Show()
        {
            Console.WriteLine("Name figure:{0}", this.name);
 
            Console.WriteLine("Point coordinates:");
            Console.WriteLine("Point: ({0};{1})", this.x, this.y);
 
            Console.WriteLine("Area: {0}, perimetr: {1}", this.Area(), this.Perimeter());
        }
    }
   
    class Programm
    {
        static void Main(string[] args)
        {
            int x1 = int.Parse(Console.ReadLine());
            int y1 = int.Parse(Console.ReadLine());
 
            int x2 = int.Parse(Console.ReadLine());
            int y2 = int.Parse(Console.ReadLine());
 
            int x3 = int.Parse(Console.ReadLine());
            int y3 = int.Parse(Console.ReadLine());
 
            int x4 = int.Parse(Console.ReadLine());
            int y4 = int.Parse(Console.ReadLine());
 
            Rectangle R1 = new Rectangle(x1, y1, x2, y2, x3, y3, x4, y4);
            R1.Show();
 
            Console.ReadKey();
        }
    }
}
ломаю голову уже битые сутки, ничего более живого не могу придумать, помогите плиз

Решение задачи: «Абстрактный класс Figure»

textual
Листинг программы
//Так как нужно вычислять Периметр, входные данные Для треугольника являются его сторонами
using System;
namespace ConsoleApplication1
{
    public abstract class Figure
    {
 
        double pri_width;
        double pri_height;
        double pri_length;
        public double Width
        {
            get { return pri_width; }
            set { pri_width = value < 0 ? -value : value; }
        }
        public double Height
        {
            get { return pri_height; }
            set { pri_height = value < 0 ? -value : value; }
        }
 
        public double Length
        {
            get { return pri_length; }
            set { pri_length = value < 0 ? -value : value; }
        }
        public string name { get; set; }
 
        public Figure() //Конструктор по умолчанию
        {
            Width = Height = Length = 0.0;
            name = "null";
        }
 
        public Figure(double x, string n) //Конструктор для круга, квадрата и равностороннего треугольника
        {
            Width = Height = Length = x;
            name = n;
        }
 
        public Figure(double x, double y, string n) // Равнобедренный треугольник и прямоугольник
        {
            Width = x;
            Height = y;
            Length = Width;
            name = n;
        }
 
        public Figure(double x, double y, double z, string n) // треугольник
        {
            Width = x;
            Height = y;
            Length = z;
            name = n;
        }
 
        public abstract double Area();
        public abstract double Perimeter();
        public abstract string ShowStyle();
 
    }

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


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

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

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