|
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
|
|
Как работает ООП?08.02.2021, 20:41. Показов 4991. Ответов 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 | |
|
Не работает код. ООП Не работает ООП код ООП: странно работает автоматическая функция
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки.
Добавлены следующие реквизиты типа Булево:
- Буквы;
- Цифры;
- Символы.
Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей.
Самым главным критерием для. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|