0 / 0 / 0
Регистрация: 22.05.2012
Сообщений: 11
1

Построить иерархию классов: организация, страховая компания, нефтегазовая компания

09.10.2012, 13:05. Показов 7711. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Построить иерархию классов. Организация, страховая компания, нефтегазовая компания,
завод.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.10.2012, 13:05
Ответы с готовыми решениями:

Построить иерархию классов: Организация, страховая компания, нефтегазовая компания, завод
Помогите пожалуйста написать программу (с коментами) задание построить иерархию...

Разработать иерархию классов: Организация, Нефтегазовая Компания, Завод
Разработать иерархию классов: Организация, Нефтегазовая Компания, Завод. Разработать конструкторы...

Комментарии к коду (страховая компания)
Не могли бы вы помочь с комментариями к двум кодам. Желательно к каждой строчке. Ибо хотелось бы...

СУБД Страховая Компания
Здравствуйте!! Ребятушки, помогите пожалуйста! Нужна база данных "Страховая компания". Если у кого...

4
9 / 9 / 3
Регистрация: 13.09.2012
Сообщений: 55
09.10.2012, 14:45 2
А в чем, собственно, проблема? Организация - скорее всего, абстрактный класс; страховая и нефтегазовая компании - его наследники. Завод - дочернее предприятие нефтегазовой компании, т.е., вероятно, наследник от нефтегазовой (Хотя может быть наследником организации, а в нефтегазовую включаться в поле с типом List<>).
0
606 / 581 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
09.10.2012, 15:56 3
кой-чего набросал, многое не обработано и не доведено до конца, но уж очень обширна тема

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

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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
    public enum OrganizationType
    {
        OOO,   //общ. с огр. ответств.
        ODO,   //общ. с доп. ответств.
        OAO,   //откр. акц. общ.
        ZAO,   //закр. акц. общ.
        KommTov//коммандитное товарищ.
        //...//
    }
 
    abstract class Organization
    {
        //тип организации (поле, чтоб не изменяли всякие)
        protected OrganizationType oType;
        //тип организации (свойство, только для чтения)
        public OrganizationType OType { get { return oType; } }
 
        //номер телефона
        public int PhoneNumber;
        //имя деректора
        public string DirectorName;
 
        //Денюшка
        protected int Cache = 0;
        //метод получения количества денюжек
        public int GetCountCache()
        {
            return Cache;
        }
        //метод увеличения денюшки
        public void AddCache(int incCache)
        {
            Cache += incCache;
        }
        //метод уменьшения денюжки
        public void RemoveCache(int decCache)
        {
            Cache -= decCache;
        }
 
        //конструктор, необходимый для наследования, убирать даже и не пробовал
        //если кто знает приём как без него обойтись - поделитесь))
        public Organization() { }
    }
    
    class SaveCompany:Organization
    {
        //Список клиентов текущей страховой компании
        private List<Organization> Clients;
 
        public SaveCompany(OrganizationType ot, int pn, string dn)
        {
            oType = ot;
            PhoneNumber = pn;
            dn = DirectorName;
 
            Clients = new List<Organization>();
        }
 
        //метод добавления клиента
        public void AddClient(Organization Client)
        {
            Clients.Add(Client);
        }
        //пара методов удаления клиента
        public void RemoveClient(Organization Client)
        {
            Clients.Remove(Client);
        }
        public void RemoveClient(int Number)
        {
            Clients.RemoveAt(Number);
        }
 
        //метод получения денюжки от клиента
        public void GetCacheFromClient(int incCache,Organization Client)
        {
            Cache += incCache;
            //да, нужно не только свою увеличить, но и не забыть уменьшить клиентскую.
            Client.RemoveCache(incCache);//хотя это нужно только для управления толпой организаций с одной программы.
        }
        //тоже самое, но здесь денюжку отдаём =(
        public void SetCacheToClient(int decCache, Organization Client)
        {
            Cache -= decCache;
            Client.AddCache(decCache);
        }
    }
 
    class OilCompany:Organization
    {
        //Список имеющихся в наличии месторождений нефти
        private Dictionary<string,int> OwnOilPlace;
        
        //количество свежедобытой нефти
        private int FreshOil;
        //стоимость за 1 единицу нефти
        private int OilPower;
 
        public OilCompany(OrganizationType ot, int pn, string dn)
        {
            oType = ot;
            PhoneNumber = pn;
            dn = DirectorName;
 
            OwnOilPlace = new Dictionary<string, int>();
        }
 
        //метод добавления месторождения
        public void AddPlace(string place,int countOil)
        {
            OwnOilPlace.Add(place,countOil);
        }
        //метод удаления месторождения
        public void RemovePlace(string place)
        {
            OwnOilPlace.Remove(place);
        }
 
        //метод получения нефти от месторождения
        public void GetOilFromPlace(int incOil, string place)
        {
            if(OwnOilPlace.ContainsKey(place))
                if (OwnOilPlace[place] > incOil)
                {
                    FreshOil += incOil;
                    OwnOilPlace[place] -= incOil;
                }
        }
        //продажа нефти кудато налево
        public void SellFreshOil(int CountOil)
        {
            if (FreshOil > CountOil)
            {
                FreshOil -= CountOil;
                Cache += CountOil * OilPower;
            }
        }
        //продажа нефти на какойнить завод
        public void SellFreshOil(int CountOil,Plant zavod)
        {
            if ((FreshOil > CountOil) && (zavod.GetCountCache() > CountOil * OilPower))
            {
                FreshOil -= CountOil;
                Cache += CountOil * OilPower;
 
                zavod.ByedOil += CountOil;
            }
        }
    }
 
    class Plant:Organization
    {
        //купленная с заводов нефть
        public int ByedOil;
 
        //обработанная нефть
        public double CompleteOil;
        //коэфициент потерь(или наоборот) нефти при обработке
        public double OilKoff;
        //стоимость продажи единицы обработанной нефти
        public int OilPower;
 
        public Plant(OrganizationType ot, int pn, string dn)
        {
            oType = ot;
            PhoneNumber = pn;
            dn = DirectorName;
        }
 
        //обработка закупленной нефти
        public void WorkFromOil()
        {
            while (ByedOil > 0)
            {
                CompleteOil += ByedOil * OilKoff;
                ByedOil--;
            }
        }
 
        //продажа обработанной нефти налево, бо не придумал кто будет покупать
        public void SellCompleateOil(double OilCount)
        {
            if (CompleteOil > OilCount)
            {
                CompleteOil -= OilCount;
                Cache += Convert.ToInt32(OilCount * OilPower);
            }
        }
    }
}

Каркас есть, и по моему более чем)
Можно обработать нормально тип организации, доработать персонал, для этого посоздовав классов - работников, управляющих, и прочих. и... и в итоге получится ещё одна прикольная экономическая стратегия XD
1
0 / 0 / 0
Регистрация: 22.05.2012
Сообщений: 11
23.10.2012, 18:04  [ТС] 4
Посмотрите пожалуйста так правильно
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Class
{
    public class Organization
    {
        public string Name;
        public Organization(string name)
        {
            this.Name = name;
        }
        public void PrintName()
        {
            Console.WriteLine(this.Name);
        }
    }
    public class InsunanceCompany : Organization
    {
        public int ListClients;
        public InsunanceCompany(string name, int ListClients)
            : base(name)
        {
            this.ListClients = ListClients;
        }
        public void PrintClients()
        {
            Console.WriteLine(this.ListClients);
        }
    }
    public class OilCompany : Organization
    {
        public int VolumeProduction;
        public OilCompany(string name, int ListClients, int VolumeProduction)
            : base(name)
        {
            this.VolumeProduction = VolumeProduction;
        }
        public void PrintProduction()
        {
            Console.WriteLine(this.VolumeProduction);
        }
    }
    public class Plant : Organization
    {
        public int NumberWorker;
        public Plant(string name, int ListClients, int VolumeProduction, int NumberWorker)
            : base(name)
        {
            this.NumberWorker = NumberWorker;
        }
        public void PrintWorker()
        {
            Console.WriteLine(this.NumberWorker);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            var Plant = new Plant("Добро", 50, 200, 100);
            Plant.PrintName();
         Plant.PrintWorker();
         Console.ReadLine();
        }
    }
}
0
606 / 581 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
24.10.2012, 17:59 5
Цитата Сообщение от anna83 Посмотреть сообщение
C#
1
public Plant(string name, int ListClients, int VolumeProduction, int NumberWorker) : base(name) { this.NumberWorker = NumberWorker; }
изначально задумывалось что ListClients - это не какое либо целочисленное значение, а динамический список объектов, ну да ладно, кому как удобнее, дело в другом.

1) старайся избегать одинаково именовать поля класса и параметры методов/конструкций.
2) в конструкторе Plant (да и не только его) ты передаёшь несколько значений, которые не используются ни для чего. фактически всего 2 можно оставить: name и numberWorker.
даже других полей у класса нет.

но есть поля с похожими именами у .. так скажем, парралельных классов.

обрати внимание на архитектуру:
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
 public class Organization
    {
        public string Name;
        public Organization(string name)
        {
            this.Name = name;
        }
...
}
 
 
public class OilCompany : Organization
    {
        public int VolumeProduction;
        public OilCompany(string name, int ListClients, int VolumeProduction)
            : base(name)
        {
            this.VolumeProduction = VolumeProduction;
        }
...
}
 
 
 public class Plant : Organization
    {
        public int NumberWorker;
        public Plant(string name, int ListClients, int VolumeProduction, int NumberWorker)
            : base(name)
        {
            this.NumberWorker = NumberWorker;
        }
...
    }
из полей у ВСЕХ классов есть имя и какое-то одно своё, а ты в конструкторах наверное передаёшь значения для соседних классов, но на самом деле влияния это не оказывает. выполняется всего 2 присваивания параметров, остальные уничтожаются при окончании работы методов.

грубых ошибок нет, просто лишние передачи параметрав конструкторам класса (что пара лишних параметров для современных компов? хотя если многократно расширить проект путать будет всё)
и всего по 2 поля и 2 метода у каждого класса кроме базового (но может оно так и было задуманно?))
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2012, 17:59
Помогаю со студенческими работами здесь

Запросы в Access бд страховая компания
Добрый вечер, подскажите пожалуйста, есть задание: Страховая компания Вы работаете в страховой...

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

Создание первой БД (Страховая компания)
Страховая компания Вы работаете в страховой компании. Вашей задачей является отслеживание ее...

Страховая компания составила рейтинг самых ненадежных смартфонов
Британская страховая компания Mobile Insurance проанализировала данные об обращениях за выплатой...


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

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

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