Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

И-поиск. Информация. Знание. Моделирование в инф. системах - Проблемы существующих методов моделирования. ООП.


Проблемы существующих методов моделирования. ООП.

Рассмотрим только некоторые из них, для того, чтобы "войти" в эту тему и понять насколько многие концепции моделирования неидеальны, неуниверсальны

А могут ли такие вообще быть?

ООП - объектно-ориентированное программирование

Что это такое, на эту тему написано и сказано много, поэтому не будем останавливаться на этом

Одна из проблем ООП - это проблема моделирования фазовых переходов "личинка-гусеница-куколка-бабочка".

Если с помощью ООП смоделировать этот процесс, то надо задаться сперва вопросом, а бабочка и куколка - это один и тот же объект?

В зависимости от ответа зависит механизм реализации.

Если один и тот же - то создается один класс для объекта и определяются все возможные свойства на все возможные фазовые переходы. В этом случае проблема с "лишними" свойствами, которые присутствуют на определенной фазе. Что с ними делать? "Обнулять", игнорировать? Получается, что надо модель "подгонять" из-за такой вот концепции ООП.

Если считается, что это разные объекты то, учитывая, что в каком-то смысле это разные сущности, и классы создаются разные, но при фазовых переходах какие-то свойства (качества) копируются из одного объекта в другой. При этом при создании нового объекта фазы, надо уничтожать старый объект прежней фазы, что также не совсем правильно моделирует реальную среду, а опять же связано с особенностями реализации.

То же самое относится не только к свойствам объекта, но и к законам и поведению объекта (хотя поведения и законы объекта можно назвать его качествами и свойствами).

Правильно было бы в этом случае использовать другой метод моделирования.

Какой?

Примерно похож вопрос разделения объекта и соединения объектов.

При разделении (распиливаем бревно) получаются разные объекты, тогда в ООП надо создавать для них отдельные классы, но некоторые свойства могут остаться теми же и их надо скопировать (диаметр бревна). В этом случае остаются вопросы: а остался ли прежний объект существовать для модели, например для истории, или его можно уничтожить?

При соединении объектов (автомобиль, собранный из деталей) существуют как отдельные объекты из которых получился новый объект, так и сам новый объект, который получает свойства отдельных частей, но сам также имеет собственные свойства.

В ООП в этом случае создаются классы для всех типов объектов и с помощью заранее предопределенных правил создаются взаимосвязи этих объектов.

Кстати, моделирование взаимосвязей объектов в концепции ООП никак не описано и их каждый моделирует по своему.

Если например хотя бы один из объектов, который составляет другой объект (главный), меняет свои свойства, то надо "пересчитывать" также возможно все свойства и главного объекта. В этом случае надо применять другие правила для пересчета, которые не всегда удается смоделировать.

Следующая проблема ООП - это сохранение истории изменений объектов. В самой концепции ООП ничего подобного нет и для моделирования сохранения истории объектов надо либо создавать новый объект, либо новые свойства и атрибуты у существующих объектов. Причем надо понимать, что все эти свойства должны быть взаимосвязанными во времени, т.к. история предполагает одни и те же моменты времени для всех объектов моделируемой среды.

Следующая проблема ООП - моделирование сохранения и восстановления свойств объекта при изменении его сущности, среды, законов и поведения.

ООП также не годится для:

- нечеткой типизации и контестно-зависимой типизации

- моделирования недискретных объектов

Далее:

В ООП каждый объект является экземпляром некоторого класса.

В одном из выпусков будет рассмотрена тема классификации информации и знаний.

В реальном мире объектов, каждый объект - это <экземпляр своего класса>.

Как уже говорилось, для моделирования не имеет смысла объявление для каждого объекта своего класса. Выполняется обобщение объектов по схожим характеристикам и свойствам и получается <класс>.

Вообще забегая вперед о теме классификации, можно сказать, что даже языковая среда описания объектов реального мира человека сплошь построена на одних классификациях. Потому что невозможно придумать названия для всех объектов, процессов, законов. Поэтому применяются общие (<классифицированные>) термины, названия. <Дерево> - для всех деревьев по определенным качествам. Уточнение - <осина> - для всех деревьев с еще более уточненными свойствами. Классы и уточнения определяются необходимостью и окружающей средой.

Еще пример, у жителей и национальностей крайнего севера, тундры существует большое количество названий белого цвета. У жителей вблизи экватора - большое количество для зеленого цвета.

Кроме того каждый объект может принадлежать к разным классам.

<Человек> - к классу <работник>, <рыболов>, <отец>.

ООП в некоторых реализациях позволяет осуществлять множественную классификацию путем множественного наследования. Хотя множественное наследование и множественная классификация - это не одно и то же.

Объектно-ориентированный подход превращается в субъектно-ориентированный подход. :)

 

Всем вышеописанным хочу сказать, что ООП для данных случаев не подходящий метод, у которого есть проблемы и если все-таки "натянуть" такую предметную область на ООП, то у проектировщика, а затем и заказчика будут проблемы.

Если не все понятно, вдумайтесь глубже, чем описано в тексте, вспомните свой опыт и вы найдете для себя такие же примеры.


С уважением

Сергей


В избранное