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

Абстрактный базовый класс(задача) - C++

Восстановить пароль Регистрация
 
friman134
0 / 0 / 0
Регистрация: 28.05.2011
Сообщений: 8
17.12.2011, 00:01     Абстрактный базовый класс(задача) #1
Дано задание :Определите абстрактный базовый класс Person,содержащий поля "пол","возраст". Затем определите производный класс Student, описывающий типичного студента (курс, группа, номер в журнале). В заключении выведите из класса student класс GradStudent, описывающий типичного аспиранта (средний балл). Проинициализируйте через конструктор поля классов данными.Объявите экземпляр класса GradStudent.

Имеется наработка:
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
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
class Person{
public:
virtual char sub(char a){return(a);}
virtual int voz(int b){return(b);}
virtual int curs(int c){return(c);}
virtual int group(int d){return(d);}
virtual int nom(int e){return(e);}
 
};
class Student:public Base{};
class GradStudent:public Base{
virtual char sub(char a){return(a);}
};
void main(){
clrscr();
char a;
int b,c,e,d;
cout<<"V-v pol             : ";
cin>>a;
cout<<"V-v vozrost         : ";
cin>>b;
cout<<"V-v curs            : ";
cin>>c;
cout<<"V-v group, nom po g.: ";
cin>>d>>e;
Person *polimorf=new Student;
cout<<"Pol: "<<polimorf->sub(a)<<endl;
cout<<"Vozrost: "<<polimorf->voz(b)<<endl;
cout<<"Curs: "<<polimorf->curs(c)<<endl;
cout<<"Group: "<<polimorf->group(d)<<endl;
cout<<"Nomer :"<<polimorf->nom(e)<<endl;
polimorf=new GradStudent;
getch();
}
Необходимо добавить конструктор и вывести из класса student класс GradStudent.
Заранее спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
17.12.2011, 02:37     Абстрактный базовый класс(задача) #2
Цитата Сообщение от friman134 Посмотреть сообщение
Имеется наработка:
Это не наработка... Оформите для начала хотя бы класс Person.
friman134
0 / 0 / 0
Регистрация: 28.05.2011
Сообщений: 8
17.12.2011, 21:53  [ТС]     Абстрактный базовый класс(задача) #3
Задача в принципе работает как нужно, необходимо лишь добавить конструкцию, описанную в условии.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
18.12.2011, 00:08     Абстрактный базовый класс(задача) #4
Цитата Сообщение от friman134 Посмотреть сообщение
Задача в принципе работает как нужно, необходимо лишь добавить конструкцию, описанную в условии.
Задача вообще никак не работает... Помимо того, что этот код не будет скомпилирован(что такое у вас Base?), он ещё и не соотвествует заданию. Поэтому, повторюсь, выполните для начала хотя бы эту часть
Определите абстрактный базовый класс Person,содержащий поля "пол","возраст".
friman134
0 / 0 / 0
Регистрация: 28.05.2011
Сообщений: 8
18.12.2011, 00:32  [ТС]     Абстрактный базовый класс(задача) #5
Цитата Сообщение от rangerx Посмотреть сообщение
что такое у вас Base?
Пардон, в изначальном варианте базовый класс имел название "Base".

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
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
class Person{
public:
virtual char sub(char a){return(a);}
virtual int voz(int b){return(b);}
virtual int curs(int c){return(c);}
virtual int group(int d){return(d);}
virtual int nom(int e){return(e);}
 
};
class Student:public Person{};
class GradStudent:public Person{
virtual char sub(char a){return(a);}
};
void main(){
clrscr();
char a;
int b,c,e,d;
cout<<"V-v pol             : ";
cin>>a;
cout<<"V-v vozrost         : ";
cin>>b;
cout<<"V-v curs            : ";
cin>>c;
cout<<"V-v group, nom po g.: ";
cin>>d>>e;
Person *polimorf=new Student;
cout<<"Pol: "<<polimorf->sub(a)<<endl;
cout<<"Vozrost: "<<polimorf->voz(b)<<endl;
cout<<"Curs: "<<polimorf->curs(c)<<endl;
cout<<"Group: "<<polimorf->group(d)<<endl;
cout<<"Nomer :"<<polimorf->nom(e)<<endl;
polimorf=new GradStudent;
getch();
}
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
18.12.2011, 02:13     Абстрактный базовый класс(задача) #6
И тем не менее, код по-прежнему не соответствует заданию.
friman134
0 / 0 / 0
Регистрация: 28.05.2011
Сообщений: 8
18.12.2011, 03:00  [ТС]     Абстрактный базовый класс(задача) #7
Поэтому я и прошу Вашей помощи.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
18.12.2011, 20:14     Абстрактный базовый класс(задача) #8
Хоть мне и не понятно зачем классу Person быть абстрактным, сделал ровно то, что требовалось по заданию:
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
#include <string>
#include <iostream>
 
enum TGender { gnMale, gnFemale };
 
class Person
{
    protected:
        TGender gender_;
        int age_;
 
    public:
        Person(TGender gender, int age)
            : gender_(gender),
              age_(age)
        {
        }
 
        TGender Gender() const
        {
            return gender_;
        }
 
        int Age() const
        {
            return age_;
        }
 
        virtual ~Person() = 0;
};
 
Person::~Person()
{
}
 
class Student : public Person
{
    protected:
        int year_;
        std::string group_;
        int num_;
 
    public:
        Student(TGender gender, int age, int year, const std::string& group, int num)
          : Person(gender, age),
            year_(year),
            group_(group),
            num_(num)
        {
 
        }
 
        int Year() const
        {
            return year_;
        }
 
        std::string Group() const
        {
            return group_;
        }
 
        int Num() const
        {
            return num_;
        }
};
 
class GradStudent : public Student
{
    protected:
        double average_;
 
    public:
        GradStudent(TGender gender, int age, int year, const std::string& group, int num, double average)
            : Student(gender, age, year, group, num),
              average_(average)
        {
 
        }
 
        double Average() const
        {
            return average_;
        }
};
 
int main()
{
    GradStudent gradStudent(gnMale, 20, 1, "abc", 1, 4.5);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2011, 00:02     Абстрактный базовый класс(задача)
Еще ссылки по теме:

Абстрактный базовый класс C++
C++ Создать абстрактный базовый класс
C++ Создать абстрактный базовый класс и производные

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

Или воспользуйтесь поиском по форуму:
friman134
0 / 0 / 0
Регистрация: 28.05.2011
Сообщений: 8
19.12.2011, 00:02  [ТС]     Абстрактный базовый класс(задача) #9
rangerx, большое Вам спасибо.
Yandex
Объявления
19.12.2011, 00:02     Абстрактный базовый класс(задача)
Ответ Создать тему
Опции темы

Текущее время: 22:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru