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

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

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

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


Мобильные телефоны (наименование, фирма, стандарт связи, заряд аккумулятора, потребление при ожидании, потребление при разговоре, время ожидания - функция 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.12.2011, 11:49
Ответы с готовыми решениями:

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

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

Множественное наследование. Иерархия классов
Создать классы фигура, четырехугольник, квадрат и прямоугольник. Создать из них иерархию....

Задача на множественное наследование, иерархия классов
Создать класс хвост, имеющий в качестве параметров длину и вид(строка). Определить конструкторы и...

8
0 / 0 / 0
Регистрация: 26.07.2010
Сообщений: 25
19.12.2011, 13:33  [ТС] 2
Что никто не знает?
0
31 / 31 / 3
Регистрация: 10.05.2011
Сообщений: 120
19.12.2011, 13:40 3
Все смотреть не стал!
Но я вижу что после "new cTime(name);" не происходит delete! Почему бы просто не создать объект класса?
0
0 / 0 / 0
Регистрация: 26.07.2010
Сообщений: 25
19.12.2011, 13:46  [ТС] 4
Цитата Сообщение от absokolov Посмотреть сообщение
Все смотреть не стал!
Но я вижу что после "new cTime(name);" не происходит delete! Почему бы просто не создать объект класса?
cMobil::~cMobil(){
delete [] name;
}
0
31 / 31 / 3
Регистрация: 10.05.2011
Сообщений: 120
19.12.2011, 13:53 5
Ну так это деструктор самого класса!
А кто вызовет этот самый деструктор?
При создании объекта типа "cMobil obj;" - компилятор сам вызовет деструктор! А вот ч-з "new" - позаботится от этом нужно Вам!
0
0 / 0 / 0
Регистрация: 26.07.2010
Сообщений: 25
19.12.2011, 14:00  [ТС] 6
Цитата Сообщение от absokolov Посмотреть сообщение
Ну так это деструктор самого класса!
А кто вызовет этот самый деструктор?
При создании объекта типа "cMobil obj;" - компилятор сам вызовет деструктор! А вот ч-з "new" - позаботится от этом нужно Вам!
Как мне лучше исправить
0
31 / 31 / 3
Регистрация: 10.05.2011
Сообщений: 120
19.12.2011, 14:15 7
C++
1
cTime obj(name);
0
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
0 / 0 / 0
Регистрация: 26.07.2010
Сообщений: 25
21.12.2011, 18:33  [ТС] 9
Помогите пожалуйста доделать программу!!!
0
21.12.2011, 18:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2011, 18:33
Помогаю со студенческими работами здесь

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

Множественное наследование (Разработайте базовый класс CLIENT)
Задание: Множественное наследование. Разработайте базовый класс CLIENT. Элемент класса: ...

Иерархия классов и указатель на базовый класс
Существует три класса, один наследуется от другого: class Base { public: virtual int...

Абстрактный класс,массив классов,наследование
Доброго времени суток,нужна помощь в решении вот такой задачки: 1)Создать абстрактный класс...


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

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

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