|
3 / 3 / 1
Регистрация: 28.09.2016
Сообщений: 98
|
||||||
ООП. Перегрузка операторов в наследование с примесью полиморфизма24.02.2017, 02:31. Показов 2774. Ответов 16
Метки нет (Все метки)
Здравствуйте, нужна помощь, а то мозг болит.
В общем не получается получить сумму разных атрибутов из разных наследуемых классов, а полиморфизм и наследование обязательны. Думал перегрузка поможет, не помогла - "TypeError: __add__() takes 1 positional argument but 2 were given". Можно ли такое делать в Python и как (спрашиваю, потому, что задание для C# и там скорее всего можно, наверное), желательно показать на моем коде(если его так можно назвать )?И лично вопрос не совсем по теме: стоит ли учить C# для ООП или плевать и продолжать на Питончике, просто я пробовал C# раньше и для меня лично (мое ИМХО) он показался муторным, а особенно для новичка, а вот Питонище до меня доносит суть, что скажете?
0
|
||||||
| 24.02.2017, 02:31 | |
|
Ответы с готовыми решениями:
16
ООП в С++ (наследование, инкапсуляция, полиморфизм, перегрузка операторов): что читать? ооп, перегрузка операторов ООП перегрузка операторов |
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|||
| 24.02.2017, 06:53 | |||
Сообщение было отмечено dondublon как решение
Решение
0
|
|||
|
3 / 3 / 1
Регистрация: 28.09.2016
Сообщений: 98
|
||
| 24.02.2017, 10:58 [ТС] | ||
|
Добавлено через 19 минут Суть в том, что обязательно нужно суммировать из наследуемых
0
|
||
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|||||||||||
| 24.02.2017, 11:02 | |||||||||||
|
В таких формулировках я не понимаю, что именно и зачем нужно реализовать.
0
|
|||||||||||
|
3 / 3 / 1
Регистрация: 28.09.2016
Сообщений: 98
|
|
| 24.02.2017, 11:18 [ТС] | |
|
А как атрибуты с разных классов суммировать?
0
|
|
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
||
| 24.02.2017, 11:22 | ||
|
Или давайте оригинальную формулировку задания, потому что пока получается бессмыслица.
0
|
||
|
3 / 3 / 1
Регистрация: 28.09.2016
Сообщений: 98
|
|
| 24.02.2017, 11:30 [ТС] | |
|
Строчный, наверное.
Вот оригинальная формулировка: Задание 1. Составить программу с одним родительским классом и двумя потомками. Потомки должны содержать виртуальные функции. Создать виртуальную функцию выдачи результатов расчета методов на экран монитора с указанием названий и полей и их значений соответствующего объекта. Составить тестирующую программу с выдачей протокола на экран монитора. При этом создать объекты базового и производных типов, используя полиморфный контейнер - массив ссылок базового класса на объекты базового и производных классов (количество объектов >=5). 6. Одежда (поле - название) Пальто (поле размер V) Костюм (поле рост H) Расход ткани Пальто V/6.5+0.5 Костюм 2*H+0.3 Задание 2. Составить программу с абстрактным родительским классом и двумя объектами - потомками. Для этого модифицировать задание 1. Составить тестирующую программу с выдачей протокола на экран монитора. В ней нужно реализовать циклический вывод параметров объектов, используя полиморфный контейнер - массив объектов базового класса (количество объектов >=5). 6. Организовать вычисление суммарного расхода ткани.
0
|
|
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
||||||||
| 24.02.2017, 11:40 | ||||||||
Расчет суммарного расхода — внешняя функция. На входе у нее список полиморфных объектов, на выходе — число, расход ткани на все. Перегружать операторы здесь не нужно.
0
|
||||||||
|
3 / 3 / 1
Регистрация: 28.09.2016
Сообщений: 98
|
||||||
| 24.02.2017, 12:13 [ТС] | ||||||
|
Значит тип объекта - класс
![]() Не работает, видимо я вас не правильно понял, может я не правильно сделал полиморф. конт.(вообще не знал как это представить)?
0
|
||||||
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|||||||
| 24.02.2017, 12:32 | |||||||
Сообщение было отмечено Smart108 как решение
РешениеПо порядку. 1. Базовый класс — одежда. Абстрактный метод — вычислить расход ткани. Возвращает число с плавающей точкой. 2. Один потомок — пальто. Один атрибут — размер. Реализация метода расчета расхода ткани в зависимости от размера. 3. По полной аналогии — костюм. Функция вычисления суммарного расхода ткани принимает список объектов. В цикле обходит этот список, для каждого объекта вызвает метод вычисления расхода ткани и прибавляет полученное значение к общей сумме. Возвращает сумму. Не нужно лишних полей на уровне класса. Я об этих:
1
|
|||||||
|
3 / 3 / 1
Регистрация: 28.09.2016
Сообщений: 98
|
||||||
| 24.02.2017, 13:22 [ТС] | ||||||
|
Вышло
0
|
||||||
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
| 24.02.2017, 13:33 | |
|
0
|
|
|
3 / 3 / 1
Регистрация: 28.09.2016
Сообщений: 98
|
||||||
| 24.02.2017, 16:44 [ТС] | ||||||
0
|
||||||
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
| 24.02.2017, 16:50 | |
|
Smart108, зачем обращаться к элементу по индексу, если он уже доступен под именем
element?
0
|
|
|
3 / 3 / 1
Регистрация: 28.09.2016
Сообщений: 98
|
|
| 24.02.2017, 18:01 [ТС] | |
|
Дурак потому-что, а если честно, мало практики.
Спасибо за помощ.
0
|
|
|
in code we trust
133 / 162 / 12
Регистрация: 29.02.2016
Сообщений: 885
|
|
| 24.02.2017, 18:42 | |
|
да зачем нужна эта перегрузка операторов? сам Марк Лутц говорит - "Ни к чему они!"
-"Если только вы не делаете сложных арифметических вычислений". Добавлено через 1 минуту https://www.shashkovs.ru/_prog... -_2011.pdf там на странице 700 - 750 есть об этом цитата.
0
|
|
|
Заблокирован
|
|
| 24.02.2017, 18:55 | |
|
__py__,
какой-то безграмотный этот Ваш лутц. То что он по Вашей ссылке называет "перегрузкой операторов", типа __init__, __str__, к ней вообще отношения не имеет. Перегрузка -- это, вообще, термин из статики, но уж если и притягивать его сюда за уши, то в контексте диспетчеризации по типам аргументов, а то что он там рассказывает, к этому вообще отношения не имеет.
0
|
|
| 24.02.2017, 18:55 | |
|
Помогаю со студенческими работами здесь
17
ООП. Перегрузка операторов Наследование и перегрузка операторов.
Наследование и перегрузка операторов
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|