|
6 / 5 / 1
Регистрация: 04.04.2022
Сообщений: 85
|
|
Создать класс четырехугольников, квадратов и прямоугольников22.10.2022, 18:13. Показов 1532. Ответов 6
Метки нет (Все метки)
Создать класс четырехугольников, квадратов и прямоугольников. Создать из них иерархию. Определить функции печати, конструкторы и деструкторы, вычисление площади и периметра. Функции вычисления площади и периметра должна быть виртуальными. Программа должна содержать меню, позволяющее осуществить проверку всех методов классов.
Иерархия - это дочерние классы? Т.е, четырёхугольник (главный) -> прямоугольник -> квадрат? Как определить функции печати (это что такое?) Для виртуальности функций нужно просто virtual перед ними поставить?
0
|
|
| 22.10.2022, 18:13 | |
|
Ответы с готовыми решениями:
6
Создать структуру параллелограмм, посчитать количество квадратов и прямоугольников (ошибки) Создать класс прямоугольников |
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
|||||||||
| 22.10.2022, 18:46 | |||||||||
Сообщение было отмечено Suppas15 как решение
РешениеТогда можно писать std::cout << object;, что красиво и удобно.Пример
Остальным можно дописать override. Добавлено через 10 минут Тут я бы хотел заметить, что несмотря на кажущуюся закономерность наследования ибо квадрат с геометрической точки зрения является прямоугольником, с точки зрения ООП квадрат себя НЕ ВЕДЁТ как прямоугольник. Поэтому наследование будет иметь смысл только если у этих классов не будет поведения. В принципе, скорее всего будет достаточно сделать их немутабельными. То бишь, сделать так, чтоб после создания данные в этих классах нельзя было изменить.
1
|
|||||||||
|
6 / 5 / 1
Регистрация: 04.04.2022
Сообщений: 85
|
|
| 22.10.2022, 18:56 [ТС] | |
|
lemegeton, Спасибо, понял.
0
|
|
|
6 / 5 / 1
Регистрация: 04.04.2022
Сообщений: 85
|
||||||
| 23.10.2022, 15:02 [ТС] | ||||||
|
Задание:
Создать класс четырехугольников, квадратов и прямоугольников. Создать из них иерархию. Определить функции печати, конструкторы и деструкторы, вычисление площади и периметра. Функции вычисления площади и периметра должна быть виртуальными. Программа должна содержать меню, позволяющее осуществить проверку всех методов классов. Знаю, что код полная шляпа, пытаюсь улучшить: 1) Как сделать так, чтобы он в меню реально возвращался к выбору фигуры, а не завершал всю программу через return 0? (лучшего не придумал) 2)Как сделать функции виртуальными? Не нашёл родительских функций (скорее всего, у меня их и нет) 3)Где тут вообще можно "вставить" деструкторы и конструкторы (не по умолчанию), или можно без них?
0
|
||||||
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
|||||||||||||
| 23.10.2022, 18:06 | |||||||||||||
Сообщение было отмечено Suppas15 как решение
РешениеKvadrat описывает тогда что?Повторюсь, ваша иерархия неверна, потому что ваши классы ведут себя по-разному, но раз уж вы собираетесь это сделать, то: Наследование должно идти по пути "является и ведет себя как". Например, квадрат является прямоугольником. Значит наследуем квадрат от прямоугольника: class Square : public RectangleЧетырёхугольник является квадратом? Нет. Некоторые четырёхугольники не являются квадратами. Не наследуем от квадрата четырёхугольника. Прямоугольник является четырёхугольником. Значит наследуем прямоугольник от четырехугольника. class Rectangle: public QuadrilateralКвадрат будет опосредовано унаследован от четырехугольника. Через прямоугольник. Сущность должна быть отделена от операций с сущностью и её методы не должны делать побочных эффектов. В ООП есть такая штука -- инкапсуляция называется. Это, грубо говоря, сокрытие данных за интерфейсом класса. Поля класса уберите в блок private, в блоке public сделайте методы для доступа к этим данным. Для вычисления площади прямоугольника недостаточно длин сторон. Нужно ещё что-то. Диагональ там например. Что избыточно для прямоугольника и квадрата. Деструктор можно задекларировать явно и нужно сделать виртуальным. Добавлено через 23 минуты
1
|
|||||||||||||
|
6 / 5 / 1
Регистрация: 04.04.2022
Сообщений: 85
|
|
| 25.10.2022, 20:12 [ТС] | |
|
lemegeton, Начиная с 86 строки ничего не понял (да и до неё сложновато), ибо не изучал такое никогда. Эту "перегрузку" операторов вывода можно как-то заменить? Чтобы можно было вводить значения с клавиатуры и меню удобно составить через switch?
0
|
|
|
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
|
||||||||||||||
| 25.10.2022, 22:25 | ||||||||||||||
|
Перегруженный оператор это просто функция, которая позволяет использовать в её в качестве оператора.
То бишь вот это
Потому что если она не будет таким вот специальным образом называться, её нельзя будет использовать в качестве оператора. Добавлено через 33 секунды Добавлено через 4 минуты Концепция простейшая. Да и в интернете полно статей про перегрузку операторов (в данном случае ввода и вывода).
1
|
||||||||||||||
| 25.10.2022, 22:25 | |
|
Помогаю со студенческими работами здесь
7
Дано N четырехугольников и M квадратов, найти четырехугольники с минимальной и максимальной площадью и номера одинаковых Создать иерархию классов для хранения четырехугольников Создать класс Integral, в котором реализовано вычисление определенного интеграла методом прямоугольников, методом трапец Вводятся координаты N прямоугольников; определить, сколько среди них квадратов Создать класс колесо, имеющее радиус. Определить конструкторы. Создать класс машин, содержащий класс колесо Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
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-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|