Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Класс Picture, Создать абстрактный класс Figure 
:(
    Опции темы
artemii08051996
Дата 2.1.2018, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 1.5.2017

Репутация: нет
Всего: нет



Создать абстрактный класс Figure. На его основе реализовать классы Rectangle (прямоугольник), Circle (круг) и Trapezium (трапеция) с возможностью вычисления площади, центра тяжести и периметра.
Создать класс Picture, содержащий параметризованную коллекцию объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка. Написать демонстрационную программу, в которой будут использоваться все методы классов.
Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.

помогите дописать программу
Код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApp7
{
    class Program
    {
        static void Main(string[] args)
        {
            Figure[] Фигуры = new Figure[6];
            Фигуры[0] = new Circle(3.0);
            Фигуры[1] = new Rectangle(4.0, 5.0);
            Фигуры[2] = new Trapezium(3.0, 4.0, 5.0,6.0,7.0);
            Фигуры[3] = new Rectangle(3.0,5.0);
            Фигуры[4] = new Rectangle(3.0, 4.0);
            Фигуры[5] = new Circle(3.0);
 
            for (int i = 0; i < Фигуры.Length; i++)
            {
                Console.WriteLine("Площадь равна: " + Фигуры[i].Pl());
                Console.WriteLine("Центр тяжести равен: " + Фигуры[i].CT());
                Console.WriteLine("Периметр равен: " + Фигуры[i].Per());
                Console.WriteLine();
            }
            Console.Read();
        }
    }
 
    // абстрактный класс фигуры
    abstract class Figure
    {
        // исключения для классов наследников
        protected Exception OutOfMaxBorder = new Exception("Исключение, превышена максимальная граница");
        protected Exception NonBellowZero = new Exception("Исключение, введенное значение не может быть отрицательным!");
  
         // абстрактный метод для получения площади
         public abstract double Pl();
         // абстрактный метод для получения центра тяжести
         public abstract double CT();
         // абстрактный метод для получения периметра
         public abstract double Per();
    }
 
    class Rectangle : Figure // производный класс прямоугольника
    {
        double a,b;
        
        public double A
        {
            get { return a; }
            set { if (value > 0) a = value; }
        }
 
        public double B
        {
            get { return b; }
            set { if (value > 0) b = value; }
        }
        
        public Rectangle(double a, double b) 
        {
            this.A=a;
            this.B=b;
        }
        
        // переопределение получения площади
        public override double Pl()
        {
            return A * B;
        }
 
        // переопределение получения центра тяжести
        public override double CT()
        {
            return B / 2.0;
        }
        // переопределение получения периметра
        public override double Per()
        {
            return 2 * (A + B);
        }
    }
 
    class Circle : Figure //производный класс круга
    {
        double r;
        
        public double R
        {
            get { return r; }
            set { if (value > 0) r = value; }
        }
        
        public Circle(double r)
        { 
            this.R=r;
        }
        
        // переопределение получения площади
        public override double Pl()
        {
            return Math.PI*R*R;
        }
 
        // переопределение получения центра тяжести
        public override double CT()
        {
            return R;
        }
        
        // переопределение получения периметра
        public override double Per()
        {
            return 2 * Math.PI*R;
        }
    }
 
    class Trapezium : Figure //  производный класс трапеции
    {
        double a,b,c,d,h;
        
        public double A
        {
            get { return a; }
            set { if (value > 0) a = value; }
        }
 
        public double B
        {
            get { return b; }
            set { if (value > 0) b = value; }
        }
        
        public double C
        {
            get { return c; }
            set { if (value > 0) d = value; }
        }
 
        public double D
        {
            get { return d; }
            set { if (value > 0) d = value; }
        }
        
        public double H
        {
            get { return h; }
            set { if (value > 0) h = value; }
        }
 
               
        public Trapezium(double a, double b, double c, double d, double h) 
        { 
            this.A=a;
            this.B=b;
            this.C=c;
            this.D=d;
            this.H=h;
        }
        
        public override double Pl()
        {
            return ((A + B)/2.0)*H;
        }
 
        public override double CT()
        {
            return (H/3.0)*(2*B+A)/(A+B);
        }
        public override double Per()
        {
            return (A+B+C+D);
        }
    }
    
    
}

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1005 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.