|
0 / 0 / 0
Регистрация: 29.07.2021
Сообщений: 27
|
|
Класс Дом04.09.2021, 00:11. Показов 3622. Ответов 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
Бесконечно высокий дом Дом на другой стороне улицы Нарисовать дом Нарисовать дом, солнышко и раскрасить их Задача: Вася строит дом Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|