0 / 0 / 0
Регистрация: 07.01.2012
Сообщений: 9
|
|
1 | |
Создание класса "Фильм"07.01.2012, 19:14. Показов 6263. Ответов 26
Метки нет (Все метки)
Помогите, пожалуйста!!!
Нужно сделать следующее: 1.Построить класс Фильм (со свойствами): название фильма, длительность (кол-во мин), жанр. Реализовать следующие методы класса: вернуть жанр фильма, вернуть длительность фильма, показать всю информацию о фильме. Построить двух наследников данного класса. 2.Художественный фильм (со своим атрибутом): Фамилия режиссёра фильма методами: вернуть фамилию режиссера, показать всю информацию о художественном фильме (произвести замещение данного метода с учетом нового атрибута). В классе Художественный фильм создать специальный закрытый атрибут (и метод печатающий значение данного атрибута), значение которого отражает количество объектов класса Художественный фильм функционирующих в программе. 3.Класс Документальный фильм (со своим атрибутом): возрастная категория. Выполнить замещение метода печатающие все свойства фильма, с учетом нового атрибута. Вроде построил класс (для 1 "фильмы"), но не могу понять как действует конструктор и деструктор и методы класа тоже понял расплывчато. Помогите хотябы с одним классом, чтобы я понял как это все работае. p.s. Зарание спасибо!
0
|
07.01.2012, 19:14 | |
Ответы с готовыми решениями:
26
Создание класса "Фильм" Ищу фильм найти фильм Создание экземпляра класса-наследника для переменной с типом базового класса Подскажите пожалуйста, программа на создание класса и переопределение функций класса Object |
08.01.2012, 10:27 | 21 |
Не смертельно. Непосредственно через объект все равно нет доступа.
Создайте 2 класса, в один поместите экземпляр другого. Так сложно? Но так никто не делает, потому что пришось бы 2 раза объявлять одни и те-же функции для доступа к приватным. А теперь представьте, что вам понадобилось в классе-наследнике изменить приватную переменную базового класса. Что вы предпочтете, объявить ее в protected в базовом, или в производном писать var.setNum(var.getNum() * var.getNum())? А если это не одна переменная?
0
|
Полярный
476 / 448 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
|
|
08.01.2012, 10:44 | 22 |
Для этого существует интерфейс класса - функции-элементы. Пример - 20 пост, 107 строка кода. А если надо просто изменить закрытую переменную и не получается через интерфейс, значит вы это не сделаете никак через дочерний класс. Если я ошибаюсь, приведите пример пожалуйста.
Добавлено через 1 минуту Не могу не согласиться, но раннее вы написали:
1
|
278 / 173 / 21
Регистрация: 10.07.2011
Сообщений: 441
|
|
08.01.2012, 11:04 | 23 |
dimcoder, soon, Простите что вмешиваюсь, вы зачем путаете мухи с котлетами? Включение объектов другого класса в качестве членов класса называется композицией или агрегированием. Это вообще никак нельзя даже сравнивать с наследованием потому что нет ничего общего. has-a relationship не есть is-a relationship
Одно для одних задач другое для других. Все зависит от архитектуры которую требуется создать для решения задачи.
0
|
08.01.2012, 11:10 | 24 |
Я и не отрицал, что так будет работать. Но почему ArtFilm не может видеть name, janre, length напрямую? Ведь по сути, они принадлежат ему.
Не ошибаетесь, доступ к приватным данным есть только у класса.
Сообщение от soon
И да, моя вина, не сказал раньше. Все что было мною сказано относилось в большей степени к данному заданию. Я действительно не вижу смысла использовать в классе-наследнике set/get функции базы(если их вдруг потребуется использовать в самом классе), когда можно просто сделать их protected.
0
|
278 / 173 / 21
Регистрация: 10.07.2011
Сообщений: 441
|
|
08.01.2012, 11:19 | 25 |
Работа через public get и set методы обеспечит вам как минимум:
1 - обеспечить реализацию дочерних классов вне зависимости от возможных изменений базового класса, т.к. public методы для наследников фактически являются интерфейсом. Вы можете изменять родительский класс как угодно и не потребуется ничего менять в наследниках 2 - возможность провести необходимые проверки чтобы наследники не могли сохранить не валидные данные в поля родительского класса.
2
|
Полярный
476 / 448 / 158
Регистрация: 11.09.2011
Сообщений: 1,156
|
|
08.01.2012, 11:49 | 26 |
Если он их видит напрямую, значит он их может изменять. А зачем ему их изменять, если всю работу делает за него базовый класс? + Базовый класс предоставляет функции get, которые прекрасно выполняют свою роль. Я просто не вижу смысла использования protected. Как бы вы описали дочерний класс использую этот метод с protected?
Соглашусь с тем, что может я и зря описал set'ы. Этого не было в задании. Но get'ы были в задании, и я их успешно использовал в дочернем классе. Добавлено через 13 минут greeezz, спасибо, то что я и имел ввиду.
1
|
08.01.2012, 11:50 | 27 |
0
|
08.01.2012, 11:50 | |
08.01.2012, 11:50 | |
Помогаю со студенческими работами здесь
27
Создание объекта класса с полем являющимся объектом другого класса Создание своего класса кнопки с использованием наследования от класса UserControl Явное создание экземпляра класса и явная специализация шаблона класса Создание указателя типа базового класса на экземпляр производного класса Возможно ли создание объекта шаблонного класса в функции этого класса? Построение описания класса, создание и уничтожение объектов этого класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |