13 / 13 / 4
Регистрация: 02.02.2011
Сообщений: 165
1

Создать собственное семейство с именем «Моя ферма», реализовать индексатор

06.03.2012, 18:37. Показов 2063. Ответов 2
Метки нет (Все метки)

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
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    public abstract class Animal
    {
        string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public Animal()
        { name = "Животное без имени"; }
        public Animal(string ima)
        { name = ima; }
    }
    public class Собака : Animal
    {
        public Собака(string ima) : base(ima) { }
        public void Лает()
        { Console.WriteLine("Собака гавкает (гав), а корова мычит (муу) "); }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Animal[] cob = new Animal[1];
            Собака s = new Собака("Первая собака");
            cob[0] = s;
            ArrayList semeystvo = new ArrayList();
            semeystvo.Add(s);
            semeystvo.Add(new Собака("Вторая собака"));
            semeystvo.Add(new Собака("Первая курица"));
            Console.WriteLine("Начальное семейство: ");
            foreach (Animal dd in semeystvo)
            { Console.WriteLine(dd.Name); }
            bool f; int x = 0, i;
            for (i = 0; i < semeystvo.Count; ++i)
            {
                f = ((Animal)semeystvo[i]).Name.StartsWith("Собака");
                if (f == true) { x = i; break; }
            }
            semeystvo.RemoveAt(x);
            Console.WriteLine();
            Console.WriteLine("После удаления собаки: ");
            foreach (Animal dd in semeystvo)
            { Console.WriteLine(dd.Name); }
            Animal[] c = new Animal[3];
            for (i = 0; i < 3; ++i)
            { c[i] = new Собака("Корова " + (i + 1)); }
            semeystvo.AddRange(c);
            Console.WriteLine();
            Console.WriteLine("После добаления коров: ");
            foreach (Animal dd in semeystvo)
            { Console.WriteLine(dd.Name); }
            Console.WriteLine(); s.Лает();
            Console.ReadLine();
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.03.2012, 18:37
Ответы с готовыми решениями:

Собственное визуальное оформление окна. Как правильно реализовать?
При реализации многооконного интерфейса программы, столкнулся с несколькими проблемами: Первая...

Не используя индексатор массива реализовать поиск и все виды сортировок
Помогите написать программу с комментариями (Указатели) Не используя индексатор массива...

Реализовать собственное событие (имитация) нажатие клавиш мыши или клавиатуры
Реализовать собственное событие (имитация) нажатие клавиш мыши или клавиатуры. Разработать...

Создать собственное исключение
Создать собственное исключение, написать регулярное выражение, которое считает кол-во слов...

2
Эксперт .NET
17684 / 12870 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
06.03.2012, 19:32 2
Я так понимаю, суть задания заключается в том, чтобы реализовать свою коллекцию под названием "Моя Ферма".
Проще всего это сделать, унаследовавшись от списка жывотных, но так как задание требует реализации индексатора, то достаточно реализовать интерфейс IList<Animal>

Вот вам самопальный List<Animal> с блэкджеком и зверьми:
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
public abstract class Animal
{
    string name;
    public string Name
    {
        get { return name; }
        set { name = value; }
    }
    public Animal()
    { name = "Животное без имени"; }
    public Animal(string ima)
    { name = ima; }
 
    public abstract string Say();
}
public class Dog : Animal
{
    public Dog(string ima) : base(ima) { }
    public override string Say()
    {
        return "GAV!";
    }
}
public class Cow : Animal
{
    public Cow(string ima) : base(ima) { }
    public override string Say()
    {
        return "Moo";
    }
}
 
public class Farm : IList<Animal>
{
    private Animal[] barn = new Animal[4];
 
    private void ExpandBarn()
    {
        Array.Resize(ref barn, barn.Length * 2);
    }
 
    #region IList<Animal> Members
 
    public int IndexOf(Animal item)
    {
        return Array.IndexOf(barn, item);
    }
 
    public void Insert(int index, Animal item)
    {
        if (Count + 1 == barn.Length)
            ExpandBarn();
        for (int i = Count; i > index; i--)
            barn[i] = barn[i - 1];
        barn[index] = item;
        ++Count;
    }
 
    public void RemoveAt(int index)
    {
        Array.Copy(barn, index + 1, barn, index, Count - index);
        --Count;
    }
 
    public Animal this[int index]
    {
        get
        {
            return barn[index];
        }
        set
        {
            barn[index] = value;
        }
    }
 
    #endregion
 
    #region ICollection<Animal> Members
 
    public void Add(Animal item)
    {
        if (Count == barn.Length)
            ExpandBarn();
        barn[Count++] = item;
    }
 
    public void Clear()
    {
        Array.Clear(barn, 0, Count);
        Count = 0;
    }
 
    public bool Contains(Animal item)
    {
        return Array.IndexOf(barn, item) > -1;
    }
 
    public void CopyTo(Animal[] array, int arrayIndex)
    {
        Array.Copy(barn, 0, array, arrayIndex, Count);
    }
 
    public int Count
    {
        get;
        protected set;
    }
 
    public bool IsReadOnly
    {
        get { return false; }
    }
 
    public bool Remove(Animal item)
    {
        int index = Array.IndexOf(barn, item);
        if (index == -1) return false;
        RemoveAt(index);
        return true;
    }
 
    #endregion
 
    #region IEnumerable<Animal> Members
 
    public IEnumerator<Animal> GetEnumerator()
    {
        foreach (Animal animal in barn)
            yield return animal;
    }
 
    #endregion
 
    #region IEnumerable Members
 
    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
 
    #endregion
}
1
13 / 13 / 4
Регистрация: 02.02.2011
Сообщений: 165
06.03.2012, 21:19  [ТС] 3
kolorotur, спасибо.
0
06.03.2012, 21:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.03.2012, 21:19
Помогаю со студенческими работами здесь

Создать собственное исключение BigBang
Создать собственной исключение Bigbang, которое выбрасывается, когла один из трех сомножителей...

Создать собственное пространство имен
Создать собственное пространство имен, в котором создать два класса: MyInterface и MySort. В классе...

Как создать индексатор с динамическим массивом?
Здравствуйте. У меня создано два класса, один - шаблон для объекта, а второй - индексатор, хранящий...

Если S является допустимым именем файла, то создать пустой файл с именем и вывести True
Дана строка S. Если S является допустимым именем файла, то создать пустой файл с этим именем и...


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

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

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