0 / 0 / 0
Регистрация: 25.04.2012
Сообщений: 10

Множественное наследование: прямоугольник, квадрат, ромб, параллелограмм

25.04.2012, 18:12. Показов 13042. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, разработать иерархию.
В дальнейшем надо реализовать несколько методов, среди которых изменение размера и вычисление площади.
Пока остановился на двух вариантах.
1)
Квадрату достаточно одного свойства, длинна стороны. От него наследуется прямоугольник(добавляется свойство ширина) и ромб(добавляется свойство высота к одной из диагоналей).
От ромба и прямоугольника наследуется параллелограмм( получаем все необходимые свойства).

2)
В обратном порядке от параллелограмма ромб и прямоугольник, от них уже квадрат.

Смущает то, что методы увеличения размера и вычисления площади у каждого класса будут свои. Зачем тогда наследование?

Если неправ, укажите правильный путь))))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.04.2012, 18:12
Ответы с готовыми решениями:

Множественное наследование: определить класс Окружность, вписанная в ромб
С помощью множественного наследования определить класс Окружность, вписанная в ромб. Классы Круг и Ромб должны иметь методы для...

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

Определить тип параллелограмма (ромб, прямоугольник или квадрат)
Задача 1. Задан параллелограмм со сторонами a, b и углом α между ними. Определить тип параллелограмма (ромб, прямоугольник или квадрат),...

47
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,544
Записей в блоге: 1
26.04.2012, 00:00
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от gray_fox Посмотреть сообщение
Скомпилируется, конечно, но... не кажется, что что-то здесь не так?)
Не знаю, ща попробую в студии проектик создать с ним. Там ошибки? Вроде только всяких мелочей не хватает вроде точек с запятой. Ща, узнаю, что не так.
0
What a waste!
 Аватар для gray_fox
1612 / 1304 / 180
Регистрация: 21.04.2012
Сообщений: 2,735
26.04.2012, 00:05
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Не знаю, ща попробую в студии проектик создать с ним. Там ошибки? Вроде только всяких мелочей не хватает вроде точек с запятой. Ща, узнаю, что не так.
Вообще должно. И выполниться корректно должно. Я не это имел ввиду. Просто вы не считаете, что такой дизайн немного кривоват?
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,544
Записей в блоге: 1
26.04.2012, 00:06
Цитата Сообщение от thick_int Посмотреть сообщение
И еще класс Parallelogram можнор дополнить вот такими функциями
Круто, а когда ты создашь какую-нибудь функцию для работы с ромбами
вроде хитрого определения пересечения сторон с вписанной окружностью второго ромба
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
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,544
Записей в блоге: 1
26.04.2012, 00:18
Ты создал функцию, которая принимает указатель на 2 ромба и делает с ним какое-то действие, свойственное только ромбам.
Например находит точку пересечения их вписанных окружностей.
Для прямоугольника это бессмысленно, а для ромба можно.

Теперь у тебя есть два квадрата. Они унаследовали такое св-во ромба, как вписанная окр-ть
Будешь ли ты писать две новых функции для выполнения этого алгоритма между квадратами
и между ромб и квадратом?????

Или воспользуешься наследованием???
0
Заблокирован
26.04.2012, 00:29
Вот в данном случае тот подход, который я, да и Вы тоже кстати реализовывали пока, только, на мой взгляд не очень корректно, не позволяет решить эти задачи.
Мы в данном случае на самом деле пытались построить класс конгруэнтных параллелограммов, то есть равных между собой с точностью до параллельного переноса, вращения, симметрии и любой их комбинации.

Вы же в данном случае перескакиваете с синтетики на аналитику. Если так охота, то пожалуйста. И вот здесь (но надо тоже все оценить) наверно можно из этого абстрактного класса конгруэнтных параллелограммов наследовать КОНКРЕТНЫЕ ПАРАЛЛЕЛОГРАММЫ, то есть прибивать их к плоскости и вот тогда можно приступать к анализу Вашей новой задачи.

А так вот с бухты-барахты я Вам на Ваш вопрос не отвечу.

P.S. Открою Вам страшную тайну. Если в выпуклый многоугольник можно вписать окружность, то радиус оной равен отношению площади данного многоугольника к его полупериметру.
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
26.04.2012, 12:12
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
А если у нас есть функция, находящая, скажем вписанную в ромб окружность. И функция находящая описанную вокруг прямоугольника окружность.
Что их, обе дублировать для квадрата?
Плохо знаю геометрию, но тут можно просто перегрузить эти функции для разных фигур.
Ромб не является параллелограммом с точки зрения ООП, т.к. параллелограмм характеризуется 2 сторонами и углом между ними, а ромб - 2 диагоналями, поэтому наследование тут неуместно. И вообще, играться с наследованием и динамическим полиморфизмом стоит как можно реже, вместо них лучше использовать агрегацию и compile-time полиморфизм(шаблоны).
1
What a waste!
 Аватар для gray_fox
1612 / 1304 / 180
Регистрация: 21.04.2012
Сообщений: 2,735
26.04.2012, 14:02
Да, вероятно от ТС так же ждут ещё и использования виртуального наследования.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.04.2012, 14:02

Определите что представляет из себя четырехугольник: ромб, прямоугольник, квадрат, трапеция
Помогите пожалуйста,Даны координаты вершин четырехугольника Составить программу для определения вида Определите один из видов: ромб,...

Объявить систему классов: Точка, Прямоугольник, Квадрат, Ромб, Трапеция, Треугольник, Четырехугольник
Необходимо создать систему классов: Точка, Прямоугольник, Квадрат, Ромб, Трапеция, Треугольник, Многоугольник. А также определить методы,...

Записать программу, которая по выбранному названию фигуры (тре- угольник, квадрат, ромб, прямоугольник и т
Записать программу, которая по выбранному названию фигуры (тре- угольник, квадрат, ромб, прямоугольник и т.п.) выводит формулу, по ко-...

Описать базовый класс: линия, параллелограмм, ромб
Условие: Определить иерархию классов, определить в этих классах методы, которые перемещает фигуру по плоскости, возвращают ее площадь,...

Уместиться ли целиком прямоугольник в параллелограмм
Выяснить, сможет ли прямоугольник со сторонами k и l целиком уместиться в параллелограмме ABCD, заданном своими вершинами A(x_a, y_a),...


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

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

Новые блоги и статьи
Калькулятор для расчета родства
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
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru