Задача стоит таким образом:
1.Построить класс
Фильм (со свойствами): название фильма, длительность (кол-во мин), жанр. Реализовать следующие методы класса: вернуть жанр фильма, вернуть длительность фильма, показать всю информацию о фильме.
Построить двух наследников данного класса.
1)Художественный фильм (со своим атрибутом):Фамилия режиссёра фильма и методами: вернуть фамилию режиссера, показать всю информацию о художественном фильме (произвести замещение данного метода с учетом нового атрибута).
2)Документальный фильм (со своим атрибутом):возрастная категория.Выполнить замещение метода печатающие все свойства фильма, с учетом нового атрибута.
В классе Художественный фильм создать специальный закрытый атрибут (и метод печатающий значение данного атрибута), значение которого отражает количество объектов класса Художественный фильм функционирующих в программе.
Вот мой код
файл main
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| #include <iostream>
#include "Film.h"
using namespace std;
int main()
{
Film A("Forsag", 15, "Gonki");
HudFilm B("Vojna", 20, "Boevic", "Kostyrko");
DocFilm C("Stalin", 30, "Doc", 20);
A.AllInfo();
cout << endl;
B.AllInfo();
C.AllInfo();
system("pause");
return 0;
} |
|
файл Film.h
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
| #pragma once
class Film
{
protected:
char *Title; //Название фильма
int Time; //Длительность фильма в минутах
char *Genry; //Жанр фильма
public:
Film(void); //Конструктор по умолчанию
Film(char *, int, char*); //Явный конструктор
char* GetGenry();//Возвращаем жанр
int GetTime(); //Возвращаем время
void AllInfo(); //Показываем всю информацию
~Film(void); //Диструктор
};
class HudFilm: public Film
{
char *Surname; //Фамилия
public:
HudFilm(); //Конструктор по умолчанию
HudFilm(char *, int, char *, char*);//Конструктор явный
char* GetSurname();//Вернуть фамилию
void AllInfo(); //Показать всю информацию фильма
};
class DocFilm: public Film
{
int VZC; //Возрастная категория
public:
DocFilm();
DocFilm(char *, int, char *, int);
void AllInfo();
int GetVozrCateg();
}; |
|
файл Film.cpp
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
| #include "Film.h"
#include <iostream>
using namespace std;
const int n=30;
//КОНСТРУКТОР ПО УМОЛЧАНИЮ
Film::Film(void)
{
Title = new char[n]; //Название
Title = "None";
Genry = new char[n]; //Жанр
Genry = "None";
Time = 0; //Время
}
//ЯВНЫЙ КОНСТРУКТОР
Film::Film(char *title, int time, char *genry)
{
Title = new char[n];
strcpy(Title,title);
Genry = new char[n];
strcpy(Genry, genry);
Time = time;
}
//ВОЗВРАЩАЕМ ЖАНР ФИЛЬМА
char* Film::GetGenry()
{
return Genry;
}
//ВОЗВРАЩАЕМ ВРЕМЯ ФИЛЬМА
int Film::GetTime()
{
return Time;
}
//ПОКАЗЫВАЕМ ВСЮ ИНФОРМАЦИЮ О ФИЛЬМЕ
void Film::AllInfo()
{
cout << this->Title << " ";
cout << this->Time << " ";
cout << this->Genry << endl;
}
//Диструктор
Film::~Film(void)
{
delete [] Title;
delete [] Genry;
}
//////////////////////////////////////////////////////////
//Конструктор явный
HudFilm::HudFilm(char *title, int time, char *genry, char *surname)
{
Title = new char[n];
strcpy(Title,title);
Genry = new char[n];
strcpy(Genry, genry);
Surname = new char[n];
strcpy(Surname, surname);
Time = time;
}
HudFilm::HudFilm()
{
Title = new char[n]; //Название
Title = "None";
Genry = new char[n]; //Жанр
Genry = "None";
Time = 0; //Время
Surname = new char[n];
Surname = "None"; //Фамилия
}
char* HudFilm::GetSurname()
{
return Surname;
}
void HudFilm::AllInfo()
{
cout << Title << " ";
cout << Time << " ";
cout << Genry << " ";
cout << Surname << endl;
}
////////////////////////////////////////
DocFilm::DocFilm()
{
Title = new char[n]; //Название
Title = "None";
Genry = new char[n]; //Жанр
Genry = "None";
Time = 0; //Время
VZC = 18;
}
DocFilm::DocFilm(char *title, int time, char *genry, int vzc)
{
Title = new char[n];
strcpy(Title,title);
Genry = new char[n];
strcpy(Genry, genry);
VZC = vzc;
Time = time;
}
void DocFilm::AllInfo()
{
cout << Title << " ";
cout << Time << " ";
cout << Genry << " ";
cout << VZC << endl;
} |
|
Что я не знаю как делать:
1)как сделать замещение с новым атрибутом, это для меня потёмки... Сколько раз уже не объясняли, так я и не понял. Скажите, плз, на простом языке, что это такое и зачем оно нужно и как это использовать конкретно в этой программе.
2) Просто скопирую: "В классе Художественный фильм создать специальный закрытый атрибут (и метод печатающий значение данного атрибута), значение которого отражает количество объектов класса Художественный фильм функционирующих в программе." - вот это тоже не знаю как сделать..
Подскажите, заранее буду благодарен!)