|
0 / 0 / 0
Регистрация: 21.05.2019
Сообщений: 5
|
|
ООП. Геометрические фигуры10.02.2020, 17:52. Показов 5756. Ответов 27
Классическая задачка на абстрактные классы: создать абстрактный класс Figure, напихать туда чисто виртуальных методов аля Draw(), Rotate(), Expand() и так далее, унаследоваться от него всякими Line, Triangle, реализовать методы абстрактного класса, запихать адреса потомков в вектор указателей родительского класса и вызывай себе из него методы.
Но вот задумался: по сути дела у нас может быть Point - класс, описывающий точку как геом. фигуру. И вот её крутить и деформировать, как по мне, абсолютно бесполезно. И что же это выходит - придется пилить отдельный класс FigureWithoutRotate или лепить мелкие интерфейсы аля IDraw(), IRotate(), IExpand(), где надо их реализовать. Но тогда фиг запихнёшь все твои точки и треугольники в один вектор. Можно вообще продолжать наследоваться от Figure, а для неугодных методов делать пустую реализацию и/или кидать их в приватную секцию. Короче ступор. Как же тогда поступить?
0
|
|
| 10.02.2020, 17:52 | |
|
Ответы с готовыми решениями:
27
Классическая задача ООП: геометрические фигуры
|
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|
| 10.02.2020, 18:41 | |
|
1
|
|
|
0 / 0 / 0
Регистрация: 21.05.2019
Сообщений: 5
|
||
| 10.02.2020, 19:10 [ТС] | ||
0
|
||
|
199 / 155 / 45
Регистрация: 11.11.2019
Сообщений: 348
|
||
| 10.02.2020, 20:25 | ||
|
2. Не придумывать классификацию "на все случаи жизни", т.к. это гиблое дело. 3. На основании поставленных задач определить отношения между классами. В результате может оказаться, например, что Point нужна лишь как часть (подобъект) более сложной геом. фигуры. В этом случае она играет роль вершины и вступает с другими фигурами в ассоциативную связь. Тогда возникает вопрос стоит ли Point наследовать от Figure. Если же круг задач требует от Point быть самостоятельной фигурой, то для нее следует определить центр трансформации (т.н. pivot point) и работать с ней как с полноценной геометрией, потому что имея центр трансформации, можно перемещать поворачивать и масштабировать все что угодно, в том числе и точку.
2
|
||
|
|
|||
| 10.02.2020, 21:18 | |||
|
Помимо указанных выше замечаний: Можно сказать что если Rotate(), Expand() лишены смысла то возможно их не стоит включать в класс Figure. А создать другой абстрактный класс с ними.
1
|
|||
|
199 / 155 / 45
Регистрация: 11.11.2019
Сообщений: 348
|
||
| 10.02.2020, 21:25 | ||
|
При этом деформация точки это абсолютно нормальная (имеющая смысл) операция, возможная в том случае, если для геометрической фигуры (в т.ч. и точки) определена другая точка, относительно которой производится деформация.
1
|
||
|
199 / 155 / 45
Регистрация: 11.11.2019
Сообщений: 348
|
|
| 10.02.2020, 21:31 | |
|
1
|
|
|
199 / 155 / 45
Регистрация: 11.11.2019
Сообщений: 348
|
||
| 10.02.2020, 21:48 | ||
|
0
|
||
|
199 / 155 / 45
Регистрация: 11.11.2019
Сообщений: 348
|
|
| 10.02.2020, 23:36 | |
|
Avazart, не буду спорить, т.к. подзабыл уже школьные определения. Вот тут по ссылке, например, есть такое: https://naobumium.info/planime... tochka.php
0
|
|
|
|
||
| 10.02.2020, 23:46 | ||
|
Точку определять как фигуру, а фигуру как множество точек как-то не логично.
Добавлено через 1 минуту
В то время как фигура- плоский объект, тело- трехмерный объект.
0
|
||
|
199 / 155 / 45
Регистрация: 11.11.2019
Сообщений: 348
|
||
| 10.02.2020, 23:48 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 21.05.2019
Сообщений: 5
|
|
| 11.02.2020, 13:30 [ТС] | |
|
Заставили задуматься конечно по поводу природы точки. Пришел к двум вариантом: или точка нечто вообще иное и единственное, что будет роднить её с фигурой это возможность её рисовать, перемещать и так далее. Выходит, будет отдельный абстрактный класс, который наследует несколько интерфейсов. И потом наследуется от него, реализуем интерфейсы и готово.
И второй вариант: точка геометрическая фигура по своим свойствам схожа с кругом и тогда нужно сначала круг сделать, потом от него наследоваться. И если поворот вокруг своего центра для круга может быть полезным (например, в круге текст или символ), то для точки придется писать пустую реализацию, ведь поворот вокруг другой точки, как по мне, немного другая история и для неё нужна отдельная функция. А то выходит как перегрузка оператора ^ не как XOR, а как возведение в степень. Хотя, многие так делают и им норм
0
|
|
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||||||
| 11.02.2020, 13:59 | ||||||
|
Chupakabra0_0, т.к. у тебя задача на классы, а не на математику или графику, то вот пример для твоей иерархии
1
|
||||||
|
199 / 155 / 45
Регистрация: 11.11.2019
Сообщений: 348
|
|
| 11.02.2020, 15:33 | |
|
zayats80888, как может выглядеть осмысленная реализация метода Point::scale(double factorX, double factorY) ?
0
|
|
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
|||||||
| 11.02.2020, 17:42 | |||||||
|
Тут так же.
0
|
|||||||
| 11.02.2020, 17:42 | |
|
Помогаю со студенческими работами здесь
20
ООП . Геометрические тела Геометрические фигуры с++ нарисовать геометрические фигуры
Геометрические фигуры: реализовать наследование с полиморфизмом Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Сочетание глобально распределённой вычислительной мощности и инновационных. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|