Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/34: Рейтинг темы: голосов - 34, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 07.01.2012
Сообщений: 9
1

Создание класса "Фильм"

07.01.2012, 19:14. Показов 6243. Ответов 26
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите, пожалуйста!!!

Нужно сделать следующее:

1.Построить класс
Фильм (со свойствами):
название фильма,
длительность (кол-во мин),
жанр.
Реализовать следующие методы класса:
вернуть жанр фильма,
вернуть длительность фильма,
показать всю информацию о фильме.

Построить двух наследников данного класса.
2.Художественный фильм (со своим атрибутом):
Фамилия режиссёра фильма
методами:
вернуть фамилию режиссера,
показать всю информацию о художественном фильме (произвести замещение данного метода с учетом нового атрибута).
В классе Художественный фильм создать специальный закрытый атрибут (и метод печатающий значение данного атрибута), значение которого отражает количество объектов класса Художественный фильм функционирующих в программе.


3.Класс
Документальный фильм (со своим атрибутом):
возрастная категория.
Выполнить замещение метода печатающие все свойства фильма, с учетом нового атрибута.

Вроде построил класс (для 1 "фильмы"), но не могу понять как действует конструктор и деструктор
и методы класа тоже понял расплывчато.

Помогите хотябы с одним классом, чтобы я понял как это все работае.

p.s. Зарание спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.01.2012, 19:14
Ответы с готовыми решениями:

Создание класса "Фильм"
Здравствуйте,сразу хочу сказать что увлекаюсь C++, а C# мне вообще не интересен.Но задали вот такое...

Ищу фильм найти фильм
Привет, помогите найти фильм. Помню его ещё давно смотрел, может год 2012 или раньше. Что помню:...

Создание экземпляра класса-наследника для переменной с типом базового класса
Подскажите чайнику как создается экземпляр класса BC BaseClass BC = new DerivedClass(); ...

Подскажите пожалуйста, программа на создание класса и переопределение функций класса Object
Реализовать класс множество целых чисел, содержащий функции добавления и удаления элемента,...

26
Полярный
476 / 448 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
07.01.2012, 19:34 2
Вот первое задание:
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
#include <iostream.h>
#include <conio.h>
 
class movie
{
   public:
 
   movie(const char * = 0, int = 0, const char * = 0);
 
   const char * getName()
   {
      return name;
   }
 
   int getLength()
   {
      return length;
   }
 
   const char * getJanr ()
   {
      return janr;
   }
 
   void setJanr(const char *);
   void setLength(int);
   void setName(const char *);
 
   void print()
   {
      cout << "Name = " << name << endl;
      cout << "Janr = " << janr << endl;
      cout << "Length = " << length << endl;
   }
 
   private:
 
   char name[30];
   char janr[30];
   int length;
}
 
movie::movie (const char * _name, int _l, const char * _janr)
{
   setJanr(_janr);
   setName(_name);
   setLength(_l);
}
 
void movie::setLength(int x) {length = x;}
main ()
{
   movie m("Titanik", 2000, "Drama");
 
   getch();
 
   return 0;
}
Правда не описал пока функции setName, SetJanre. Но тут знания классов особо не надо, делаете как и функцию setLength. Но всё же думаю, для понимания вам следует почитать литературу.
0
0 / 0 / 0
Регистрация: 07.01.2012
Сообщений: 9
07.01.2012, 19:40  [ТС] 3
Спасибо, сейчас по разбираюсь.

Литературу читал: Учусь по книге "С++ для чайников". Может посоветуете что-нибудь, буду рад!
0
Полярный
476 / 448 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
07.01.2012, 19:42 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
66
67
68
69
70
71
72
#include <iostream.h>
#include <conio.h>
#include <string.h>
 
class movie
{
   public:
 
   movie(const char * = 0, int = 0, const char * = 0);
 
   const char * getName()
   {
      return name;
   }
 
   int getLength()
   {
      return length;
   }
 
   const char * getJanr ()
   {
      return janr;
   }
 
   void setJanr(const char *);
   void setLength(int x) {length = x;}
   void setName(const char *);
 
   void print()
   {
      cout << "Name = " << this->getName() << endl;
      cout << "Janr = " << this->getJanr() << endl;
      cout << "Length = " << this->getLength() << endl;
   }
 
