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

Определить иерархию классов для варианта "тест, экзамен, выпускной экзамен, испытание"

28.02.2015, 10:54. Показов 16517. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Порядок выполнения работы.
1. Определить иерархию классов (в соответствии с вариантом).
2. Определить в классе статическую компоненту - указатель на нача-
ло связанного списка объектов и статическую функцию для просмотра
списка.
3. Реализовать классы.
4. Написать демонстрационную программу, в которой создаются
объекты различных классов и помещаются в список, после чего список
просматривается.
5. Сделать соответствующие методы не виртуальными и посмотреть,
что будет.
6. Реализовать вариант, когда объект добавляется в список при соз-
дании, т.е. в конструкторе (смотри пункт 6 следующего раздела).
Методические указания.
1. Для определения иерархии классов связать отношением наследо-
вания классы, приведенные в приложении (для заданного варианта). Из
перечисленных классов выбрать один, который будет стоять во главе ие-
рархии. Это абстрактный класс.
2. Определить в классах все необходимые конструкторы и деструк-
тор.
3. Компонентные данные класса специфицировать как protected.
4. Пример определения статических компонентов:
static person* begin; // указатель на начало списка
static void print(void); // просмотр списка
5. Статическую компоненту-данное инициализировать вне определе-
ния класса, в глобальной области.
6. Для добавления объекта в список предусмотреть метод класса, т.е.
объект сам добавляет себя в список. Например, a.Add() •объект a добавля-
ет себя в список.
Включение объекта в список можно выполнять при создании объек-
та, т.е. поместить операторы включения в конструктор. В случае иерархии
классов, включение объекта в список должен выполнять только конструк-
тор базового класса. Вы должны продемонстрировать оба этих способа.
7. Список просматривать путем вызова виртуального метода Show
каждого объекта.
8. Статический метод просмотра списка вызывать не через объект, а
через класс.
9. Определение классов, их реализацию, демонстрационную про-
грамму поместить в отдельные файлы.
Содержание отчета.
1. Титульный лист: название дисциплины; номер и наименование ра-
боты; фамилия, имя, отчество студента; дата выполнения.
2. Постановка задачи. Следует дать конкретную постановку, т.е. ука-
зать, какие классы должны быть реализованы, какие должны быть в них
конструкторы, компоненты-функции и т.д.
3. Иерархия классов в виде графа.
4. Определение пользовательских классов с комментариями.
5. Реализация конструкторов с параметрами и деструктора.
6. Реализация методов для добавления объектов в список.
7. Реализация методов для просмотра списка.
8. Листинг демонстрационной программы.
9. Объяснение необходимости виртуальных функций. Следует пока-
зать, какие результаты будут в случае виртуальных и не виртуальных
функций.

Вариант задания: тест, экзамен, выпускной экзамен, испытание;

Вот набросал код, но не понятно со списком!

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
#include <iostream>
#include <string>
 
using namespace std;
 
class Isput
{
    string Isputuemui;
    float result;
public:
    static Isput *begin;
    Isput(string s, float m)
    {
        Isputuemui = s;
        result = m;
    }
    static void print()
    {
        cout << "Isputuemui: " << begin->Isputuemui << endl;
        cout << "Rezyltat istutaniya: " << begin->result << endl;
    }
    void Add()
    {
        
    }
    virtual void show() = 0;
    friend class Test;
};
 
int Isput::*begin = NULL;
 
 
 
class Test : public Isput 
{
    string name_test;
public:
    Test(string s, int m, char *name) : Isput(s, m)
    {
        name_test = name;
    }
    friend class Exzamen;
};
 
class Exzamen : public Test
{
    int col_biletov;
public:
    Exzamen(string s, int m, char *name, int col) : Test(s, m, name)
    {
        col_biletov = col;
    }
    friend class HeadExzamen;
};
 
class HeadExzamen : public Exzamen
{
    int god_vupyska;
public:
    HeadExzamen(string s, int m, char *name, int col, int god) : Exzamen(s, m, name, col)
    {
        god_vupyska = god;
    }
};
 
