0 / 0 / 0
Регистрация: 02.03.2022
Сообщений: 39
1

Наследование классов

10.11.2022, 14:15. Показов 2125. Ответов 36

Author24 — интернет-сервис помощи студентам
Разработать программу с использованием наследования классов, реализующую классы:
• массив;
• стек;
• очередь.
Используя виртуальные функции, выведите на экран количество элементов и добавьте элемент
ПОМОГИТЕ С КОДОМ
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.11.2022, 14:15
Ответы с готовыми решениями:

Автоматическая генерация классов С ++ с UML диаграмм классов. Наследование в с++. Абстрактные классы. WhiteStarUML
Создать классовую модель(желательно в WhiteStarUML), которая включает в себя абстрактный класс...

Заменить наследование классов на наследование интерфейсов
#include <iostream> #include <assert.h> using namespace std; int people_on_base = 100; int...

Наследование классов. Копирование производных классов
Здравствуйте всем, у меня такой вопрос: написал код #include "stdafx.h" class A //Создаем...

Наследование классов!
Помогите с задачей!немного закрутила Описать класс студент,который содержит инфу о студенте с...

Наследование классов
Реализовать класс, содержащий коллекцию объектов, методы для включения и удаления...

36
4762 / 2572 / 891
Регистрация: 29.11.2010
Сообщений: 5,555
12.11.2022, 19:26 2
Цитата Сообщение от Kvadrokop Посмотреть сообщение
использованием наследования классов
А где тут иерархия?
Наследование это отношение "является" плюс "ведёт себя как", о чём обычно забывают.
Какие пары из указанных вами классов связаны отношением "является и ведёт себя как"?
2
0 / 0 / 0
Регистрация: 02.03.2022
Сообщений: 39
22.11.2022, 14:56  [ТС] 3
Добавлено через 44 секунды
lemegeton, как я понял, нужно создать базовый класс, а массив стек и очередь - это наследники базового класса
0
2798 / 2308 / 701
Регистрация: 29.06.2020
Сообщений: 8,545
22.11.2022, 15:01 4
Цитата Сообщение от Kvadrokop Посмотреть сообщение
как я понял, нужно создать базовый класс, а массив стек и очередь - это наследники базового класса
Именно о бессмысленности такого наследования и говорит lemegeton.
0
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
22.11.2022, 15:09 5
SmallEvil, было б бессмысленно наследовать стек от очереди или типа того. А от базового предка - почему нет?
0
2798 / 2308 / 701
Регистрация: 29.06.2020
Сообщений: 8,545
22.11.2022, 15:26 6
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
А от базового предка - почему нет?
От какого то интерфейса. согласен, почему бы и нет.
Я предположил, что все три контейнера должны бить связанны в какую либо иерархию.

Цитата Сообщение от Kvadrokop Посмотреть сообщение
нужно создать базовый класс, а массив стек и очередь - это наследники базового класса
Раз для стека и очереди автор определил место в иерархии, тогда базовым остается массив.
Вот про такое наследование я и говорил.

Добавлено через 2 минуты
Возможно, произвести закрытое наследование от массива.
Таким образом применив наследование как композицию.
Но в таком случае, лучше делать композицию через использование в качестве поля класса.
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
22.11.2022, 16:14 7
Цитата Сообщение от lemegeton Посмотреть сообщение
Какие пары из указанных вами классов связаны отношением "является и ведёт себя как"?
вопрос некорректный.
ты осознаешь, что спросил о том,
как наследники связанны друг с другом ?

наследники связанны не друг с другом,
а со своим базовым классом.

все указанные наследники являются контейнерами,
и ведут себя как контейнеры.

Наследование классов
1
2798 / 2308 / 701
Регистрация: 29.06.2020
Сообщений: 8,545
22.11.2022, 16:27 8
Цитата Сообщение от hoggy Посмотреть сообщение
все указанные наследники являются контейнерами,
и ведут себя как контейнеры.
И что это нам дает ?

Добавлено через 1 минуту
emplace_back - какая глупость
0
4762 / 2572 / 891
Регистрация: 29.11.2010
Сообщений: 5,555
22.11.2022, 18:56 9
Цитата Сообщение от hoggy Посмотреть сообщение
вопрос некорректный.
ты осознаешь, что спросил о том,
как наследники связанны друг с другом ?
Я человек простой -- написан список классов, которые надо реализовать, значит надо реализовать только эти классы. )