   private:
 
   char name[30];
   char janr[30];
   int length;
}
 
movie::movie (const char * _name, int _l, const char * _janr)
{
   setJanr(_janr);
   setName(_name);
   setLength(_l);
}
 
void movie::setJanr(const char *j)
{
   for (int i = 0; i <= strlen(j); i++)
      janr[i] = j[i];
}
 
void movie::setName (const char * n)
{
   for (int i = 0; i <= strlen(n); i++)
      name[i] = n[i];
}
 
main ()
{
   movie m("Titanik", 2000, "Drama");
 
   m.print();
 
   getch();
 
   return 0;
}
Сам учил по Дейтелам
0
0 / 0 / 0
Регистрация: 07.01.2012
Сообщений: 9
07.01.2012, 19:57  [ТС] 5
попробовал откампилить на dev cpp. ругается на

C++
1
2
movie::movie (const char * _name, int _l, const char * _janr)
{
говорит, что новый тип не может быть определен в типе выхода
0
Полярный
476 / 448 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
07.01.2012, 20:05 6
попробуйте
C++
1
void movie::movie (const char * _name, int _l, const char * _janr)
А на остальные функции не ругаецца? Просто я на борланде пишу.

Цитата Сообщение от Gambit_d.s Посмотреть сообщение
говорит, что новый тип не может быть определен в типе выхода
Не встречал
0
0 / 0 / 0
Регистрация: 07.01.2012
Сообщений: 9
07.01.2012, 20:12  [ТС] 7
пишет следуюшее:

new types may not be defined in a return type
return type specification for constructor invalid


с void:

new types may not be defined in a return type
two or more date types in declaration of `movie'
return type specification for constructor invalid

на остольное не реагирует
0
Полярный
476 / 448 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
07.01.2012, 20:16 8
Так, попробуйте в описании класса, после метки public: написать void, вот так:
C++
1
void movie(const char * = 0, int = 0, const char * = 0);
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.01.2012, 20:18 9
После объявления класса должна быть точка с запятой
1
Полярный
476 / 448 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
07.01.2012, 20:19 10
Цитата Сообщение от soon Посмотреть сообщение
После класса должна быть точка с запятой
Точноманамана!
0
0 / 0 / 0
Регистрация: 07.01.2012
Сообщений: 9
07.01.2012, 20:28  [ТС] 11
Все верно с " ; " все роботае!
Огромное спасибо!!!

Теперь объясните дураку где здесь конструктор,а где деструктор?
0
Полярный
476 / 448 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
07.01.2012, 20:29 12
Конструктор вот:
C++
1
movie(const char * = 0, int = 0, const char * = 0);
Деструктор здесь не требуется, но всё таки создаётся автоматически, пустым.
0
0 / 0 / 0
Регистрация: 07.01.2012
Сообщений: 9
07.01.2012, 20:46  [ТС] 13
А методы?
я так понимаю. что метод тут только один?
"Вся информация о фильме"

Добавлено через 4 минуты
Методы уже дабавил ...
0
Полярный
476 / 448 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
07.01.2012, 20:48 14
Нет, setName, getName, setJanr, getJanr, print, setLength, getLength и т. д. - это всё методы

Добавлено через 53 секунды
Цитата Сообщение от Gambit_d.s Посмотреть сообщение
Методы уже дабавил ...
Куда? Я же вроде норм написал всё?
0
0 / 0 / 0
Регистрация: 07.01.2012
Сообщений: 9
07.01.2012, 21:00  [ТС] 15
Кажется понял
Сейчас все верну назад

Добавлено через 4 минуты
Не хочу показаться наглым, но
можно хотябы синтаксис, как сделать наследника класса
0
Полярный
476 / 448 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
07.01.2012, 21:05 16
Так:
C++
1
2
3
4
class Supervisor: public movie
{
    Supervisor (const char *name...blablabla): movie(name..blablabla) //Короче это пример вызова конструктора movie из класса дочернего Supervisor
};
1
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.01.2012, 21:21 17
На всякий случай
Чтобы наследники могли "видеть" закрытые элементы родителя, их(элементы) нужно поместить в секцию protected
0
Полярный
476 / 448 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
07.01.2012, 21:39 18
Цитата Сообщение от soon Посмотреть сообщение
Чтобы наследники могли "видеть" закрытые элементы родителя
А зачем им их видеть? Базовый класс оборудован для их управления всем чем нужно(особенно если сделать парочку проверок). Зачем забивать голову этим для незачем?
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
07.01.2012, 21:55 19
Цитата Сообщение от dimcoder Посмотреть сообщение
А зачем им их видеть?
А зачем тогда наследовать? С тем же успехом можно создать в новом классе экземпляр "базового" и через него работать.
0
Полярный
476 / 448 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
08.01.2012, 10:07 20
Цитата Сообщение от soon Посмотреть сообщение
А зачем тогда наследовать?
Что значит зачем наследовать? Хотите сказать, что если будете использовать protected-наследование, будет лучше? Это нарушение инкапсуляции.
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
#include <iostream.h>
#include <conio.h>
#include <string.h>
 
class movie
{
   public:
 
   movie(const char * = 0, int = 0, const char * = 0);
 
   const char * getName()
   {
      return name;
   }
 
   int getLength()
   {
      return length;
   }
 
   const char * getJanr ()
   {
      return janr;
   }
 
   void setJanr(const char *);
   void setLength(int x) {length = (x > 0) ? x : 0;}
   void setName(const char *);
 
   void print()
   {
      cout << "Name = " << this->getName() << endl;
      cout << "Janre = " << this->getJanr() << endl;
      cout << "Length = " << this->getLength() << endl;
   }
 
   private:
 
   char name[30];
   char janr[30];
   int length;
};
 
movie::movie (const char * _name, int _l, const char * _janr)
{
   setJanr(_janr);
   setName(_name);
   setLength(_l);
}
 
void movie::setJanr(const char *j)
{
   for (int i = 0; i <= strlen(j); i++)
      janr[i] = j[i];
}
 
void movie::setName (const char * n)
{
   for (int i = 0; i <= strlen(n); i++)
      name[i] = n[i];
}
 
 
class ArtFilm: public movie
{
   public:
 
   ArtFilm(const char * _name, int _l, const char * _janr, const char * _supName):
      movie(_name, _l, _janr)
   {
      setSupName(_supName);
   }
 
   void setSupName(const char *);
 
   const char * getSupName() {return supName;}
 
   void print()
   {
      movie::print();
      cout << "Supervisor name is " << getSupName() << endl;
   }
 
   private:
 
   char supName[30];
};
 
 
void ArtFilm::setSupName(const char * _supName)
{
   for (int i = 0; i <= strlen(_supName); i++)
      supName[i] = _supName[i];
}
 
main ()
{
   clrscr();
 
   movie m("Titanik", 300, "Drama");
   ArtFilm n("2012", 180, "Action", "James Cameron");
 
   m.print();
 
   cout << endl;
 
   n.setName("20012");   //Пример доступа к закрытым элементам базового класса
 
   n.print();
 
   getch();
 
   return 0;
}
Цитата Сообщение от soon Посмотреть сообщение
С тем же успехом можно создать в новом классе экземпляр "базового" и через него работать.
Я весь внимания.
0
08.01.2012, 10:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.01.2012, 10:07
Помогаю со студенческими работами здесь

Создание объекта класса с полем являющимся объектом другого класса
Bill a; cin&gt;&gt;a;//тут я ввел с помощью перегруженного оператора ElementSpiska c; //поля у...

Создание своего класса кнопки с использованием наследования от класса UserControl
Ребят, помогите, такая проблема: создаю класс MyButton в C# при помощи наследования от класса...

Явное создание экземпляра класса и явная специализация шаблона класса
Всем добрый день! Не могу разобраться - эти две технологии дают один и тот же результат? В каких...

Создание указателя типа базового класса на экземпляр производного класса
Добрый день! Иногда видел коды, где создавался указатель типа базового класса на объект класса -...

Возможно ли создание объекта шаблонного класса в функции этого класса?
Доброго времени суток, уважаемые форумчане :) Мне по лабам задали задание - реализовать шаблон...

Построение описания класса, создание и уничтожение объектов этого класса
Построить описание класса, содержащего информацию о почтовом адресе организации. Предусмотреть...


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

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