Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Gdeya
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 13
#1

Создать иерархию типов. c++ - C++

20.06.2012, 15:37. Просмотров 1060. Ответов 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
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
#include <iostream> 
#include <string.h> 
#include <Windows.h> 
 
using namespace std;
 
class Transport { 
protected: 
  int x,y; 
public: 
  Transport()
  { 
    x=0;  
    y=0; 
  } 
  Transport(int Skorost,int Ves) { 
    x=Skorost; 
    y=Ves; 
  } 
  Transport(Transport &transport) {
    x=transport.getSkorost(); 
    y=transport.getVes(); 
  } 
 
  int getSkorost() { 
    return x; 
  } 
  int getVes() { 
    return y; 
  } 
 
  virtual void input() { 
    cout << "Skorost="; cin >> x; 
    cout << "Ves="; cin >> y; 
  } 
  virtual void print() { 
    cout << "Skorost=" << x << " Ves=" << y << endl; 
  } 
}; 
 
class Ship:public Transport { 
protected: 
  int x2,y2; 
public: 
  Ship():Transport()
  { 
    x2=0;
    y2=0;
  } 
  Ship(int Skorost,int Ves, int Dvigatel, int Vodoizmewenie):Transport(Skorost,Ves) {  
    x2=Dvigatel;
    y2=Vodoizmewenie;
  } 
  Ship(Ship &ship):Transport(ship) { 
    x2=ship.getDvigatel(); 
    y2=ship.getVodoizmewenie();
  } 
 
  int getDvigatel() { 
    return x2; 
  }
  int getVodoizmewenie() { 
    return y2; 
  }
 
  void input() {
    Transport::input();
    cout << "Dvigatel="; cin >> x2; 
    cout << "Vodoizmewenie="; cin >> y2;
  } 
  void print() { 
    cout << "Skorost=" << x << " Ves=" << y << " Dvigatel="<< x2 << " Vodoizmewenie="<< y2 << endl; 
  } 
}; 
 
class Pass_Transport:public Ship { 
protected: 
  int x3,y3; 
public: 
  Pass_Transport():Ship() 
  { 
    x3=0;
    y3=0;
  } 
Pass_Transport(int Skorost,int Ves, int Dvigatel, int Vodoizmewenie, int Rashod_topliva, int Chislo_probega):Ship(Skorost,Ves,Dvigatel,Vodoizmewenie) { 
    x3=Rashod_topliva;
    y3=Chislo_probega;
  } 
Pass_Transport(Pass_Transport &t):Ship(t) { 
    x3=t.getTopliva(); 
    y3=t.getProbega();
  } 
 
  int getTopliva() { 
    return x3; 
  }
  int getProbega() { 
    return y3; 
  }
 
  void input() {
    Transport::input();
    cout << "Rashod_topliva="; cin >> x3; 
    cout << "Chislo_probega="; cin >> y3;
  } 
  void print() { 
    cout << "Skorost=" << x << " Ves=" << y << " Dvigatel="<< x2 << " Vodoizmewenie="<< y2 << " Rashod_topliva=" << x3 << " Chislo_probega" << y3 << endl; 
  } 
}; 
 
class Pass_ship:public Ship { 
protected: 
  int x3,y3,z; 
public: 
  Pass_ship():Ship() 
  { 
    x3=0;
    y3=0;
  } 
Pass_ship(int Skorost,int Ves, int Dvigatel, int Vysota, int Rashod_topliva, int Chislo_probega):Ship(Skorost,Ves,Dvigatel,Vysota) {  
    x3=Rashod_topliva;
    y3=Chislo_probega;
  } 
Pass_ship(Pass_ship &t):Ship(t) {  
    x3=t.getTopliva(); 
    y3=t.getProbega();
  } 
 
  int getTopliva() { 
    return x3; 
  }
  int getProbega() { 
    return y3; 
  }
 
  void input() {
    Transport::input();
    cout << "Rashod_topliva="; 
    cin >> x3; 
    cout << "Chislo_probega=";
    cin >> y3;
    cout << "Gruzopodemnost="; cin >> z;
  } 
  void print() { 
    cout << "Skorost=" << x << " Ves=" << y << " Dvigatel="<< x2 << " Vysota="<< y2 << " Rashod_topliva=" << x3 << " Chislo_probega=" << y3<< "Gruzopodemnost="<< z <<endl; 
  } 
}; 
 
 
 
 
 
int main() { 
 
 
   Transport *cl=NULL;
 
 printf("1-Transport\n2-Ship\n3-Pass_Transport\n4-Pass_ship\n");
 int ik;
 scanf("%i",&ik);
 switch (ik) 
 {
case 1: 
        { 
        cl=new Transport();
        break;
        
        }
case 2: 
        { 
            cl=new Ship();
         break;
        }
case 3: 
        { 
            cl=new Pass_Transport();
         break;
        }
case 4: 
        { 
            cl=new Pass_ship();
         break;
        }
 
 }
 cl->input();
 cl->print();
 delete cl;
  return 0; 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2012, 15:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать иерархию типов. c++ (C++):

Создать иерархию типов - C++
Создать иерархию типов - море, залив и бухта. Классы должны содержать конструкторы, включая конструктор копирования, функции установки...

Создать иерархию типов - лекарство, напиток, микстура - C++
Незнаю даже с чего начать =( Создать иерархию типов - лекарство, напиток, микстура. Реализовать во всех классах конструкторы по...

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

Создать иерархию классов Шахматная фигура – абстрактный класс, содержащий поле – цвет. Создать производные классы - C++
Создать иерархию классов Шахматная фигура – абстрактный класс, содержащий поле – цвет. Создать производные классы все фигуры, содержащие...

Не получается создать иерархию классов - C++
Пытаюсь реализовать что-то вроде шаблонного метода: основная логика отрисовки лежит в базовом классе Shape (какие цвета берем, что...

Создать иерархию классов датчик - C++
Создать иерархию классов датчик – абстрактный базовый класс и датчики температуры, влажности и скорости ветра. Для каждого класса...

4
Кот Ангенс
317 / 267 / 38
Регистрация: 24.05.2012
Сообщений: 629
20.06.2012, 15:43 #2
Pass_Transport: public Transport;

Ну еще const'ы надо бы поставить в некоторых местах.
0
Gdeya
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 13
20.06.2012, 15:45  [ТС] #3
А это для чего? Объясните пожалуйста
0
DU
1483 / 1129 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
20.06.2012, 15:49 #4
У вас наследование неверное.
Транспорт - это база всего.
Пассажирский транспорт - наследуюетс от транспорта.
Корабль тоже наследуется от транспорта
Пассажирский корабль наследуется от пассажирского транспорта и корабля.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Transtport
{
};
 
class PassTransport : public virtual Transport
{
};
 
class Ship : public virtual Transport
{
};
 
class PassShip : public PassTransport, public Ship
{
};
http://ru.wikipedia.org/wiki/%C2%E8%...E2%E0%ED%E8%E5
1
Gdeya
0 / 0 / 0
Регистрация: 21.11.2011
Сообщений: 13
20.06.2012, 18:47  [ТС] #5
ааа, спасибо большое!
сейчас попробую.

Добавлено через 48 минут
Что-то я совсем запуталась.

Добавлено через 2 часа 6 минут
Что-то все еще неправильно. Можете пожалуйста посмотреть.
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
192
193
194
195
196
197
198
199
200
#include <iostream> 
#include <string.h> 
#include <Windows.h> 
 
using namespace std;
class Transport { 
protected: 
  int x,y; 
public: 
  Transport()
  { 
    x=0;  
    y=0; 
  } 
  Transport(int Skorost,int Ves)
  { 
    x=Skorost; 
    y=Ves; 
  } 
  Transport(Transport &Transport) 
  {
    x=transport.getSkorost(); 
    y=transport.getVes(); 
  } 
 
  int getSkorost() 
  { 
    return x; 
  } 
  int getVes() 
  { 
    return y; 
  } 
 
   void input() 
    Transport::input();
   { 
    cout << "Skorost="; cin >> x; 
    cout << "Ves="; cin >> y; 
  } 
  virtual void print() { 
    cout << "Skorost=" << x << " Ves=" << y << endl; 
  } 
}; 
class Pass_Transport : public virtual Transport
{
protected:
    int x2, y2;
public:
Pass_Transport:Transport()
    {
        x2=0;
        y2=0;
    }
          Pass_Transport(int Skorost,int Ves, int Rashod_topliva, int Chislo_probega):Trasnport(Skorost, Ves)
    { 
        x2=Rashod_topliva;
        y2=Chislo_probega;
    } 
          Pass_Transport(Pass_Transport &PassTransport):Transport(PassTranpsort) 
    { 
        x2=t.getTopliva(); 
        y2=t.getProbega();
    }
    int getTopliva()
    {
        return x2;
    }
    int getProbega()
    {
        return y2;
    }
    
    void input() 
        Pass_Transport:input()
    { 
    cout << "Rashod_topliva="; cin >> x2; 
    cout << "Chislo_probega="; cin >> y2; 
    } 
    void print() 
    { 
    cout << "Skorost=" << x << " Ves=" << y << " Rashod_topliva= "<< x2 << "Chislo_probega=" << y2;
    } 
};
class Ship : public virtual Transport
{
    protected:
    int x2, y2;
public:
Ship:Transport()
    {
        x3=0;
        y3=0;
    }
          Ship(int Skorost,int Ves, int Rashod_topliva, int Chislo_probega, int Dvigatel, int Vodozimewenie):Trasnport(Skorost, Ves, Rashod_topliva, Chislo_probega)
    { 
        x3=Dvigatel;
        y3=Vodoizmewenie;
    } 
          Ship(Ship &Ship):Transport(Ship) 
    { 
        x3=t.getDvigatel(); 
        y3=t.getVodoizmewenie();
    }
    int getDvigatel()
    {
        return x3
    }
    int getVodoizmewenie()
    {
        return y3;
    }
    
    void input() 
        Ship::input()
    { 
    cout << "Dvigatel="; cin >> x3; 
    cout << "Vodoizmewenie="; cin >> y3; 
    } 
    void print() 
    { 
    cout << "Skorost=" << x << " Ves=" << y << " Rashod_topliva= "<< x2 << "Chislo_probega=" << y2 << "Dvigatel="<< x3 << "Vodoizmewenie=" << y3;
    } 
};
class Pass_Ship : public Pass_Transport, public Ship
protected: 
  int x3,y3,z; 
public: 
  Pass_ship():Ship() 
  { 
    x3=0;
    y3=0;
  } 
Pass_ship(int Skorost,int Ves, int Dvigatel, int Vysota, int Rashod_topliva, int Chislo_probega):Ship(Skorost,Ves,Dvigatel,Vysota) {  
    x3=Rashod_topliva;
    y3=Chislo_probega;
  } 
Pass_ship(Pass_ship &t):Ship(t) {  
    x3=t.getTopliva(); 
    y3=t.getProbega();
  } 
 
  int getTopliva() { 
    return x3; 
  }
  int getProbega() { 
    return y3; 
  }
 
  void input() {
    Pass_ship::input();
    cout << "Rashod_topliva="; 
    cin >> x3; 
    cout << "Chislo_probega=";
    cin >> y3;
    cout << "Gruzopodemnost="; cin >> z;
  } 
  void print() { 
    cout << "Skorost=" << x << " Ves=" << y << " Dvigatel="<< x2 << " Vodoizmewenie="<< y2 << " Rashod_topliva=" << x3 << " Chislo_probega=" << y3<< "Gruzopodemnost="<< z <<endl; 
  } 
}; 
 
int main() { 
 
 
   Transport *cl=NULL;
 
 printf("1-Transport\n2-Ship\n3-Pass_Transport\n4-Pass_ship\n");
 int ik;
 scanf("%i",&ik);
 switch (ik) 
 {
case 1: 
        { 
        cl=new Transport();
        break;
        
        }
case 2: 
        { 
            cl=new Ship();
         break;
        }
case 3: 
        { 
            cl=new Pass_Transport();
         break;
        }
case 4: 
        { 
            cl=new Pass_ship();
         break;
        }
 
 }
 cl->input();
 cl->print();
 delete cl;
  return 0; 
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2012, 18:47
Привет! Вот еще темы с ответами:

Создать иерархию классов язык с++ - C++
Создать иерархию классов язык с++ Жидкость&lt;-Напиток Жидкость&lt;-Топливо Жидкость&lt;-Реагент Жидкость - абстрактный класс?...

Создать иерархию классов химических реакторов - C++
Помогите разобраться в задании: Создал базовый класс, определил в нем конструктор копирования, перегрузил оператор присваивания...

Создать иерархию классов представляющих простое наследование - C++
Ребята, необходимо решить 2 задачки. класс должен включать в себя : - компоненты данные - методы: а) конструктор по умолчанию; ...

Создать иерархию классов корабль – пассажирский пароход - C++
Доброго времени суток, нужна помощь. Создать класс двигатель, у которого есть фирма-производитель, тип, мощность. Определить функции...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
20.06.2012, 18:47
Ответ Создать тему
Опции темы

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