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

Иерархия классов и List для разных типов

25.05.2016, 17:24. Показов 2770. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, мне надо было составить иерархию классов: Деталь, механизм, изделие, узел. Это у меня вроде получилось. Но трудность заключается в том, что мне нужно создать List (либо массив) для всех этих классов, то есть в одном List-е должны храниться элементы различных типов (Detail, Gear и т.д)

Я пробую сделать List<object>, но тогда я не могу обращаться к методам классов. И мне во всём этом нужно организовать поиск, сортировку и вывод.

Помогите пожалуйста дописать программу, либо дайте какой-либо совет. Заранее спасибо.

Кликните здесь для просмотра всего текста

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
124
125
126
127
public abstract class Product //Изделие
    {
        protected int number;
        protected int weight;
        protected string name;
 
        public int Number
        {
            get { return number; }
            set { number = value; }
        }
        public int Weight
        {
            get { return weight; }
            set { weight = value; }
        }
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
 
        //Конструктор для класса Product
        public Product(int number, int weight, string name)
        {
            this.number = number;
            this.weight = weight;
            this.name = name;
        }
 
        public abstract string Show(); //Абстрактный метод (вывод записи)
    }
 
    public class Gear : Product //Механизм (Отдельный класс, наследует только Product)
    {
        private string type;
 
        public string Type
        {
            get { return type; }
            set { type = value; }
        }
 
        public Gear(int number, int weight, string name, string type)
            : base(number, weight, name)
        {
            this.type = type;
        }
 
        public override string Show()
        {
            string str = "Номер механизма: " + number + "\nВес: " + weight + "\nНаименование: " + name + "\nТим Механизма: " + type;
            return str;
        }
    }
 
    public class Detail : Product //Деталь (Производная от изделия)
    {
        protected string manufacturer;
 
        public string Manufacturer
        {
            get { return manufacturer; }
            set { manufacturer = value; }
        }
 
        //Конструктор для класса Detail (:base вызывает конструктор определённый в классе Product)
        public Detail(int number, int weight, string name, string manufacturer)
            : base(number, weight, name)
        {
            this.manufacturer = manufacturer;
        }
 
        public override string Show()
        {
            string str = "Номер детали: " + number + "\nВес: " + weight + "\nНаименование: " + name + "\nПроизволитель: " + manufacturer;
            return str;
        }
    }
 
    public class Node : Detail //Узел (Производная от детали)
    {
        private bool agile;
 
        public bool Agile
        {
            get { return agile; }
            set { agile = value; }
        }
 
        public Node(int number, int weight, string name, string manufacturer, bool agile)
            : base(number, weight, name, manufacturer)
        {
            this.agile = agile;
        }
 
        public override string Show()
        {
            string str = "Номер узла: " + number + "\nВес: " + weight + "\nНаименование: " + name + "\nПроизволитель: " + manufacturer + "\nПоворотный: " + agile;
            return str;
        }
    }
 
    public class MechanicsList
    {
        List<object> mas = new List<object>();
 
        //Добавление детали
        public void Add_detail(int number, int weight, string name, string manufacturer)
        {
            mas.Add(new Detail(number, weight, name, manufacturer));
        }
 
        //Добавление механизма
        public void Add_gear(int number, int weight, string name, string type)
        {
            mas.Add(new Gear(number, weight, name, type));
        }
 
        //Добавление узла
        public void Add_node(int number, int weight, string name, string manufacturer, bool agile)
        {
            mas.Add(new Node(number, weight, name, manufacturer, agile));
        }
 
 
    }


P.S. Иерархия классов должна быть именно такой, хотя по ГОСТУ мехнизм должен быть отдельным классом
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.05.2016, 17:24
Ответы с готовыми решениями:

Метод с возвращаемым List разных типов
Добрый день. Требуется создать метод который возвращает List&lt;&gt;, но тип был постоянно разным....

Сравнение разных типов дочерних классов IComparable CompareTo
Доброго времени суток! Возникла задача сортировать список List&lt;T&gt;. В принципе ничего сложного нет,...

Приведение типов разных классов с одинаковыми базовыми родителями
Доброго. Вопрос к вам, форумчане. Есть два стула два базовых класса. Есть два класса,...

Как сделать массив Collection из разных типов классов?
pomogite zdelat masiv (Collection) , vluchauschiy v seby raznii tipi klassov ..........

7
Эксперт .NET
17789 / 12940 / 3381
Регистрация: 17.09.2011
Сообщений: 21,214
25.05.2016, 17:47 2
Лучший ответ Сообщение было отмечено DaniLaFokc72 как решение

Решение

DaniLaFokc72, создавайте List<Product>.
0
52 / 39 / 29
Регистрация: 08.04.2016
Сообщений: 126
25.05.2016, 18:00 3
DaniLaFokc72,

Деталь, механизм, изделие, узел - вот эти понятия они друг из друга прямо проистекают и каждая последующая является более специфической версий предыдущей?

Например, 1 изделие может включать в себя 1-N механизмов, каждый из которых в свою очередь может включать в себя 1-N деталей, каждый из которых в свою очередь может включать в себя 1-N узлов?

А почему Product - абстрактный класс. Разве его экземпляр не должен быть создан?
0
0 / 0 / 1
Регистрация: 10.11.2015
Сообщений: 16
25.05.2016, 18:37  [ТС] 4
Нет, эти классы полностью независимы друг от друга. А вот насчёт класса Product вы правы, сейчас исправлю
0
52 / 39 / 29
Регистрация: 08.04.2016
Сообщений: 126
25.05.2016, 18:41 5
Цитата Сообщение от DaniLaFokc72 Посмотреть сообщение
эти классы полностью независимы друг от друга.
Если они независимы друг от друга, зачем тогда они наследуют друг другу?
0
0 / 0 / 1
Регистрация: 10.11.2015
Сообщений: 16
25.05.2016, 19:02  [ТС] 6
Под независимостью я подразумевал то, что кол-во изделий никак не связано с количеством, например, деталей.
0
Эксперт .NET
17789 / 12940 / 3381
Регистрация: 17.09.2011
Сообщений: 21,214
25.05.2016, 21:42 7
Цитата Сообщение от chronicler Посмотреть сообщение
А почему Product - абстрактный класс.
Потому что не бывает просто продуктов. Вы не можете пойти в магазин и купить "продукт", вы всегда покупаете конкретную вещь: деталь, узел, механизм и т.д.
0
52 / 39 / 29
Регистрация: 08.04.2016
Сообщений: 126
25.05.2016, 22:02 8
kolorotur,
Там в коде напротив класса Product стоит комментарий, что это Изделие. Если Изделие в данном случае является абстрактной сущностью для детали, узла, механизма (по аналогии: транспортное средство - автомобиль, грузовик, мотоцикл, гужевая повозка), тогда вопросов нет.
0
25.05.2016, 22:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.05.2016, 22:02
Помогаю со студенческими работами здесь

Иерархия классов для будущей игры
Здравствуйте. До этого писал простенькие игрушки вроде карточных игр, но захотелось написать что то...

Иерархия классов для представления геометрических фигур в контейнере
Разработать иерархию классов для представления геометрических фигур: прямая, ломанная,...

Иерархия классов для хранения информации о заказах в кофейне и LINQ запросы
Разработать иерархию классов для хранения информации о заказах в кофейне. О каждом заказе известна...

Что такое ссылки, и для чего нужна иерархия классов при взаимодействии с ссылками
В том случае когда иерархия однолинейная т.е. допустим класс Point &lt; Square &lt; Reactangle И что...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru