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

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

Войти
Регистрация
Восстановить пароль
 
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,470
#1

Есть производный класс и базовый; при чём производный использует только ЧАСТЬ ресурсов базового, правильно ли это? - C++

05.06.2011, 17:36. Просмотров 711. Ответов 8
Метки нет (Все метки)

Ну то есть базовый класс A, с полями, допустим, a, b, c, d. И я проектирую производный класс B и я железно знаю, что он будет использовать только поле a и b (c и d будет использовать другой производный класс C). Вот не знаю, правильно ли это. Ещё до реализации не дошло, вот думаю, может правильнее написать функции к классу A (вместо производных классов); и писать
C++
1
A.f ();
вместо
C++
1
B b;
Наверное, я могу сделать и то и другое, но хотелось бы сразу вставать на правильный путь. Это не С всё-таки. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2011, 17:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Есть производный класс и базовый; при чём производный использует только ЧАСТЬ ресурсов базового, правильно ли это? (C++):

Есть базовый и производный класс, в базовом определена функция, необходимо её объявить в производном! - C++
Как-то так, что ли: class x { public: void f_0 (){}; }; class y: public x { public: //Тут у меня пойдёт...

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

Базовый класс и производный... - C++
Есть class A. У него есть функция protected foo(); Есть класс наследник B (class B: public A). В классе-наследнике B есть функция g(),...

Создать базовый и производный класс - C++
Базовый класс РАБОТНИК с член-данными ФИО, идентификационный код, возраст. Производный класс ИНЖЕНЕР с член-данными специальность, месячный...

Указатель на базовый класс и на производный - C++
Пытаюсь разобраться с классами и наследованием. Сама эта задача из Дейтела "Как программировать на C++" Есть базовый класс Точка и у...

Производный класс не видит перегруженную операцию базового класса - C++
Подскажите пожалуйста, почему производный класс, а именно его объект не видит перегруженную операцию, в данном случае это префиксные...

8
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
05.06.2011, 18:08 #2
Цитата Сообщение от kravam Посмотреть сообщение
правильнее написать функции к классу A (вместо производных классов)
какая задача? наследование надо применять там где это логично.
Цитата Сообщение от kravam Посмотреть сообщение
я проектирую производный класс B и я железно знаю, что он будет использовать только поле a и b (c и d будет использовать другой производный класс C)
у класса B будут все поля класса А. Свободно пользоваться можно будет полями protected и public. Модификатор наследования полей сохраняется для следующих классов, производных уже от В(если class B : public A), но его можно ужесточить например
C++
1
2
private:
   using A::f();
тогда в классах производных от В уже нельзя будет в полной мере поюзать f
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,470
05.06.2011, 18:16  [ТС] #3
Я это всё знаю. Я говорю, классу B не понадобятся поля c и d. Надо ли проектировать класс B или проще создать функцию f- метод класса А?
0
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
05.06.2011, 18:20 #4
ну ты сам смотри. Сложно что-то сказать на абстрактном примере
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,470
05.06.2011, 18:22  [ТС] #5
Я думал, может какие рекомендации методические существуют.
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
05.06.2011, 21:21 #6
Методическое указание тут одно: Use common sense. Я могу представить себе пару ситуаций, где дочерний класс использует не весь функционал родительского (на-гора -- очередь, наследуемая от дека, целое положительное число как дочерний класс "числа"), но в целом, конечно, это повод критично посмотреть на свое дерево классов.
0
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
06.06.2011, 13:10 #7
Цитата Сообщение от kravam Посмотреть сообщение
Ну то есть базовый класс A, с полями, допустим, a, b, c, d. И я проектирую производный класс B и я железно знаю, что он будет использовать только поле a и b (c и d будет использовать другой производный класс C). Вот не знаю, правильно ли это.
Нет. Так сложно сказать конечно, но думаю имеет смысл оставить в A только a и b. B наследовать от A напрямую, а C через промежуточный класс с полями c и d. В общем, идея думаю понятена.
0
voral
455 / 436 / 68
Регистрация: 16.03.2008
Сообщений: 2,130
06.06.2011, 13:27 #8
Цитата Сообщение от kravam Посмотреть сообщение
Я думал, может какие рекомендации методические существуют.
Имхо. Надо смотреть, а нет ли класса Q, который использует другой набор из этих методов, использует ли эти методы сам базовый класс. Если использует только один производный класс - то надо спускать эти методы туда. Если используют несколько производных классов, но не все. Тут уже надо смотреть на задачу, возможно стоит реализовать промежуточный.
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
06.06.2011, 13:35 #9
kravam, самая простая рекомендация: если B является A - наследуй, нет - не наследуй. Нужно исходить не из внутреннего устройства, а из того что чем является.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2011, 13:35
Привет! Вот еще темы с ответами:

Создать базовый класс - Array и производный класс - Money для работы денежной суммы - C++
ПОМОГИТЕ, ПОЖАЛУЙСТА, С ЗАДАЧЕЙ Создать базовый класс - Array и производный класс - Money для работы денежной суммы

Создать базовый класс Car (машина) и производный класс Lorry (грузовик): ООП ошибки - C++
Создать базовый класс Car (машина), характеризуемый торговой маркой (строка), числом цилиндров, мощностью. Определить методы переназначения...

Указатели в базовом классе на базовый класс и производный класс - C++
Пишу контейнер "Бинарное дерево поиска" для частотного словаря. С самим контейнером особо вопросов нету. Вопрос по поводу элементов в...

Наследование: базовый класс Квадрат, производный класс Пирамида - C++
Помогите, пожалуйста!:cry: Добавлено через 6 минут Создать класс КВАДРАТ, член класса- длинна стороны. Предусмотреть в классе методы...


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

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
06.06.2011, 13:35
Ответ Создать тему
Опции темы

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