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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
temask
0 / 0 / 0
Регистрация: 26.07.2010
Сообщений: 25
#1

Абстрактный базовый класс и множественное наследование (либо иерархия классов) - C++

15.12.2011, 11:49. Просмотров 2042. Ответов 8
Метки нет (Все метки)

Помогите пожалуйста с задачей. Кое-что написал но еще далеко не все. Все ли пока правильно?


Мобильные телефоны (наименование, фирма, стандарт связи, заряд аккумулятора, потребление при ожидании, потребление при разговоре, время ожидания - функция Run (), время разговора –функция Run1 ()).

Общая постановка. Создать программу с абстрактным базовым классом и множественным наследованием,(либо иерархией классов) реализовать в нем:
- конструктор,
- деструктор,
- виртуальную функцию просмотра текущего состояния объекта print(),
- friend – функцию Run ().
Производные классы должны содержать переопределенную функцию просмотра состояния объектов, а также при вводе – выводе данных использовать функции обработки исключительных ситуаций. Используя стандартные файловые потоки, информацию об объектах вывести в файл.Для корректной работы с файлом использовать обработку исключительных ситуаций.

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
#include <iostream>
#include <string.h>
#include <conio.h>
#include <iomanip>
 
using namespace std;
 
class cMobil{
    public:
        virtual ~cMobil();          
        virtual void print();       
        static void PrintAll();
        static void DeleteAll();
        cMobil (const char *NAME);
        char* name;     //Наименование
        char firma[30]; //Фирма
        char standart[30];  //Стандарт связи
        int akm;        //Заряд аккумулятора
        int po;         //Потребление при ожидании
        int pr;         //Потребление при разговоре
    private:
        cMobil* next;
        static cMobil* first;   
};
 
class cTime: public cMobil{
    public:
        cTime (const char *NAME);
        void print();   
        friend float Run(int AKM,int PO);
        friend float Run1(int AKM,int PR);  
};
 
cMobil* cMobil::first=NULL;
 
cMobil::cMobil(const char *NAME){
    name = new char [strlen(NAME)+1];
    strcpy (name,NAME);
    cout<<"Firm: ";
    cin>>firma;
    cout<<"Standard connection: ";
    cin>>standart;
    cout<<"Battery charge: ";
    cin>>akm;
    cout<<"Consumption at expectation: ";
    cin>>po;
    cout<<"Consumption at conversation: ";
    cin>>pr;
    next=first;
    first=this;
    cout<<"\nData is accepted. Press any key to continue";
    getch();
    system("cls");
}
 
cMobil::~cMobil(){
    delete [] name;
}
 
float Run(int AKM, int PO){
    float rez = AKM / PO;
    return rez;
}
 
float Run1(int AKM,int PR){
    float rez = AKM / PR;
    return rez;
}
 
void cMobil::print(){
cout<<endl;
cout<<"|"<<setw(8)<<name<<"|"<<setw(8)<<firma<<"|"<<setw(19)<<standart<<"|"<<setw(14)<<akm<<"|"<<setw(26)<<po<<"|"<<setw(27)<<pr;
}
 
cTime::cTime(const char *NAME):cMobil(NAME)
    {
    //...
    }
 
void cTime::print(){
    cMobil::print();
    cout<<"|"<<setw(12)<<Run(akm,po)<<"|"<<setw(17)<<Run1(akm,pr)<<"|";
    cout<<endl;
    cout<<"--------------------------------------------------------------------------------------------------------------------------------------------";
}
 
void cMobil::PrintAll()
{
    cout<<"--------------------------------------------------------------------------------------------------------------------------------------------";
    cout<<endl;
    cout<<"|  Name  |  Firm  |Standard connection|Battery charge|Consumption at expectation|Consumption at conversation|Waiting time|Conversation time|";
    cout<<endl;
    cout<<"--------------------------------------------------------------------------------------------------------------------------------------------";
    cMobil* pMobil=first;
    while(pMobil)
    {
        pMobil->print();
        pMobil=pMobil->next;
    }
    cout<<"\nPress any key to continue";
    getch();
    system("cls");
}
 
 
int main()
    {
        int x;
        do{
            cout<<"\nSelect the menu item:"<<endl;
            cout<<"\n1 - Data input\n2 - Printing on screen\n3 - Print to file\n4 - Exit\n"<<endl;
            cout<<"You have chosen: ";
            cin>>x;
            switch (x)
            {
                case 1:
                    system("cls");
                    char name[100];
                    cout<<"Name: ";
                    cin>>name;
                    new cTime(name);
                    break;
                case 2:
                    system("cls");
                    cMobil::PrintAll();
                    break;
                case 3:
                    system("cls");
                    break;
            }
        }while(x!=4);
        return 0;
    }
Добавлено через 20 часов 51 минуту
Очень нужна помощь.

 Комментарий модератора 
Создавайте темы с осмысленными и понятными названиями - это серьезно повышает шансы, что на ваш вопрос ответят.
Запрещено создавать темы с бессмысленными названиями вроде "Помогите!", "Вопрос" и т.п.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2011, 11:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Абстрактный базовый класс и множественное наследование (либо иерархия классов) (C++):

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

Абстрактный класс, одиночное наследование, далее множественное - C++
Добрый вечер! никак не могу найти информацию о том, как правильно реализуется следующее действие: есть абстрактный класс А, от него...

Множественное наследование (Разработайте базовый класс CLIENT) - C++
Задание: Множественное наследование. Разработайте базовый класс CLIENT. Элемент класса: ФИО; количество поездок. ...

Иерархия классов и указатель на базовый класс - C++
Существует три класса, один наследуется от другого: class Base { public: virtual int WhoAmI const { return 0; }

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

Создать абстрактный базовый класс объектов на декартовой плоскости CShape и разработать иерархию классов конкретных фигур - C++
Создать абстрактный базовый класс объектов на декартовой плоскости CShape (фигура). Спроектировать и реализовать иерархию классов...

8
temask
0 / 0 / 0
Регистрация: 26.07.2010
Сообщений: 25
19.12.2011, 13:33  [ТС] #2
Что никто не знает?
0
absokolov
30 / 30 / 1
Регистрация: 10.05.2011
Сообщений: 120
19.12.2011, 13:40 #3
Все смотреть не стал!
Но я вижу что после "new cTime(name);" не происходит delete! Почему бы просто не создать объект класса?
0
temask
0 / 0 / 0
Регистрация: 26.07.2010
Сообщений: 25
19.12.2011, 13:46  [ТС] #4
Цитата Сообщение от absokolov Посмотреть сообщение
Все смотреть не стал!
Но я вижу что после "new cTime(name);" не происходит delete! Почему бы просто не создать объект класса?
cMobil::~cMobil(){
delete [] name;
}
0
absokolov
30 / 30 / 1
Регистрация: 10.05.2011
Сообщений: 120
19.12.2011, 13:53 #5
Ну так это деструктор самого класса!
А кто вызовет этот самый деструктор?
При создании объекта типа "cMobil obj;" - компилятор сам вызовет деструктор! А вот ч-з "new" - позаботится от этом нужно Вам!
0
temask
0 / 0 / 0
Регистрация: 26.07.2010
Сообщений: 25
19.12.2011, 14:00  [ТС] #6
Цитата Сообщение от absokolov Посмотреть сообщение
Ну так это деструктор самого класса!
А кто вызовет этот самый деструктор?
При создании объекта типа "cMobil obj;" - компилятор сам вызовет деструктор! А вот ч-з "new" - позаботится от этом нужно Вам!
Как мне лучше исправить
0
absokolov
30 / 30 / 1
Регистрация: 10.05.2011
Сообщений: 120
19.12.2011, 14:15 #7
C++
1
cTime obj(name);
0
temask
0 / 0 / 0
Регистрация: 26.07.2010
Сообщений: 25
19.12.2011, 14:44  [ТС] #8
Цитата Сообщение от absokolov Посмотреть сообщение
C++
1
cTime obj(name);
1>d:\trposu\trposu\trposu.cpp(110): error C2512: cTime: нет подходящего конструктора по умолчанию
1>d:\trposu\trposu\trposu.cpp(128): error C2360: пропуск инициализации "obj" из-за метки "case"
1> d:\trposu\trposu\trposu.cpp(125): см. объявление "obj"
1>d:\trposu\trposu\trposu.cpp(132): error C2360: пропуск инициализации "obj" из-за метки "case"
1> d:\trposu\trposu\trposu.cpp(125): см. объявление "obj"
0
temask
0 / 0 / 0
Регистрация: 26.07.2010
Сообщений: 25
21.12.2011, 18:33  [ТС] #9
Помогите пожалуйста доделать программу!!!
0
21.12.2011, 18:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2011, 18:33
Привет! Вот еще темы с ответами:

Создать иерархию классов, представляющих простое наследование. Базовый класс – строка символов (char *) - C++
. Создать иерархию классов представляющих простое наследование. Базовый класс – строка символов (char *). Производный класс – методы,...

Наследование классов. Используя базовый класс Point {x, y, цвет} разработать производные классы механизма двигателя. - C++
Движок (двигатель с кривошипно-шатунным механизмом) Ребята, кто может, помогите очень надо! получу автоматом или пойду на экзамен, вот...

Множественное наследование классов - C++
Здравствуйте! Пытаюсь работать с наследованием, а конкретно со множественным наследованием классов. Есть базовый класс млекопитающих...

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


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

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

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