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

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

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

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

17.12.2011, 00:01. Просмотров 862. Ответов 8
Метки нет (Все метки)

Дано задание :Определите абстрактный базовый класс 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.
Заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2011, 00:01     Абстрактный базовый класс(задача)
Посмотрите здесь:

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

Абстрактный базовый класс - C++
У меня имеется свой некоторый класс, для которого переопределена куча операций, в том числе и операторы + - * /, преподаватель дал задание...

абстрактный базовый класс - C++
Создать абстрактный базовый класс с виртуальной функцией – объем. Создать производные классы: параллелепипед, пирамида, шар со своими...

Абстрактный базовый класс - C++
Создать абстрактный базовый класс с виртуальной функцией - объем. Создать производные классы: параллелепипед, пирамида, тетраэдр, шар со...

Абстрактный базовый класс - C++
Привет всем! У меня есть абстрактный базовый класс Object.Он содержит различные методы. Например, virtual void...

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

Реализовать абстрактный базовый класс «Фигура» - C++
Пожалуйста, помогите решить следующую задачу: Реализовать абстрактный базовый класс «Фигура», содержащий методы вычисления площади и...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,911
17.12.2011, 02:37     Абстрактный базовый класс(задача) #2
Цитата Сообщение от friman134 Посмотреть сообщение
Имеется наработка:
Это не наработка... Оформите для начала хотя бы класс Person.
friman134
0 / 0 / 0
Регистрация: 28.05.2011
Сообщений: 8
17.12.2011, 21:53  [ТС]     Абстрактный базовый класс(задача) #3
Задача в принципе работает как нужно, необходимо лишь добавить конструкцию, описанную в условии.
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,911
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
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,911
18.12.2011, 02:13     Абстрактный базовый класс(задача) #6
И тем не менее, код по-прежнему не соответствует заданию.
friman134
0 / 0 / 0
Регистрация: 28.05.2011
Сообщений: 8
18.12.2011, 03:00  [ТС]     Абстрактный базовый класс(задача) #7
Поэтому я и прошу Вашей помощи.
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,911
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++
Я создал абстрактный базовый класс (с названием Base) и два производных класса (с названиями Two и Three). После инициализации объектов...

Найдите ошибку в коде(абстрактный базовый класс) - C++
Задание:Создать абстрактный базовый класс Container с виртуальными функциями вставки и извлечения. Создать производные классы ...

Создать абстрактный базовый класс с виртуальной функцией - C++
Создать абстрактный базовый класс с виртуальной функцией – значением функций в заданной точке. Создать производные классы: класс степенных...

Создание объекта через указатель на базовый абстрактный класс - C++
Есть абстрактный класс, от него наследуется 3 класса. В программе предусмотрено создание нового объекта(добавление клиента страховой...

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


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

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

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