Если этим пренебречь, можно иерархию развесистую налепить -- мама не горюй. Через две-три абстракции хоть слона с мухой связать можно.
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
22.11.2022, 19:25 10
Цитата Сообщение от lemegeton Посмотреть сообщение
Я человек простой -- написан список классов, которые надо реализовать, значит надо реализовать только эти классы
с чего ты взял своё "только" ?
0
4762 / 2572 / 891
Регистрация: 29.11.2010
Сообщений: 5,555
22.11.2022, 20:06 11
Цитата Сообщение от hoggy Посмотреть сообщение
с чего ты взял своё "только" ?
Здравый смысл.

Если меня просят реализовать Х, я реализую Х. Я не реализую У, или, не дай боже, ещё и Й.
Даже если они все вместе складываются в красивую функциональность.

В противном случае мы рискуем получить классическую методологию разработки требований под названием "мог бы и сам догадаться".

Что вызывает вот такие вот коллизии в понимании постановок задач.


Добавлю, что если бы был кто-то заинтересованный в результате, на этом месте был бы тригернут цикл уточнения требований.

Но так как такого человека нет, и в целом всем как всегда, то как изначально понял, так и понял.
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
22.11.2022, 20:44 12
Цитата Сообщение от lemegeton Посмотреть сообщение
Здравый смысл.
в твоих рассуждениях отсутствует здравый смысл (см #7)

Цитата Сообщение от lemegeton Посмотреть сообщение
Если меня просят реализовать Х, я реализую Х. Я не реализую У, или, не дай боже, ещё и Й.
в конкретном данном случае,
есть явным образом прописанное требование: реализовать X через Y.

где Y - базовый класс, обладающий вирт. функциями:
- получение кол-ва элементов
- добавление элемента.
0
4762 / 2572 / 891
Регистрация: 29.11.2010
Сообщений: 5,555
22.11.2022, 20:50 13
Цитата Сообщение от hoggy Посмотреть сообщение
в конкретном данном случае,
есть явным образом прописанное требование: реализовать X через Y.

где Y - базовый класс, обладающий вирт. функциями:
- получение кол-ва элементов
- добавление элемента.

Да-да. Вот об этом я и говорю. Мы с вами разное видим.

Я вот в нижеприведённом задании не вижу ничего про создание дополнительного базового класса.
Я вижу "реализовать классы с использованием наследования, использовать виртуальные функции для получения количества и добавления" и вижу список классов для реализации.

Ни слова не вижу про создание дополнительных базовых классов.

Цитата Сообщение от Kvadrokop Посмотреть сообщение
Разработать программу с использованием наследования классов, реализующую классы:
• массив;
• стек;
• очередь.
Используя виртуальные функции, выведите на экран количество элементов и добавьте элемент
Вы же предлагаете додумать тз, что, в целом, имеет право на существование, но я в этом конкретном случае принял решение не додумывать.
0
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
22.11.2022, 21:03 14
Цитата Сообщение от lemegeton Посмотреть сообщение
Я вот в нижеприведённом задании не вижу ничего про создание дополнительного базового класса.
ну и сделал бы "без базового класса"!
Вряд ли это удовлетворило бы препода, но хоть ответ в таком русле был бы конструктивен.
Но сейчас ты конструктива не предлагаешь:
Ты с одной стороны критикуешь иерархию hoggy, а с другой критикуешь концепт "без базового класса" в #2!
0
2798 / 2308 / 701
Регистрация: 29.06.2020
Сообщений: 8,545
22.11.2022, 21:07 15
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Ты с одной стороны критикуешь иерархию hoggy
Это я критикую подход от hoggy.

Kuzia domovenok, hoggy
Какие вы душные. Вы в реале тоже додумываете за заказчика ?
Заказали велосипед, вы построили инвалидную коляску ?
Потому что вы так видите ?
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
22.11.2022, 21:22 16
Цитата Сообщение от lemegeton Посмотреть сообщение
Я вот в нижеприведённом задании не вижу ничего про создание дополнительного базового класса.
с чего ты взял, что он - дополнительный?

он не дополнительный, потому что он никого и ничего не дополняет.
он - просто базовый.

это вытекает из формулировки:
Цитата Сообщение от Kvadrokop Посмотреть сообщение
с использованием наследования
использование наследование прямо предполагает наличие базового класса.

Цитата Сообщение от lemegeton Посмотреть сообщение
Я вижу "реализовать классы с использованием наследования, использовать виртуальные функции для получения количества и добавления" и вижу список классов для реализации.
простая формулировка, из которой прямо вытекает,
что нужно использовать базовый класс,
с парочкой вирт. функций.

Цитата Сообщение от lemegeton Посмотреть сообщение
Вы же предлагаете додумать тз
это что за бред?
что именно, я, по твоему, додумал?

а вот ты додумываешь.
Цитата Сообщение от lemegeton Посмотреть сообщение
надо реализовать только эти классы
в задаче нигде не сказано, что нужно реализовывать только эти классы.
своё "только" ты высосал из пальца.

Добавлено через 10 минут
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Вряд ли это удовлетворило бы препода, но хоть ответ в таком русле был бы конструктивен
нет, не конструктивен.

решение, которое нарушает требование к задаче - это решение совсем другой задачи
(ц) Макконнелл
0
4762 / 2572 / 891
Регистрация: 29.11.2010
Сообщений: 5,555
22.11.2022, 21:57 17

Не по теме:

А, вы развлекаетесь! Я чёт сходу не понял.
Эту сказку про белого бычка можно ковырять ооочень долго.
Я немного поучаствую, конечно, но только немного!



Цитата Сообщение от hoggy Посмотреть сообщение
это что за бред?
что именно, я, по твоему, додумал?
Цитата Сообщение от hoggy Посмотреть сообщение
это вытекает из формулировки:
Конкретно вот это.
С чего ты решил, что вытекает? Не вытекает.
Это додумано.

Цитата Сообщение от hoggy Посмотреть сообщение
использование наследование прямо предполагает наличие базового класса.
Совершенно верно.
Наследование в общем случае предполагает базовый класс.
Задание не предполагает, что надо написать новый класс, который будет базовым для указанных трёх.

Например, задающий задание мог предполагать, что стек и очередь наследуются от массива.
Такое предположение тоже имеет право на существование.
Более того, я знаю один популярный ЯП, в котором стек является массивом (вектором) в базовых либах.

Цитата Сообщение от hoggy Посмотреть сообщение
в задаче нигде не сказано, что нужно реализовывать только эти классы.
своё "только" ты высосал из пальца.
Совершенно верно.
Как и ты высосал из пальца своё дописывание ещё какого-то базового класса.

В задании не сказано ни то, что нужно реализовывать дополнительные классы ни то, что их не нужно реализовывать.

В задании есть только список классов, который надо реализовать.
... а когда меня просят реализовать Х, я реализую Х и не высасываю из пальца, что нужно реализовать еще и У, а потом ещё и Й.

Добавлено через 1 минуту
Цитата Сообщение от hoggy Посмотреть сообщение
решение, которое нарушает требование к задаче - это решение совсем другой задачи
(ц) Макконнелл
Макконнелл, походу, никогда не получал задачу про семь красных линий на самых серьёзных щщах. )))

Добавлено через 1 минуту
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
ну и сделал бы "без базового класса"!
Ну кстати можно.
Стек вполне себе массив(вектор), очереди тоже ничто не мешает, вопщем-то.
"А муха тоже вертолёт".

Но как же не повышлёпываться-то?!

Добавлено через 19 минут
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Но сейчас ты конструктива не предлагаешь:
Я конструктива и не предлагал. Я в пассивно-агрессивной манере "вытекал", что ТЗ надо уточнить. )))
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
22.11.2022, 22:27 18
Цитата Сообщение от lemegeton Посмотреть сообщение
Конкретно вот это.
С чего ты решил, что вытекает? Не вытекает.
Это додумано.
ты бредишь.
использование наследования явным образом подразумевает использование базового класса.
это - факт, который прописан в правилах языка с++.

Цитата Сообщение от lemegeton Посмотреть сообщение
Совершенно верно.
а выше писал, что не вытекает, а теперь соглашаешься
ты сам себе противоречишь.

Цитата Сообщение от lemegeton Посмотреть сообщение
Наследование в общем случае предполагает базовый класс.
ты это так написал, как будто бы бывают какие то альтернативные частные случаи.
в с++ наследование в принципе полагает наличие базового класса.
нет никакого деления на "общие" и "частные" случаи.

Цитата Сообщение от lemegeton Посмотреть сообщение
Задание не предполагает, что надо написать новый класс, который будет базовым для указанных трёх.
оно вообще никак этот момент не комментирует.
можешь и не писать, а можешь и написать.
это на усмотрение исполнителя.

Цитата Сообщение от lemegeton Посмотреть сообщение
Например, задающий задание мог предполагать, что стек и очередь наследуются от массива.
Такое предположение тоже имеет право на существование.
а не надо додумывать, чего он там предполагал.
есть задача, требования которой четко обозначены.

Цитата Сообщение от lemegeton Посмотреть сообщение
когда меня просят реализовать Х, я реализую Х и не высасываю из пальца, что нужно реализовать еще и У
в соответствии с текстом задачи, X обязан быть наследником.
из этого прямо вытекает,
что для его создания, необходим ещё и класс Y,
который будет для X базовым классом.

Цитата Сообщение от lemegeton Посмотреть сообщение
Макконел, походу, никогда не...
опять ты додумываешь.
0
2798 / 2308 / 701
Регистрация: 29.06.2020
Сообщений: 8,545
22.11.2022, 22:32 19
hoggy,
Давай свою шарманку про "общепринятость" !
0
4762 / 2572 / 891
Регистрация: 29.11.2010
Сообщений: 5,555
22.11.2022, 22:35 20
Цитата Сообщение от hoggy Посмотреть сообщение
ты бредишь.
использование наследования явным образом подразумевает использование базового класса.
это - факт, который прописан в правилах языка с++.

Сам ты бредишь!
Читай внимательно.
Наследование предполагает (в основном) существование базового класса,
а вот задание не подразумевает явным образом создание нового базового класса, отличного от указанных в задании.

Цитата Сообщение от hoggy Посмотреть сообщение
а выше писал, что не вытекает, а теперь соглашаешься
ты сам себе противоречишь.
Не противоречу. Читай ещё внимательнее.
Наследование предполагает (в основном) наличие базового класса. Задание ничего не говорит о том, что нужно создать новый базовый класс.
Никаких противоречий. Могу ещё пару раз переформулировать, если что.

Цитата Сообщение от hoggy Посмотреть сообщение
а не надо додумывать, чего он там предполагал.
есть задача, требования которой четко обозначены.
Так это не я додумываю, а ты додумываешь.
Я как раз и говорю, что создание нового класса, отличного от тех, что есть в задании, -- есть додумывание.

Цитата Сообщение от hoggy Посмотреть сообщение
есть задача, требования которой четко обозначены
Требования как раз размытые, раз у нас возникают их разные толкования.

Цитата Сообщение от hoggy Посмотреть сообщение
в соответствии с текстом задачи, X обязан быть наследником.
Наследником кого Х обязан быть наследником, если сказано -- написать Х.

Цитата Сообщение от hoggy Посмотреть сообщение
опять ты додумываешь.
Конечно. Я никогда не встречался с ним. Могу только предполагать да додумывать. )))
0
22.11.2022, 22:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2022, 22:35
Помогаю со студенческими работами здесь

Наследование классов
Всем привет! У меня проблема. Вот задание: 1. Разработать следующие классы: • базовый класс...

Наследование классов в C++
Здравствуйте, вот у меня есть код и компилятор выводит такую ошибку: ...

Наследование классов.
Добрый день! Помогите, пожалуйста, разобраться с наследованием классов. И, вероятно, неправильно...

наследование классов
Есть базовый класс class List { protected: struct Element { char name; ...

Наследование классов
Есть базовый класс: class people { public: char *name; }; Есть производный класс, который...

Наследование классов
Создать класс-родитель «ученик», класс-наследник «ученик и его оценки» (по некоторым предметам), и...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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