|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
|
Как работает ООП?08.02.2021, 20:41. Показов 4722. Ответов 77
Метки нет (Все метки)
Прочитал комментарий одного человека, что множественное наследование вредно и его надо избегать. Что следует думать по этому поводу и что применять в таких случаях, когда хочется его задействовать?
0
|
|
| 08.02.2021, 20:41 | |
|
Ответы с готовыми решениями:
77
|
|
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
|
|||||||||||||||||
| 09.02.2021, 13:36 | |||||||||||||||||
Выглядит кринжово... 100500 симптомов в одном классе, в лучшем случае 3-5 штук понадобятся... Мой вариант:
1
|
|||||||||||||||||
|
|
||
| 09.02.2021, 13:52 | ||
|
Добавлено через 1 минуту Arsegg, я понял вашу мысль, но это абсолютно непрактично. Со свойствами\пропертями выглядит отлично, это стандартный подход. Легко делать выборки, легко ложится на ORM (чтобы засунуть в БД).
1
|
||
|
3582 / 2182 / 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
|
|
|
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
|
|
| 09.02.2021, 14:19 | |
|
0
|
|
|
|
|||||||||
| 09.02.2021, 14:20 | |||||||||
|
1.
2. С функциями - всё получается отлично. Таблица больных просматривается на ура - причём под капотом может быть любой вид. Хоть питоновские объекты в памяти, хоть pandas dataframe, хоть джанга со своей БД.
2
|
|||||||||
|
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
|
|||||||||||
| 09.02.2021, 15:05 | |||||||||||
O(K), где K - количество признаков. Куда быстрее?Что если какой-нибудь признак перестанет быть нужным, просто удалить? А как же обратная совместимость? P. S. Мне кажется, писать сильно связный код - плохая затея, имхо...
1
|
|||||||||||
| 09.02.2021, 15:06 | ||
|
предок -> потомок. При этом потомок наследует все свойства предка и добавляет еще свои, которых нет у предка. То есть мы имеем схему расширения количества свойств. Композиция, это совсем другое, это механизм целое <- часть. При этом часть имеет только ограниченное количество свойств от целого. И только объединение всех свойств частей создает целое. То есть мы имеем схему сужения количества свойств от целого к части. Поэтому эти механизмы не взаимозаменяемы. Каждый используется в разных случаях реального мышления. Например у Лутца есть раздел посвященный композиции и там рассматривается пример "Пиццерия". У Пиццерии есть части, официант, клиент, печь, повар. И у каждого свои свойства, но каждый является неотъемлемой частью Пиццерии. И никакого наследования там действительно нет. Заменять наследование композицией, это значит не понимать процесс мышления человека. Ведь сами понятия "наследование" и "композиция" берут свое начало от того, какими понятиями оперирует человек при мышлении. Там где реально существует наследование, нужно применять наследование, а там где мы имеем дело с композицией, применять композицию.
3
|
||
|
3582 / 2182 / 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 | |
|
Не работает код. ООП Не работает ООП код ООП: странно работает автоматическая функция
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата)
Этот документ предназначен для того, чтобы новый чат Claude мог продолжить
работу без необходимости заново разбираться в. . .
|