|
0 / 0 / 0
Регистрация: 25.04.2012
Сообщений: 10
|
|
Множественное наследование: прямоугольник, квадрат, ромб, параллелограмм25.04.2012, 18:12. Показов 13042. Ответов 47
Метки нет (Все метки)
Помогите, пожалуйста, разработать иерархию.
В дальнейшем надо реализовать несколько методов, среди которых изменение размера и вычисление площади. Пока остановился на двух вариантах. 1) Квадрату достаточно одного свойства, длинна стороны. От него наследуется прямоугольник(добавляется свойство ширина) и ромб(добавляется свойство высота к одной из диагоналей). От ромба и прямоугольника наследуется параллелограмм( получаем все необходимые свойства). 2) В обратном порядке от параллелограмма ромб и прямоугольник, от них уже квадрат. Смущает то, что методы увеличения размера и вычисления площади у каждого класса будут свои. Зачем тогда наследование? Если неправ, укажите правильный путь))))
0
|
|
| 25.04.2012, 18:12 | |
|
Ответы с готовыми решениями:
47
Множественное наследование: определить класс Окружность, вписанная в ромб
|
|
|
||
| 26.04.2012, 00:00 | ||
|
0
|
||
|
What a waste!
1612 / 1304 / 180
Регистрация: 21.04.2012
Сообщений: 2,735
|
||
| 26.04.2012, 00:05 | ||
|
0
|
||
|
|
||
| 26.04.2012, 00:06 | ||
|
вроде хитрого определения пересечения сторон с вписанной окружностью второго ромба bool IsThere_Intersection_Of_InnerCircleOfRom b1_With_Diagonal_Of_Romb2(Romboid* item1, Romboid* item2); То не сможешь передавать ей квадраты. И придётся копипастить ещё 2 функции bool IsThere_Intersection_Of_InnerCircleOfSqu are1_With_Diagonal_Of_Romb2(Square* item1, Romboid* item2); bool IsThere_Intersection_Of_InnerCircleOfSqu are1_With_Diagonal_Of_Square2(Square* item1, Square* item2);
0
|
||
|
Заблокирован
|
|
| 26.04.2012, 00:09 | |
|
Пока ничего не понял. Просто по русски скажите, в чем могут быть проблемы.
Просто скажите, какая задача вызовет трудности?
0
|
|
|
|
|
| 26.04.2012, 00:18 | |
|
Ты создал функцию, которая принимает указатель на 2 ромба и делает с ним какое-то действие, свойственное только ромбам.
Например находит точку пересечения их вписанных окружностей. Для прямоугольника это бессмысленно, а для ромба можно. Теперь у тебя есть два квадрата. Они унаследовали такое св-во ромба, как вписанная окр-ть Будешь ли ты писать две новых функции для выполнения этого алгоритма между квадратами и между ромб и квадратом????? Или воспользуешься наследованием???
0
|
|
|
Заблокирован
|
|
| 26.04.2012, 00:29 | |
|
Вот в данном случае тот подход, который я, да и Вы тоже кстати реализовывали пока, только, на мой взгляд не очень корректно, не позволяет решить эти задачи.
Мы в данном случае на самом деле пытались построить класс конгруэнтных параллелограммов, то есть равных между собой с точностью до параллельного переноса, вращения, симметрии и любой их комбинации. Вы же в данном случае перескакиваете с синтетики на аналитику. Если так охота, то пожалуйста. И вот здесь (но надо тоже все оценить) наверно можно из этого абстрактного класса конгруэнтных параллелограммов наследовать КОНКРЕТНЫЕ ПАРАЛЛЕЛОГРАММЫ, то есть прибивать их к плоскости и вот тогда можно приступать к анализу Вашей новой задачи. А так вот с бухты-барахты я Вам на Ваш вопрос не отвечу. P.S. Открою Вам страшную тайну. Если в выпуклый многоугольник можно вписать окружность, то радиус оной равен отношению площади данного многоугольника к его полупериметру.
0
|
|
|
Higher
|
||
| 26.04.2012, 12:12 | ||
|
Ромб не является параллелограммом с точки зрения ООП, т.к. параллелограмм характеризуется 2 сторонами и углом между ними, а ромб - 2 диагоналями, поэтому наследование тут неуместно. И вообще, играться с наследованием и динамическим полиморфизмом стоит как можно реже, вместо них лучше использовать агрегацию и compile-time полиморфизм(шаблоны).
1
|
||
|
What a waste!
1612 / 1304 / 180
Регистрация: 21.04.2012
Сообщений: 2,735
|
|
| 26.04.2012, 14:02 | |
|
Да, вероятно от ТС так же ждут ещё и использования виртуального наследования.
0
|
|
| 26.04.2012, 14:02 | |
|
Определите что представляет из себя четырехугольник: ромб, прямоугольник, квадрат, трапеция Объявить систему классов: Точка, Прямоугольник, Квадрат, Ромб, Трапеция, Треугольник, Четырехугольник Записать программу, которая по выбранному названию фигуры (тре- угольник, квадрат, ромб, прямоугольник и т Описать базовый класс: линия, параллелограмм, ромб Уместиться ли целиком прямоугольник в параллелограмм Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|