С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 04.11.2012
Сообщений: 5
1

Описать базовый класс: линия, параллелограмм, ромб

08.01.2013, 02:28. Показов 3829. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Условие:
Определить иерархию классов, определить в этих классах методы, которые перемещает фигуру по плоскости, возвращают ее площадь, периметр, и строку символов, отражающую имя класса и состояние объекта.
Добавить абстрактный класс «Фигура» в систему классов(Линия, параллелограмм, ромб), включите в него все методы прочих классов.

подскажите пожалуйста как должно выглядеть решение
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
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();
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.01.2013, 02:28
Ответы с готовыми решениями:

Описать класс, представляющий параллелограмм
Описать класс, представляющий параллелограмм. Написать программу, демонстрирующую все разработанные...

Базовый класс - Линия (поле: название, координаты)
Добрый вечер, уважаемые программисты! У меня завал по программированию. нужно срочно сделать прогу....

Описать базовый класс колоды карт и производный класс пасьянс
Здраствуйте! товарищи-программисты, помогите пожалуйста со следующим заданием: Создать колоду...

Описать базовый класс Point. Описать класс Прямоугольник от класса Point
Описать базовый класс Point - точка. Описать класс &quot;прямоугольник&quot;. Обязательные поля класса...

1
136 / 138 / 18
Регистрация: 26.07.2010
Сообщений: 911
09.01.2013, 14:17 2
Задача на проектирование структуры классов? Да, вещь полезная. Но если честно для меня довольно-таки удивительно, что от вас потребовали абстрактный класс. Если честно, то я считаю, что назначений абстрактного класса сейчас только в том, что бы содержать более конкретную реализацию интерфейса. Раньше да, интерфейсов не было и абстракцию типов приходилось реализовывать через сложные системы классов, делать кучу дополнительных классов и трястись каждый день и час, что бы их не начали использовать в приложении напрямую, создавать закрытые не работающие конструкторы, прятать класс подальше от чужих глаз. А потом появился абстрактный класс, экземпляр которого уж точно никто не сможет создать, вроде бы задача упростилась, но не совсем. Нужно было отделить два понятия, такие как "что нужно использовать" и "как нужно использовать".
Вот так появились интерфейсы. Потому переспросите у того, кто дал вам это задание, что все таки использовать абстрактный класс или интерфейс? Я вам настоятельно рекомендую использовать интерфейсы, а абстрактные классы создавать для подсказок.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
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];
        }
    }
}
Добавлено через 19 часов 44 минуты
Хотя там вместо структуры лучше использовать класс, лишняя упаковка не нужна.
1
09.01.2013, 14:17
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.01.2013, 14:17
Помогаю со студенческими работами здесь

Описать базовый класс строка C#
Описать базовый класс CStr - строка. Обязательные поля класса CStr: поле для хранения символов...

Описать базовый класс Строка
Здравствуйте! Можете помочь написать программу : Описать базовый класс Строка. Обязательные поля...

Интерфейсы и параметризованные коллекции: Описать базовый класс Строка
using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

Описать класс ромб, содержащий длины диагоналей, и методы: определяющий длину стороны и величины углов, вывод
11. Описать класс ромб, содержащий длины диагоналей, и методы: определяющий длину стороны и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru