Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
5 / 5 / 1
Регистрация: 11.10.2013
Сообщений: 415
1

Занести из файла объекты производных классов в массив объектов базового класса

21.09.2014, 16:22. Просмотров 1596. Ответов 11
Метки нет (Все метки)


Здравствуйте. Что в этом коде изменить, чтобы объекты производных классов заносились из файла?
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
using System;
namespace ConsoleApplication1
{
    class Monster
    {
        ...
    }
   
    class Daemon : Monster
    {
        ... //
    }
 
    class Class1
    {   static void Main()
        {
            const int n = 3;
            Monster[] stado = new Monster[n];
 
            stado[0] = new Monster( "Monia" );
            stado[1] = new Monster( "Monk" );
            stado[2] = new Daemon ( "Dimon", 3 );
 
            foreach ( Monster elem in stado ) elem.Passport();          // 1
 
            for ( int i = 0; i < n; ++i ) stado[i].Ammo = 0;            // 2
            Console.WriteLine();
 
            foreach ( Monster elem in stado ) elem.Passport();          // 3
        }
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2014, 16:22
Ответы с готовыми решениями:

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

Сортировка: Как отсортировать объекты конечных классов с учетом промежуточного базового класса?
Есть один базовый класс (ClassMain), который наследует три класса (N1 N2 N3), каждый из трех...

Абстрактный класс, массив указателей на объекты производных классов
У меня есть абстрактный класс: class abstract{ public: int field; double method(); }; В...

Поместить в динамически расширяемый массив объекты класса, производные от базового абстрактного класса
Помогите пожалуйста новичку! (мне). Я хочу создать динамически расширяющийся массив указателей...

11
Модератор
Эксперт .NET
5304 / 4100 / 1183
Регистрация: 12.10.2013
Сообщений: 11,909
Записей в блоге: 2
21.09.2014, 17:54 2
Цитата Сообщение от Alex7676 Посмотреть сообщение
заносились из файла?
Встречный вопрос (даже джва)
1. Какой тип файла предполагается использовать?
2. Сами объекты должны создаваться из файла или только заполняться поля/свойства объектов?
0
5 / 5 / 1
Регистрация: 11.10.2013
Сообщений: 415
21.09.2014, 19:00  [ТС] 3
insite2012, Поля и свойства прописаны в классе Monster. Если дословно по заданию, то вот так надо:
C#
1
2
3
//Для разработанной Вами иерархии классов в методе Main:
//1)    описать массив объектов базового класса;
//2)    занести в этот массив  из файла(!)  объекты дочерних классов;
А тип файла... .txt пусть будет
0
Модератор
Эксперт .NET
5304 / 4100 / 1183
Регистрация: 12.10.2013
Сообщений: 11,909
Записей в блоге: 2
21.09.2014, 19:02 4
Alex7676, вот эту строку
Цитата Сообщение от Alex7676 Посмотреть сообщение
занести в этот массив *из файла(!) *объекты дочерних классов;
лично я бы понял так, что из файла должны быть созданы именно объекты. А это, ятд, подразумевает сериализацию...
0
5 / 5 / 1
Регистрация: 11.10.2013
Сообщений: 415
21.09.2014, 19:03  [ТС] 5
insite2012, вряд ли. До сериализации еще не добрались.
0
Модератор
Эксперт .NET
5304 / 4100 / 1183
Регистрация: 12.10.2013
Сообщений: 11,909
Записей в блоге: 2
21.09.2014, 20:15 6
Лучший ответ Сообщение было отмечено Alex7676 как решение

Решение

Цитата Сообщение от Alex7676 Посмотреть сообщение
До сериализации еще не добрались.
Ну тады ой)))
Тогда действительно, только заполнение полей/свойств. Покажите полный код базового и дочернего классов. Хотелось бы взглянуть на имеющиеся поля/свойства.

Добавлено через 1 час 5 минут
Alex7676, ну его, ваш код))) Вот мой простой пример, дальше думаю разберетесь. Вот структура текстового файла, он у меня на диске С:
Name MyBeast
Age 12
Name MyCat
Age 5
Name MyKitten
Age 1
Name OldBear
Age 20
А вот тестовый пример:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
using System.IO;
 
namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            Animal[] animals = new Animal[4];
            string[] data = File.ReadAllLines(@"C:\ProgramData.txt");
 
            animals[0] = new Bear();
            animals[1] = new Cat();
            animals[2] = new Cat();
            animals[3] = new Bear();
 
            for (int i = 0; i < animals.Length; i++)
            {
                animals[i].Name = data[2*i].Split(new char[] { ' ' },StringSplitOptions.RemoveEmptyEntries)[1];
                animals[i].Age = int.Parse(data[2*i+1].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)[1]);
            }
 
            foreach (Animal a in animals)
            {
                Console.WriteLine(a);
            }
            Console.ReadLine();
        }
    }
    class Animal
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public override string ToString()
        {
            return string.Format("Name: {0}, Age: {1}", Name, Age);
        }
    }
    class Bear : Animal
    {
    }
    class Cat : Animal
    {
    }
}
Пробуйте, подгоняйте под ваши задачи.
1
5 / 5 / 1
Регистрация: 11.10.2013
Сообщений: 415
21.09.2014, 23:38  [ТС] 7
insite2012, Спасибо.

Добавлено через 3 часа 16 минут
Разобрался
0
Модератор
Эксперт .NET
5304 / 4100 / 1183
Регистрация: 12.10.2013
Сообщений: 11,909
Записей в блоге: 2
21.09.2014, 23:41 8
Цитата Сообщение от Alex7676 Посмотреть сообщение
какой индекс в квадратных скобках написать?
так же, только вместо 2 - 3, 4 и так далее. Естественно, данные в файле должны совпасть.
0
5 / 5 / 1
Регистрация: 11.10.2013
Сообщений: 415
21.09.2014, 23:51  [ТС] 9
insite2012, ага, спасибо. Я понял

Добавлено через 7 минут
insite2012, еще вопрос созрел. Я понимаю, что это работает, но мне просто интересно. Вот в этой части кода единица в квадратных скобках что обозначает? На другие значения компилятор ругается.
C#
1
StringSplitOptions.RemoveEmptyEntries)[1]
C#
1
2
animals[i].Name = data[2*i].Split(new char[] { ' ' },StringSplitOptions.RemoveEmptyEntries)[1];
                animals[i].Age = int.Parse(data[2*i+1].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)[1]);
0
Модератор
Эксперт .NET
5304 / 4100 / 1183
Регистрация: 12.10.2013
Сообщений: 11,909
Записей в блоге: 2
22.09.2014, 00:26 10
Цитата Сообщение от Alex7676 Посмотреть сообщение
Вот в этой части кода единица в квадратных скобках что обозначает?
Метод Split(...) возвращает массив строк из предложения. А единица-индекс нужного нам слова в этом массиве (на нулевом месте имя переменной, на первом - значение).
1
27 / 27 / 5
Регистрация: 24.03.2013
Сообщений: 238
22.09.2014, 15:20 11
Не знаю добрались ли до dynamic, если добрались - то вот пошаговый пример от мелкомягких: ссылка
p.s. модераторам - форум жутко лагает.
0
tezaurismosis
22.09.2014, 21:13     Занести из файла объекты производных классов в массив объектов базового класса
  #12

Не по теме:

Цитата Сообщение от z668 Посмотреть сообщение
p.s. модераторам - форум жутко лагает
Мы знаем :)

0
22.09.2014, 21:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2014, 21:13
Привет! Вот еще темы с ответами:

Массив объектов разных производных классов
Задача такая: базовый класс - фигура, производные классы - круг, треугольник и т.п. Пользователь...

Массив объектов базового класса, позволяющий работать с набором объектов — чтение, вывод
Расширить программы с классами. Каждый разработанный класс считать базовым; для каждого такого...

Заполнить массив объектов базового класса
Суть задачи: есть базовый класс Участник и производные от него Студент и Школьник. Нужно заполнить...

Можно ли создать массив из объектов базового и производного класса?
Доброй ночи. Есть задание: Возник вопрос о реализации метода &quot;TovarRead&quot;. Насколько я понял...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.