void main()
{
    system("pause");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2015, 10:54
Ответы с готовыми решениями:

Организовать иерархию классов: тест, экзамен, выпускной экзамен, испытание
Организовать иерархию классов: тест, экзамен, выпускной экзамен, испытание. Определить...

Иерархия классов: Тест, Экзамен, Выпускной экзамен, Испытание
У меня такое задание по С++ а я в нем не дупля. Кто может сделать это задание. Буду очень...

Требуется описать базовый и производные классы: Тест, экзамен, выпускной экзамен, испытание
Требуется описать базовый и производные классы. Базовый класс (возможно, абстрактный) с помощью...

Иерархия классов Тест, экзамен, испытание
Разработать иерархию классов. Выделить родительский класс. Описать конструкторы в каждом классе....

Паскаль!циклы и одномерный массив. На экзамен нужно срочно.!!не могу сдать экзамен
СРОЧНО!ПОМОГИТЕ ПОЖАЛУЙСТА РЕШИТЬ ЗАДАЧУ В ПАСКАЛЕ НА ЦИКЛЫ И ОДНОМЕРНЫЙ МАССИВ.ЭКЗАМЕН НЕ могу...

5
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
28.02.2015, 11:15 2
Цитата Сообщение от Vladislav233 Посмотреть сообщение
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
#include <iostream>
#include <list>
#include <string>
using namespace std;
 
class ICanReturnInfo
{
public:
    virtual void info() = 0;
};
class Rectangle : public ICanReturnInfo
{
private:
    int m_width = 0;
    int m_height = 0;
public:
    Rectangle(const int width, const int height)    :
        m_width(width),
        m_height(height)
    {
 
    }
    virtual void info()
    {
        cout << "<<<<<< " << "I am Rectangle. With width " << m_width << " and height " << m_height << ". Area" << m_width*m_height << endl;
    }
 
};
 
class IPhone : public ICanReturnInfo
{
private:
    string m_str;
    int m_price = 0;
public:
    IPhone(const int price, string str) :
        m_price(price),
        m_str(str)
    {
    
    }
    virtual void info()
    {
        cout << "<<<<<< " << "I am IPhone. My price is " << m_price << " dollars. " << "Details: " << m_str << endl;
    }
 
};
int main()
{
    std::list<ICanReturnInfo*> arr;
 
    arr.push_back(new Rectangle(20, 17));
    arr.push_back(new IPhone(1100, "Buy it now in Canada for 999$."));
 
    int counter = 1;
    if ( !arr.empty() )
    {
        for ( auto it = arr.begin(); it != arr.end(); it++ )
        {
            cout << "List Element #" << counter << ":" << endl;
            (*it)->info();
            counter++;
        }
    }
}
0
1 / 1 / 0
Регистрация: 29.09.2013
Сообщений: 40
28.02.2015, 11:23  [ТС] 3
но как это применить в моем задании?
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
28.02.2015, 11:26 4
Давайте я лучше полностью задание выполню для вас?
0
1 / 1 / 0
Регистрация: 29.09.2013
Сообщений: 40
28.02.2015, 11:45  [ТС] 5
ну хотя бы можете обьяснить зачем эти статические данные и статическая функция нужна?
0
1 / 1 / 0
Регистрация: 15.05.2015
Сообщений: 1
15.05.2015, 19:25 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
#include <iostream>
#include <conio.h>
#include <string>
 
using namespace std;
 
class Publication{
    protected:
        string name;
 
    public:
        static Publication * begin;
        Publication * next;
        
        static void add(Publication *cur){
            cur->next = begin;
            begin = cur;
        }
        
        Publication(){
            add(this);
        }
         
    virtual void show(){
        cout << "Name: " << name << endl;
        cout << "----------------------------" << endl;
    }
    
    virtual void set_parameters(){
        string s;
        
        cout << "Name: ";
        cin >> s;
        
        name = s;
    }
    
    virtual void print() {
        Publication *l = begin;
        
        while (l) {
            l->show();
            l = l->next;
        }
    }
};
 
        Publication * Publication::begin;
 
class Book: public Publication{
    protected:
        int pages;
        string author;
 
    public:
        Book():Publication(){}
        
        void show() {
            cout << "Name: " << name << endl;
            cout << "Pages: " << pages << endl;
            cout << "Author: " << author << endl;   
            cout << "----------------------------" << endl;
        }
        
        void set_parameters() {
            int k;
            string s, a;
            
            cout << "Name: ";
            cin >> s;
            
            cout << "Author: ";
            cin >> a;
 
            cout << "Pages: ";
            cin>>k;
 
            name = s;
            author = s;
            pages=k;
        }
     
};
 
class Magazine: public Publication{
    protected:
        int pages;
        int mon;
        int year;
 
    public:
        Magazine():Publication(){}
        
        void show(){
            cout << "Name: " << name << endl;
            cout << "Pages: " << pages << endl;
            cout << "Data: " << mon << "." << year << endl; 
            cout << "----------------------------" << endl;
        }
 
        void set_parameters(){
            int n, m, y;
            string s;
            
            cout << "Name: ";
            cin >> s;
            
            cout << "Pages: ";
            cin >> n;
            
            cout << "Month: ";
            cin>>m;
            
            cout << "Year: ";
            cin>>y;
            
            name = s;
            pages = n;
            year = y;
            mon = m;
        }
};
 
class Textbook: public Publication{
    public:
        Textbook():Publication(){} 
};
 
int main(){
    Publication::begin = 0;
    Publication publication;
    Book book;
    Magazine magazine;
    Textbook textbook;
 
    cout << "Publication" << endl;
    publication.set_parameters();
    
    cout << "Book" << endl;
    book.set_parameters();
    
    cout << "Magazine" << endl;
    magazine.set_parameters();
    
    cout << "Textbook" << endl;
    textbook.set_parameters();
    
    cout << "============================" << endl;
    cout << "All PUBLICATION" << endl;
    cout << "============================" << endl;
 
    publication.print();
    
    getch();
    return 0;    
}
1
15.05.2015, 19:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2015, 19:25
Помогаю со студенческими работами здесь

Я первокурсник ВУЗА. Что нужно знать чтобы сдать экзамен по Делфи 7. Первый экзамен в жизни
Здравствуйте. Что нужно знать чтобы сдать первый экзамен по Делфи 7. Расскажите, что лучше выучить...

тест на экзамен паскаль
Последовательность переменных A,B,C является упорядоченной по возрастанию при выполнении условия:...

Какова вероятность того, что студент сдаст экзамен (не сдаст экзамен)
Студент знает 10 вопросов из 22. В билете 3 вопроса. Чтобы сдать экзамен, надо ответить хотя бы на...

Определить комбинированный тип для представления следующих данных: экзамен
Вот задача. Определить комбинированный тип для представления следующих данных: экзамен (предмет,...

Разработать иерархию классов с множественным наследованием в соответствии с индивидуального варианта
Разработать иерархию классов с множественным наследованием в соответствии с индивидуального...


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

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

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