|
28 / 28 / 4
Регистрация: 24.07.2011
Сообщений: 171
|
||||||
Наследование от 2Д или 3Д фигур24.10.2011, 20:58. Показов 3630. Ответов 19
Метки нет (Все метки)
Была задана задача: создать абстрактный класс Shape (фигура) с вычислением характеристики любой фигуры (площадь или объем) и выводом параметров. От него создать производные классы "2Д фигуры" и "3Д фигуры", также абстрактные. От класса "2Д фигуры" создать несколько производных классов - конкретных фигур. От класса "3Д фигуры", так же, создать несколько производных конкретных классов. Всё бы ничего, но вот я задумался над тем, что же будут наследовать конкретные фигуры из классов "2Д" и "3Д". Получается, что классы "2Д" и "3Д" должны содержать что-то свойственное всем двумерным и трехмерным соответственно. Мои рассуждения на этот счет: все 2Д фигуры родственны тем, что их можно изобразить на плоскости с помощью осей X и Y. Таким образом, я думаю, что можно сделать в "2Д" данные, содержащие выпуклость фигуры по осям X и Y. В "3Д" еще для оси Z. Рисовать фигуру не надо. Только посчитать площадь или объем. Может у кого мысли по-интереснее есть насчет классов "2Д" и "3Д"? Мне кажется сомнительным то что я надумал.
Прототипы:
0
|
||||||
| 24.10.2011, 20:58 | |
|
Ответы с готовыми решениями:
19
Множественное наследование графических фигур правильное наследование геометрических фигур Наследование.Геометрические фигуры.Коллекция геометрических фигур.Непонятна работа с массивом |
|
63 / 35 / 13
Регистрация: 21.10.2010
Сообщений: 538
|
|
| 24.10.2011, 22:47 | |
|
Предлагаю следующую иерархию:
Класс фигура: члены: площадь и объем виртуальные функции: вычислить площадь и объем Класс 2D массив 2D точек/прямых из которых состоит эта фигура(x,y) Класс 3D массив 3D точек/прямых из которых состоит эта фигура(x,y,z) Далее например квадрат и правильный треугольник из 2D с переопределением всего что надо, тоже самое с кубом и тетраэдром из 3D
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 24.10.2011, 22:50 | |
|
hepr, в вашей архитектуре у двухмерной фигуры может быть вычислен объем. Писать заглушку у всех фигур типа return 0.0; - не тру.
0
|
|
|
54 / 44 / 11
Регистрация: 15.07.2011
Сообщений: 160
|
|||||||
| 24.10.2011, 23:01 | |||||||
0
|
|||||||
|
63 / 35 / 13
Регистрация: 21.10.2010
Сообщений: 538
|
||
| 24.10.2011, 23:04 | ||
|
0
|
||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 24.10.2011, 23:07 | |
|
0
|
|
|
28 / 28 / 4
Регистрация: 24.07.2011
Сообщений: 171
|
||
| 24.10.2011, 23:11 [ТС] | ||
|
0
|
||
|
85 / 9 / 1
Регистрация: 05.04.2010
Сообщений: 143
|
|
| 24.10.2011, 23:11 | |
|
Не по теме: Слабовато, товарищи форумчане. Покажите какую нибудь особую реализацию.
0
|
|
|
54 / 44 / 11
Регистрация: 15.07.2011
Сообщений: 160
|
||
| 24.10.2011, 23:22 | ||
|
0
|
||
|
28 / 28 / 4
Регистрация: 24.07.2011
Сообщений: 171
|
||
| 24.10.2011, 23:27 [ТС] | ||
|
0
|
||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 24.10.2011, 23:31 | |
|
Riderik, самый банальный вариант - свитч типов. Делаем класс Figure пустым, от него наследуем TwoDimFigure и ThreeDimFigure, в каждом из которых определяем свои методы (например, в 2д - площадь, в 3д - площадь поверхности и объём), а при обработке пробуем dynamic_cast'ом примести указатель на конкретную фигуру к 2д и к 3д. К какому типу получилось привести - те действия и выполняем.
0
|
|
|
28 / 28 / 4
Регистрация: 24.07.2011
Сообщений: 171
|
||
| 24.10.2011, 23:49 [ТС] | ||
|
0
|
||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 24.10.2011, 23:54 | |
|
Riderik, тога будет беда, если мы попробуем объём вычислить у двухмерной фигуры... Может ввести метод name, который будет возвращать название фигуры? тогда его можно будет включить в базовый класс Фигура и переопределить в наследниках обоих подтипов фигур.
Добавлено через 1 минуту Правда Фигура не будет содержать полный интерфейс, но общий (что и требуется от этого класса) содержать будет.
0
|
|
|
28 / 28 / 4
Регистрация: 24.07.2011
Сообщений: 171
|
|
| 24.10.2011, 23:56 [ТС] | |
|
Я сделал просто один метод с общим названием. В каждой фигуре он переопределен по-своему. Т.к. в 3Д не нужно считать площадь, а в 2Д не нужен объем, то одной функции, по-идее достаточно
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 24.10.2011, 23:57 | |
|
Riderik, с точки зрения программирования да, но не с точки зрения проектирование (что более важно и чему, по идее, и следует обучиться в курсе).
0
|
|
|
28 / 28 / 4
Регистрация: 24.07.2011
Сообщений: 171
|
|
| 25.10.2011, 00:00 [ТС] | |
|
Не по теме: Так у нас не проектирование. Это так, обучение программированию. Итак если базовый класс - интерфейс, то получается, что 2Д и 3Д пустые? Или оставить так, как я надумал?
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 25.10.2011, 00:04 | |
|
Riderik, при такой архитектуре (в данном случае) смысл классов 2д и 3д вообще теряется.
0
|
|
|
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
|
||||||||
| 25.10.2011, 01:31 | ||||||||
|
Защищенные данные - это ошибка проектирования, в нормально спроектированных классах их не должно быть. И не надо пихать данные в абстрактные классы, они не для этого предназначены. Более корректная иерархия может так выглядеть:
1
|
||||||||
|
28 / 28 / 4
Регистрация: 24.07.2011
Сообщений: 171
|
||
| 26.10.2011, 00:40 [ТС] | ||
|
Сегодня уточнил задание. Препод требует следующее:
Абстрактный класс Shape содержит виртуальные методы вычисления площади и объема (две функции). Также метод вывода информации. Т.е. этот класс обязательно должен быть интерфейсом. Далее абстрактный класс 2Д имеет в себе данные о координатах базовой точки 2Д фигуры. И реализован метод вычисления объема: пустая реализация (либо вывод ошибки). Далее в конкретных 2Д фигурах добавлены координаты других необходимых точек и реализованы методы вычисления площади и вывода информации. В 3Д аналогично, но с вычислением площади поверхности.
Задание довольно простое. Но насколько... корректно, что ли?
0
|
||
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|||
| 26.10.2011, 01:02 | |||
|
0
|
|||
| 26.10.2011, 01:02 | |
|
Помогаю со студенческими работами здесь
20
Рисовалка геометрических фигур - WinForms или WPF? Как нарисовать множество кругов или других фигур в SFML?
Массив разных фигур, и нахождение в нём площади всех фигур
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|