Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
3 / 3 / 0
Регистрация: 10.09.2014
Сообщений: 107

Организация иерархии классов с возможностью последующего отображения

07.11.2015, 19:02. Показов 1599. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот такой вопрос,как лучше создать.
К примеру у меня есть четыре поля(string,int,int,int.).Имена значений полей имя,сила,ловкость,интеллект.
У меня есть к примеру 2 и больше видов животных(пес,кот,енот и суслик).У каждого свое имя и характеристики. Дальше эти характеристики влияют на действия или еще на что либо.Как мне прописать так, чтобы не писать к каждому зверьку свою переменную силы или ловкости?Что тут и как лучше использовать?

Добавлено через 28 минут
И вот к примеру отображение в виндовс форм. У меня есть четыре label и button. При нажатие на кнопку отображается случайное животное,его имя и характеристики данного зверька.

Добавлено через 1 час 33 минуты
Вот так примерно выглядит начало.Есть ли рекомендации или предложение по исправлению,оптимизации данного индусского коду?
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
 class MyClass
    {
        private string name;
        private int stranght;
        private int intellect;
        private int agility;
        
       public void MyClass(string inName, int inStranght, int inIntellect, int inAgility)
        {
            name = inName;
            stranght = inStranght;
            intellect = inIntellect;
            agility = inAgility;
 
       }
       public string Name()
       { return name; }
       public int Stranght()
       { return stranght; }
       public int Intellect()
       { return intellect; }
       public int Agility()
       { return agility; }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Random  MyRand = new Random();
            MyClass My = new MyClass();
 
            int MyAnimal = MyRand.Next(0, 4);
            switch (MyAnimal)
            {
                case 0:
                    My.MyClass("Dog", 15, 14, 10);
                    break;
                case 1 :
                  My.MyClass("Cat", 5, 12, 10);
                    break;
                case 2:
                    My.MyClass("Raccoon", 9, 13, 14);
                    break;
                case 3:
                    My.MyClass("gopher", 10, 11, 11);
                    break;  
 
            }
             Console.WriteLine("Имя {0}/nсила{1}/nловкость{2}/nинтиллект{3}"My.Name,My.Stranght,My.Agility,My.Intellect);
 
        }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.11.2015, 19:02
Ответы с готовыми решениями:

Объединение двух файлов с возможностью последующего разделения
Я объединяю два файла в один при помощи FileStream. Как мне определить где заканчивается один файл и начинается другой.

Можно ли на одном рисунке (Image) нарисовать второй с возможностью последующего удаления?
а можно ли на одном рисунке(Image) нарисовать второй.. с возможностью потом его удалить?

Сериализация иерархии классов
Здравствуйте! Столкнулся со следующей проблемой, когда сериализую класс в файл, то мне выдается ошибка на строке сериализации ...

10
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
07.11.2015, 19:05
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Animal
{
    protected int str;
    protected int agi;
    //...
    protected string name;
}
 
class Dog: Animal
{
 
}
 
class Cat : Animal
{
 
}
и т.д.
1
3 / 3 / 0
Регистрация: 10.09.2014
Сообщений: 107
07.11.2015, 19:20  [ТС]
Вы предлагаете через наследование.Дальше как я понимаю использовать set и get.А как потом данные переменных выводить на label в виндовс форм?И к примеру мне нужно вывести данные одного случайного животное.
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
07.11.2015, 19:37
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

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
class Animal
{
    protected string name;
    protected int strength;
    protected int intellect;
    protected int agility;
 
    public Animal(string inName, int inStrength, int inIntellect, int inAgility)
    {
        name = inName;
        strength = inStrength;
        intellect = inIntellect;
        agility = inAgility;
    }
 
    public override string ToString()
    {
        get { return String.Format("Имя {0}/nсила{1}/nловкость{2}/nинтеллект{3}", name, strength, intellect, agility); }
    }
 
    public string Name { get { return name; } }
    public int Strength { get { return strength; } }
    public int Intellect { get { return intellect; } }
    public int Agility { get { return agility; } }
}
 
class Dog : Animal
{
    public Dog(string inName, int inStrength, int inIntellect, int inAgility) : base(inName, inStrength, inIntellect, inAgility)
    {
    }
}
 
class Cat : Animal
{
    public Cat(string inName, int inStrength, int inIntellect, int inAgility) : base(inName, inStrength, inIntellect, inAgility)
    {
    }
}
 
class Raccoon : Animal
{
    public Raccoon(string inName, int inStrength, int inIntellect, int inAgility) : base(inName, inStrength, inIntellect, inAgility)
    {
    }
}
 
class Gopher : Animal
{
    public Gopher(string inName, int inStrength, int inIntellect, int inAgility) : base(inName, inStrength, inIntellect, inAgility)
    {
    }
}
 
class Program
{
    static void Main(string[] args)
    {
        Random  MyRand = new Random();
        Animal My = null;
 
        int MyAnimal = MyRand.Next(0, 4);
        switch (MyAnimal)
        {
            case 0:
                My = new Dog("Dog", 15, 14, 10);
                break;
            case 1 :
                My = new Cat("Cat", 5, 12, 10);
                break;
            case 2:
                My = new Raccoon("Raccoon", 9, 13, 14);
                break;
            case 3:
                My = new Gopher("gopher", 10, 11, 11);
                break;  
         }
         Console.WriteLine(My);
         //label1.Text = My.ToString(); // WinForms
    }
}
1
3 / 3 / 0
Регистрация: 10.09.2014
Сообщений: 107
07.11.2015, 19:43  [ТС]
Спасибо огромное,буду вникать!
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
07.11.2015, 19:58
Лучший ответ Сообщение было отмечено tezaurismosis как решение

Решение

KrolikTin,
по моему скромному мнению, здесь в наследовании никакого смысла нет. Производные классы не расширяют функциональность базового.
Другое дело, если бы дальше планировалось создавать что-то типа армий котов, банд сусликов и т.п. Тогда для разделения по группам могла пригодиться принадлежность юнита к определенному классу.
1
3 / 3 / 0
Регистрация: 10.09.2014
Сообщений: 107
07.11.2015, 20:33  [ТС]
А как же предлагаете делать вы?В будущем я хотел создать, что то типа сражения. ГГ возможно придется сражаться не с одним волком, а возможно с двумя.
Так же не у каждого создания будут одинаковы характеристики.У котов также не будут совпадать.
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
07.11.2015, 20:44
Цитата Сообщение от KrolikTin Посмотреть сообщение
А как же предлагаете делать вы?
Оставить как было изначально.
Вот смотрите, чем ваш суслик отличается от собаки? Ничем. Так зачем их делать объектами разных классов? Другое дело, если бы суслик мог в сражении плеваться ядом, енот летать, а кот 9 раз возрождаться из мертвых. Т.е. если бы эти виды животных имели уникальные для своего вида характеристики, то наследование пригодилось бы.

Добавлено через 2 минуты
Цитата Сообщение от KrolikTin Посмотреть сообщение
Так же не у каждого создания будут одинаковы характеристики
набор характеристик или значения характеристик (полей)?
1
3 / 3 / 0
Регистрация: 10.09.2014
Сообщений: 107
07.11.2015, 20:51  [ТС]
Цитата Сообщение от Даценд Посмотреть сообщение
Оставить как было изначально.
Вот смотрите, чем ваш суслик отличается от собаки? Ничем. Так зачем их делать объектами разных классов? Другое дело, если бы суслик мог в сражении плеваться ядом, енот летать, а кот 9 раз возрождаться из мертвых. Т.е. если бы эти виды животных имели уникальные для своего вида характеристики, то наследование пригодилось бы.
В дальнейшем я собирался дать неким тварям уникальные способности и увеличить количество разнообразных характеристик.Сейчас я же просто пытаюсь придумать какой то движок и экспериментирую.Так что это меньшое для масштабного плана робот.Так же спасибо и вам,вы мне тоже кое что пояснили и развили мою идею!

Добавлено через 1 минуту
Цитата Сообщение от Даценд Посмотреть сообщение
набор характеристик или значения характеристик (полей)?
Значение полей,кошки не все одинаково умны и ловки.А также не у всех кошек будут одинаковые способности. Точняк я про это тоже не подумал.Еще раз спасибо!
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
07.11.2015, 20:57
Цитата Сообщение от KrolikTin Посмотреть сообщение
В дальнейшем я собирался дать неким тварям уникальные способности и увеличить количество разнообразных характеристик.
В этом случае наследование пригодится. И т.к. такие планы есть, то лучше уже сейчас разбить юнитов на классы.
Удачи!
0
14 / 13 / 6
Регистрация: 21.01.2015
Сообщений: 150
09.11.2015, 14:07
Мб можно использовать интерфейсы или абстрактные классы? Можно пилить уникальные обьекты.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.11.2015, 14:07
Помогаю со студенческими работами здесь

Создание иерархии классов
Создать следующую иерархию классов: Класс CL1 содержит в себе: -Элементы-данные доступные в CL2, но не доступные в CL3 -Класс...

Построение иерархии классов
1) Разработать методы (не менее 3-х) и свойства (не менее 3-х) для каждого из определяемых классов. 2) Один из методов в классе родителе...

Построение иерархии классов
а есть ли так сказать, блок схема, между тем, как работает программа? Точнее от класса к методу и тд, как все это выглядит? на примере...

Объекты иерархии классов в массив
Дана иерархия классов и нужно создать массив объектов этих классов, и вывести их с помощью foreach. Помогите советом.

Про проектирование иерархии классов
Здравствуйте всем. Есть такой код на C# . Он рабочий, но у меня возникло пару вопросов про проектирование иерархии классов на моём...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru