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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
Gambit_d.s
0 / 0 / 0
Регистрация: 07.01.2012
Сообщений: 9
#1

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

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

Помогите, пожалуйста!!!

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

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

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


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

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

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

p.s. Зарание спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2012, 19:14     Создание класса "Фильм"
Посмотрите здесь:

Переопределение операторов, создание класса "Матрица" - C++
Здравствуйте, нужна помощь, уже очень долго не могу понять в чём проблема. Создал класс матрица, не работает простой код. Проблема в...

Создание динамических массивов внутри класса: Нарушение прав доступа при чтении "0xbf800000" - C++
столкнулся с непонятной для меня бедой. Если код написать внутри главной функции то всё работает. Но если попытаться перенести работу в...

Создание класса "Комплексные числа" - C++
#include <iostream> #include <cmath> class Complex { private: double real; double image; public: Complex(double r,...

Создание класса "точка на плоскости" - C++
Создать класс "точка на плоскости". Данные класса должны быть представлены 2мя полями: координатами точки. Класс должен содержать...

Создание и использование класса "Аквариум" - C++
Помогите с реализацией . Класс создан , а дальше немного непонятно . Класс Аквариум Скрытые поля: • Номер по порядку (назначается...

Добавление в файл и удаление из файла записей о объектах структуры "Фильм" - C++
#include <iostream> #include <stdio.h> #include <string.h> #include <stdlib.h> using namespace std ; int const col=4; struct...

Создание класса "Окружность" - C++
Создать класс типа - окружность. Поля - радиус. Функции-члены вычисляют площадь, длину окружности, устанавливает поля и возвращают...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
08.01.2012, 10:27     Создание класса "Фильм" #21
Цитата Сообщение от dimcoder Посмотреть сообщение
Это нарушение инкапсуляции.
Не смертельно. Непосредственно через объект все равно нет доступа.

Цитата Сообщение от dimcoder Посмотреть сообщение
Я весь внимания.
Создайте 2 класса, в один поместите экземпляр другого. Так сложно? Но так никто не делает, потому что пришось бы 2 раза объявлять одни и те-же функции для доступа к приватным.

А теперь представьте, что вам понадобилось в классе-наследнике изменить приватную переменную базового класса. Что вы предпочтете, объявить ее в protected в базовом, или в производном писать var.setNum(var.getNum() * var.getNum())? А если это не одна переменная?
dimcoder
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
08.01.2012, 10:44     Создание класса "Фильм" #22
Цитата Сообщение от soon Посмотреть сообщение
понадобилось в классе-наследнике изменить приватную переменную базового класса.
Для этого существует интерфейс класса - функции-элементы. Пример - 20 пост, 107 строка кода. А если надо просто изменить закрытую переменную и не получается через интерфейс, значит вы это не сделаете никак через дочерний класс. Если я ошибаюсь, приведите пример пожалуйста.

Добавлено через 1 минуту
Цитата Сообщение от soon Посмотреть сообщение
Создайте 2 класса, в один поместите экземпляр другого. Так сложно? Но так никто не делает, потому что пришось бы 2 раза объявлять одни и те-же функции для доступа к приватным.
Не могу не согласиться, но раннее вы написали:
Цитата Сообщение от soon Посмотреть сообщение
С тем же успехом можно создать в новом классе экземпляр "базового" и через него работать.
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
08.01.2012, 11:04     Создание класса "Фильм" #23
dimcoder, soon, Простите что вмешиваюсь, вы зачем путаете мухи с котлетами? Включение объектов другого класса в качестве членов класса называется композицией или агрегированием. Это вообще никак нельзя даже сравнивать с наследованием потому что нет ничего общего. has-a relationship не есть is-a relationship
Одно для одних задач другое для других. Все зависит от архитектуры которую требуется создать для решения задачи.
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
08.01.2012, 11:10     Создание класса "Фильм" #24
Я и не отрицал, что так будет работать. Но почему ArtFilm не может видеть name, janre, length напрямую? Ведь по сути, они принадлежат ему.

Цитата Сообщение от dimcoder Посмотреть сообщение
Если я ошибаюсь, приведите пример пожалуйста.
Не ошибаетесь, доступ к приватным данным есть только у класса.

Цитата Сообщение от soon
С тем же успехом можно создать в новом классе экземпляр "базового" и через него работать.
Я имел в виду, что кроме "копирования" кода ничего не изменится. Мои извинения, если я ввел вас этим в заблуждение.

И да, моя вина, не сказал раньше. Все что было мною сказано относилось в большей степени к данному заданию. Я действительно не вижу смысла использовать в классе-наследнике set/get функции базы(если их вдруг потребуется использовать в самом классе), когда можно просто сделать их protected.
greeezz
272 / 165 / 4
Регистрация: 10.07.2011
Сообщений: 441
08.01.2012, 11:19     Создание класса "Фильм" #25
Цитата Сообщение от soon Посмотреть сообщение
Я действительно не вижу смысла использовать в классе-наследнике set/get функции базы
Работа через public get и set методы обеспечит вам как минимум:
1 - обеспечить реализацию дочерних классов вне зависимости от возможных изменений базового класса, т.к. public методы для наследников фактически являются интерфейсом. Вы можете изменять родительский класс как угодно и не потребуется ничего менять в наследниках
2 - возможность провести необходимые проверки чтобы наследники не могли сохранить не валидные данные в поля родительского класса.
dimcoder
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
08.01.2012, 11:49     Создание класса "Фильм" #26
Цитата Сообщение от soon Посмотреть сообщение
Но почему ArtFilm не может видеть name, janre, length напрямую?
Если он их видит напрямую, значит он их может изменять. А зачем ему их изменять, если всю работу делает за него базовый класс? + Базовый класс предоставляет функции get, которые прекрасно выполняют свою роль. Я просто не вижу смысла использования protected. Как бы вы описали дочерний класс использую этот метод с protected?
Соглашусь с тем, что может я и зря описал set'ы. Этого не было в задании. Но get'ы были в задании, и я их успешно использовал в дочернем классе.

Добавлено через 13 минут
greeezz, спасибо, то что я и имел ввиду.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2012, 11:50     Создание класса "Фильм"
Еще ссылки по теме:

Создание класса "Строка" - C++
Создайте класс stroka. Класс должен включать поле (массив) типа char для хранения строки. Класс должен содержать: 1) конструктор без...

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

Создать класс "Фильм" - C++
Добрый день помогите составить программу с классом. Условие: Создать класс фильм. Класс имеет атрибуты название, год выпуска,...

Описать Структуру "Фильм" - C++
Описать Структура "Фильм": - название; - режиссер; - год выпуска; - стоимость. И выполнить такие операции с ней: 1.Удалить все...

Перегрузка "opеrator =" и "{ }" для собственного класса - C++
Я пытаюсь создать класс Vector. Для задания элементов вектора хотелось бы использовать "opеrator =" и " { } ". Возможно ли...


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

Или воспользуйтесь поиском по форуму:
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
08.01.2012, 11:50     Создание класса "Фильм" #27
Цитата Сообщение от dimcoder Посмотреть сообщение
Я просто не вижу смысла использования protected
Да вы правы. К сожалению, я не до конца прочитал задание. Мои извинения.
Yandex
Объявления
08.01.2012, 11:50     Создание класса "Фильм"
Ответ Создать тему
Опции темы

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