|
0 / 0 / 0
Регистрация: 08.04.2019
Сообщений: 10
|
|
Создать абстрактный класс27.05.2019, 16:32. Показов 16158. Ответов 11
Метки python 3.7 (Все метки)
Создать абстрактный класс Figure с методами вычисления площади и периметра, а также методом, который выводит информацию о фигуре на экран. Создать производные классы: Rectangle (прямоугольник), Circle (круг), Triangle (треугольник) со своими методами вычисления площади и периметра. Создать массив n фигур и вывести полную информацию о фигурах на экран.
0
|
|
| 27.05.2019, 16:32 | |
|
Ответы с готовыми решениями:
11
Создать абстрактный класс Создать абстрактный класс «Издание» Создать абстрактный класс CVehicle. На его основе реализовать классы СРТапе, ССаг и CShip |
| 28.05.2019, 09:57 | ||||||
Добавлено через 13 минут Zen26, Что касается методов расчета периметра и площади для произвольной фигуры (например для нарисованного контура зайчика), я не знаю как считать, даже для интеграла нужна функция описывающая контур фигуры. Если найдете алгоритм вычисления периметра и площади для произвольной фигуры, то расчет можно будет вставить в методы вместо "pass".
0
|
||||||
|
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
|
||||||
| 28.05.2019, 09:58 | ||||||
|
Используйте
0
|
||||||
| 28.05.2019, 15:24 | |
|
Рыжий Лис, Возбуждая вручную исключение, Вы же не вычисляете периметр или, площадь. Хотя такой подход позволяет перехватывать эти методы , если они не перехвачены подклассами, и выполнять какие то действия, хотя я не представляю какие. Если же только для выдачи сообщений пользователям, то эти сообщения можно просто выводить в этих методах и без использования запрограммированных исключений. Мне так кажется, или я просто Вас не понял.
Добавлено через 4 минуты Хотя с другой стороны, то, что предлагаете Вы, делает код более понятным и более логически органичным.
0
|
|
| 28.05.2019, 15:41 | ||
|
Добавлено через 3 минуты Я что то подзабыл. Или у Вас это делегирование, и у Вас если этих методов не будет в подклассе, то тоже ничего не произойдет? Лень сейчас лезть в учебник и вспоминать. ![]() Добавлено через 7 минут Вообще немного глупое задание, вычислять то, чего нельзя вычислить. Хотя вот ioprst, что то предложил, что как бы можно вычислить каким то общим методом для любой фигуры. Хотя интуитивно мне кажется это не возможно Если подходить формально, то в условии не говорится, что периметр должен быть непрерывной линией. А среди любых фигур могут быть и дискретные, с разбросанными частями. И как тогда вычислять, понятия не имею.
0
|
||
|
1303 / 843 / 409
Регистрация: 12.03.2018
Сообщений: 2,305
|
|
| 28.05.2019, 18:15 | |
|
Viktorrus, идея Рыжего Лиса в том, что если не переопределить методы в потомках, будет возникать исключение, что логично, т.к. абстрактные методы обязаны быть переопределены (из ООП). Просто решение задачи без дополнительных модулей.
0
|
|
| 29.05.2019, 01:13 | |||||||||||||||||||||
|
ioprst, Так я про то и написал, что он программно вызывает исключение. Но при правильно написанных подклассах эти методы не запустятся, а во вторых можно просто в этих методах печатать сообщение об ошибке, поясняющее в чем дело. И программное создание исключения в данном случае ничего особенно не дает. Но если так нравится исключение, то можно и с исключением.
![]() Добавлено через 36 минут Zen26, Извините. я не сразу врубился, что это задание на создание абстрактных классов. Поэтому предложение Рыжий Лис, уместно. Напишите эти методы как предлагает он. Добавлено через 5 минут Вот информация об абстрактных классах у Лутц М. Изучаем Python (4-е издание, 2011) стр. 778-781. "Абстрактные суперклассы – классы, которые предполагают, что часть их функциональности будет реализована их подклассами.
Обратите внимание, как работает класс Provider в предыдущем примере. Когда через экземпляр класса Provider вызывается метод delegate, инициируются две независимые процедуры поиска: 1. При вызове x.delegate интерпретатор отыскивает метод delegate в классе Super, начиная поиск от экземпляра класса Provider и двигаясь вверх по дереву наследования. Экземпляр x передается методу в виде аргумента self, как обычно. 2. Внутри метода Super.delegate выражение self.action приводит к запуску нового, независимого поиска в дереве наследования, начиная от экземпляра self и дальше вверх по дереву. Поскольку аргумент self ссылается на экземпляр класса Provider, метод action будет найден в подклассе Provider. Такой способ «восполнения пробелов» в реализации – обычное дело для платформ ООП. По крайней мере, в терминах метода delegate такие суперклассы, как в этом примере, иногда называют абстрактными суперклассами – классы, которые предполагают, что часть их функциональности будет реализована их подклассами. Если ожидаемый метод не определен в подклассе, интерпретатор возбудит исключение с сообщением о неопределенном имени, когда поиск в дереве наследования завершится неудачей. Разработчики классов иногда делают такие требования к подклассам более очевидными с помощью инструкций assert или возбуждая встроенное исключение NotImplementedError с помощью инструкции raise (более подробно об инструкциях, которые могут возбуждать исключения, мы поговорим в следующей части книги). Ниже приводится короткий пример приема, основанного на применении инструкции assert:
Добавлено через 2 минуты
Если что, то читайте Лутца.
0
|
|||||||||||||||||||||
| 29.05.2019, 13:54 | ||||||||||||
|
Zen26, Понятие абстрактных суперклассов достаточно сложное. Извините, я не сразу сообразил, что здесь требуется.
Из Лутца: " Способ определения абстрактного суперкласса зависит от версии интерпретатора. В Python 3.0 для этих целей используется именованный аргумент в заголовке инструкции class и специальный декоратор @abstract методов. Обе конструкции мы будем подробно рассматривать далее, в этой книге:
в главе 38 "Декораторы" и в главе 39 "Метаклассы" Я их еще не изучал. Поэтому еще раз извините, что сразу не разобрался и запудрил Вам мозги. Может кто-то, кто разбирается с абстрактными суперклассами, поможет Вам. Добавлено через 5 минут
Добавлено через 11 минут Рыжий Лис, Я Вас тоже не сразу понял, извините.
0
|
||||||||||||
|
0 / 0 / 0
Регистрация: 27.05.2019
Сообщений: 122
|
|
| 29.05.2019, 18:56 | |
|
Тупое название "абстрактный класс", как будто бы класс может быть не абстрактным.
0
|
|
| 29.05.2019, 18:56 | |
|
Помогаю со студенческими работами здесь
12
Создать абстрактный класс Издание с виртуальными методами
Создать абстрактный класс «Товар», на его основе создать класс «Автомобиль» Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|