|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
|
Как работает ООП?08.02.2021, 20:41. Показов 4969. Ответов 77
Метки нет (Все метки)
Прочитал комментарий одного человека, что множественное наследование вредно и его надо избегать. Что следует думать по этому поводу и что применять в таких случаях, когда хочется его задействовать?
0
|
|
| 08.02.2021, 20:41 | |
|
Ответы с готовыми решениями:
77
|
|
3584 / 2184 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
|
|||||||||||||||||
| 09.02.2021, 13:36 | |||||||||||||||||
Выглядит кринжово... 100500 симптомов в одном классе, в лучшем случае 3-5 штук понадобятся... Мой вариант:
1
|
|||||||||||||||||
|
|
||
| 09.02.2021, 13:52 | ||
|
Добавлено через 1 минуту Arsegg, я понял вашу мысль, но это абсолютно непрактично. Со свойствами\пропертями выглядит отлично, это стандартный подход. Легко делать выборки, легко ложится на ORM (чтобы засунуть в БД).
1
|
||
|
3584 / 2184 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
|
|||
| 09.02.2021, 13:59 | |||
|
P. S. Я бы опять сделал enum CoughType и хранил в качестве значения для ключа Symptom.Cough в словаре./upd
1
|
|||
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
|
| 09.02.2021, 14:00 [ТС] | |
|
А как мне таскать рядом с англоязычным названием болезни или симптома русское название, чтобы оно было поблизости и видно было, что это одно и тоже, чтобы не ошибся?
Если название класса, то возможно можно использовать __doc__ А как быть с остальным?
0
|
|
| 09.02.2021, 14:02 | |
|
0
|
|
| 09.02.2021, 14:05 | |
|
Не по теме: Arsegg, сразу видно что ты не родной питонист,а пришел из другого ЯП, столько енамов мы еще не видели)))
0
|
|
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
|
| 09.02.2021, 14:08 [ТС] | |
|
0
|
|
| 09.02.2021, 14:11 | |
|
0
|
|
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
|
| 09.02.2021, 14:14 [ТС] | |
|
Так примеры кода в этой теме могут учитывать этот нюанс, если это не сложно программисту, который дает совет. Так как нужное решение возможно может совсем получиться другим с учетом этой особенности.
0
|
|
|
3584 / 2184 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
|
|
| 09.02.2021, 14:19 | |
|
0
|
|
|
|
|||||||||
| 09.02.2021, 14:20 | |||||||||
|
1.
2. С функциями - всё получается отлично. Таблица больных просматривается на ура - причём под капотом может быть любой вид. Хоть питоновские объекты в памяти, хоть pandas dataframe, хоть джанга со своей БД.
2
|
|||||||||
|
3584 / 2184 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
|
|||||||||||
| 09.02.2021, 15:05 | |||||||||||
O(K), где K - количество признаков. Куда быстрее?Что если какой-нибудь признак перестанет быть нужным, просто удалить? А как же обратная совместимость? P. S. Мне кажется, писать сильно связный код - плохая затея, имхо...
1
|
|||||||||||
| 09.02.2021, 15:06 | ||
|
предок -> потомок. При этом потомок наследует все свойства предка и добавляет еще свои, которых нет у предка. То есть мы имеем схему расширения количества свойств. Композиция, это совсем другое, это механизм целое <- часть. При этом часть имеет только ограниченное количество свойств от целого. И только объединение всех свойств частей создает целое. То есть мы имеем схему сужения количества свойств от целого к части. Поэтому эти механизмы не взаимозаменяемы. Каждый используется в разных случаях реального мышления. Например у Лутца есть раздел посвященный композиции и там рассматривается пример "Пиццерия". У Пиццерии есть части, официант, клиент, печь, повар. И у каждого свои свойства, но каждый является неотъемлемой частью Пиццерии. И никакого наследования там действительно нет. Заменять наследование композицией, это значит не понимать процесс мышления человека. Ведь сами понятия "наследование" и "композиция" берут свое начало от того, какими понятиями оперирует человек при мышлении. Там где реально существует наследование, нужно применять наследование, а там где мы имеем дело с композицией, применять композицию.
3
|
||
|
3584 / 2184 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
|
||
| 09.02.2021, 15:17 | ||
|
В основном, наследование применяют не к месту (особенно множественное наследование). Данный случай (класс болезнь и ее признаки) - яркий тому пример.
1
|
||
| 09.02.2021, 15:24 | |
|
0
|
|
| 09.02.2021, 15:45 | ||
|
Мы имеем болезнь и признаки (свойства) этой болезни. Все дело в том, что многие болезни имеют схожие признаки, например самое простое, это наличие температуры. Для того, что бы четко дать определение конкретной болезни, нужно выявить все ее признаки. Сложность состоит в том, что для каждого частного случая болезни, некоторые признаки могут проявляться, а некоторые нет. А еще часто мы имеем дело с наличием у больного нескольких заболеваний одновременно, что приводит к тому, что получаем набор признаков, которые на самом деле принадлежат разным болезням. Именно поэтому случаются случаи, что врачи не могут поставить точный диагноз. И программа в этом случае тоже его точно не поставит. Но программа может быстро дать информацию, какие из существующих признаков могут относится к каким болезням. Что поможет врачу понять какие еще нужны исследования, что бы сузить перечень возможных болезней и уточнить диагноз. В данном случае, в отличие от большинства задач, мы заранее не знаем к какому заболеванию (классу) принадлежит конкретный случай. То есть в данном случае мы имеем объект (конкретный случай заболевания) имеющий набор атрибутов, и нужно подобрать множество классов болезней, которые имеют такие атрибуты (включая возможность одновременного наличия нескольких болезней, объединение атрибутов). Вобщем задача не тривиальная. И начинать нужно с разработки алгоритма, который достаточно сложный.
1
|
||
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
||
| 09.02.2021, 15:51 [ТС] | ||
|
Сейчас кое-что важное поищу в медицинской книге.
0
|
||
|
|
|||||||||||||
| 09.02.2021, 16:05 | |||||||||||||
Решение с функциями не содержит проблемы "расшириить тип" в принципе. Дело даже не в реляционной БД. Решение с функциями ложится на любую таблицу в принципе. Например, уже упомянутый pandas dataframe, или табличная модель в смысле Qt. Со множествами - нет. С этой точки зрения, функции дают нам понимание, что содержит объект. Множества - не дают. А если ваши енумы заменить на строки - будет ещё бОльшая гибкость. Вопрос вам. Что будет, если какой-нибудь признак перестанет быть нужным? Просто удалить? А в объектах останется этот мусор с его значениями?
1
|
|||||||||||||
| 09.02.2021, 16:06 | ||
|
Хотя Вы видимо правы, в ТЗ нужно бы указать как врач должен взаимодействовать с программой. Какие данные вводить на входе, какие данные вводить дополнительно при получении промежуточных результатов (как я описал выше). Все это понадобится при разработке алгоритма. Вообще разработка алгоритма для любой серьезной задачи всегда происходит в тесном взаимодействии с заказчиком, по ходу разработки алгоритма, а часто и программы, для уточнения некоторых моментов, упущенных в ТЗ.
2
|
||
|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
|
| 09.02.2021, 16:16 [ТС] | |
|
Кстати ссылка на интересный код по теме, на Лиспе, есть в этом посте MICRO LISP. Экспертная система
0
|
|
| 09.02.2021, 16:16 | |
|
Не работает код. ООП Не работает ООП код ООП: странно работает автоматическая функция
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге).
Задача:
Программно добавить префикс в нумерацию документов.
Решение:
В модуле объекта. . .
|
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
|
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него.
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952
Инструкция внутри.
https:/ / youtu. be/ VpfFZSUDGnQ. . .
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|