|
0 / 0 / 0
Регистрация: 29.07.2021
Сообщений: 27
|
|
Класс Дом04.09.2021, 00:11. Показов 3589. Ответов 4
Создайте class House, экземпляры которого должны иметь такие аттрибуты как тип дома, общая площадь, оставшаяся площадь и список мебели.
Экземпляр класса мебели в свою очередь должен иметь название и площадь, например - кровать: 4 м2, шкаф-купе: 2 м2, стол: 1,5 квадратных метров. Добавьте вышеуказанную мебель в дом. При печати информации о доме требуется вывод: тип дома, общая площадь, оставшаяся площадь, список мебели.
0
|
|
| 04.09.2021, 00:11 | |
|
Ответы с готовыми решениями:
4
Дом за зеркалом Вася строит дом |
| 04.09.2021, 22:43 | ||||||
|
Kwan Timur, Начнем с постановки задачи.
Раз нам нужно создать класс домов, значит предполагается рассмотрение не одного дома а их множество. Это в свою очередь требует сохранение списка домов в базе данных "Дома". Но для базы данных нужен уникальный ключ для каждого дома. Возможно два варианта, или взять в качестве уникального ключа адрес дома, или порядковый номер (идентификатор ID_h) в списке домов. Для простоты возьмем второе, то есть ключем будет ID_h. Так как порядковый номер в списке не является свойством реального дома, описывать его как атрибут в классе не будем. ID_h экземпляру класса будем присваивать при формировании списка домов. Список у нас будет в виде словаря, где ключом у каждого элемента будет его ID_h , а значением экземпляр класса House (Дом). Аналогично создадим список мебели, который будет сохраняться в своей базе данных "Мебель". Здесь аналогично список будет в виде словаря, где ключом у каждого элемента будет его ID_f , а значением экземпляр класса Furniture (Мебель). Идентификатор из списка мебели не является свойством реального объекта мебели, поэтому в описание класса мебели идентификатор не входит. Опишем свойства дома, принадлежащие любому дому класса "Дом", и присвоим их абстрактному объекту self, являющимся обобщенным объектом класса "Дом", и имеющем атрибуты, которые есть у любого реального дома. Напишем код для класса House (программная модель класса "Дом"). Имя файла (модуля) house : Кликните здесь для просмотра всего текста
2
|
||||||
| 05.09.2021, 12:56 | |||||||||||
|
Теперь опишем класс Furniture (Мебель), поместив его в файл (модуль) furniture.py:
Замечание. Файл с классом House называется house.py. Добавлено через 20 минут Прежде чем приступить к написанию алгоритма, внесем исправление в Постановку задачи. Использование двух баз данных или одной базы данных с двумя связанными таблицами я хотел применить, что бы показать возможности шаблона, который я буду применять. Но хотя шаблон позволяет использовать одновременно несколько БД , однако это усложняет код. Но главное, если есть необходимость использовать несколько связанных таблиц в реляционной БД, то лучше для таких задач вместо питона использовать стандартные СУБД, которые ориентированны именно на такие задачи. Питон же лучше использовать для хранения данных в простой БД с одной таблицей. Или при необходимости совмещать хранение данных в СУБД и использовать питон по минимуму для работы с таблицами из СУБД, так как СУБД, кроме хранения, обладают большими возможностями для обработки данных из своих таблиц. Поэтому упростим Постановку задачи и будем хранить данные в одной БД, а именно базе "Дома". Экземпляры класса "Мебель" будем просто помещать в список каждого дома. Мы в отличие от СУБД получим избыточность данных, но для нас важнее простота кода. Добавлено через 1 час 0 минут Kwan Timur, Теперь можно перейти к написанию алгоритма решения задачи. Для работы с базой данных нам нужно меню. 1) Создание меню. (для начала используем меню шаблона и модифицируем шаблон под нашу задачу). Кликните здесь для просмотра всего текста
Так как шаблон работает только с одной БД, то мы пока будем оставлять список мебели пустым. 2) Создать подменю, для заполнения списка мебели для каждого дома экземплярами мебели. При добавлении мебели нужно проверять, что для нее есть место (заполнение чисто механическое, без учета удобства размещения). 3) Обеспечить вывод на экран информации о доме с выводом списка принадлежащей ему мебели. При написании кода, при необходимости в алгоритм будут вносится изменения. Для удобства проектирования для каждого класса будем использовать свой файл (модуль). Итак проект будет состоять из 7-ми файлов: 1) example_House.py - сценарий (основной файл). Взят из шаблона. 2) program_Tools.py - программный инструментарий (главный файл агрегированного модуля, с коммутатором). Из шаблона. 3) input_Data.py - входные данные. Из агрегированного модуля шаблона. 4) output_Data.py - выходные данные. Из агрегированного модуля шаблона. 5) journal.py - журнал записей с экземплярами класса "Дом". Из агрегированного модуля шаблона. 6) house.py - содержит класс House (Дом). Из агрегированного модуля шаблона. 7) furniture.py - содержит класс Furniture (Мебель). Будет добавлен в агрегированный модуль.
2
|
|||||||||||
| 05.09.2021, 22:40 | ||||||
Сообщение было отмечено Kwan Timur как решение
Решение
Kwan Timur, Я в классе House обнаружил ошибку. Вот исправленный код. Это код с проверкой. Он может быть достаточным как решение для Вашей задачи.
Кликните здесь для просмотра всего текста
1
|
||||||
| 07.09.2021, 15:15 | ||||||||||||||||||||||||||||||||||||
|
Kwan Timur, Используя шаблон с агрегированным модулем и модифицировав его под данную задачу получил следующий проект из 7-ми файлов. Код рабочий, позволяет работать с БД Дома, но пока без мебели. 7-ой файл с классом "Мебель" пока не используется, но к коммутатору подключен.
Осталось теперь добавить в код размещение в домах мебели. Использованная технология позволяет легко работать с большим количеством модулей, объединив их в один агрегированный модуль. Что позволяет из любого места напрямую обращаться к любой переменной, к которой вы могли бы обратится , будь весь код в одном файле. Все файлы загружаются сразу, поэтому программа работает так же быстро, как и тогда, когда код размещен в одном файле. Но в данном случае код структурирован и с ним очень легко работать используя IDE (среду разработки), как при разработке, так и при модификации кода. Легко переходить от модуля к модулю одним щелчком мыши и разбираться в одной структурной единице, ограниченного объема. Из за большого количества модулей, размещу их в нескольких комментариях. Напомню структуру проекта: 1) example_House.py - сценарий (основной файл). Создан на базе шаблона. 2) program_Tools.py - программный инструментарий (главный файл агрегированного модуля, с коммутатором). Из шаблона. 3) input_Data.py - входные данные. Из агрегированного модуля шаблона. 4) output_Data.py - выходные данные. Из агрегированного модуля шаблона. 5) journal.py - журнал записей с экземплярами класса "Дом". Из агрегированного модуля шаблона. 6) house.py - содержит класс House (Дом). Из агрегированного модуля шаблона. 7) furniture.py - содержит класс Furniture (Мебель). Добавлен в агрегированный модуль. Все файлы должны быть помещены в один каталог. Файл example_House.py : Кликните здесь для просмотра всего текста
Добавлено через 4 минуты Файл program_Tools.py : Кликните здесь для просмотра всего текста
Файл input_Data.py : Кликните здесь для просмотра всего текста
Добавлено через 5 минут Файл output_Data.py : Кликните здесь для просмотра всего текста
Файл journal.py : Кликните здесь для просмотра всего текста
Добавлено через 10 минут Файл house.py : Кликните здесь для просмотра всего текста
Файл furniture.py : Кликните здесь для просмотра всего текста
1
|
||||||||||||||||||||||||||||||||||||
| 07.09.2021, 15:15 | |
|
Помогаю со студенческими работами здесь
5
Бесконечно высокий дом Дом на другой стороне улицы Нарисовать дом Нарисовать дом, солнышко и раскрасить их Задача: Вася строит дом Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|