Я не программист! Я аналитик. Я не моделирую код программы, я не пишу код. Я моделирую предметную область и проверяю, так ли меня поняли программисты, когда они создают свои классы. Кроме того, я делал карту, отображающую объекты кода в объекты предметной области. Но сам я не занимаюсь ни архитектурой приложений, ни кодом.
Я не имею предензий к молотку. Я пользуюсь ООП для построения моделей предметных областей очень осторожно, также как использую ER модели крайне внимательно, если такое понадобится. Просто меня часто спрашивают, зачем я так много рассказываю про логическую парадигму, если есть ER модели и ООП. Вот это мой ответ им, а не попытка рассказать про то, как я моделирую при помощи ООП предметную область
.
Вы точно заметили, что применять ООП к моделированию предметной области в лоб нельзя. Я об этом и говорю. Моя же задача — моделирование предметной области, а не кода
«Business Objects: Re-Engineering for Re-Use»
страница 67 CHAPTER 3 What Is the Entity Paradigm? там же про неразличение отношений, и о том, как это обходится.
Хорошо, тогда так: диаграмма классов, которая часто используется для моделирования предметной области, не позволяет на диаграмме изобразить класс объектов, объект и принадлежность этого объекта классу, А без этого нельзя моделировать тот факт, что объект в разное время может выполнять разные роли. Кодом я могу решить любую задачу, собственно так мы все и делаем. Вопрос же о моделировании предметной области методами ООП. Но не кодом.
В ООП объект создается с определенным типом, а затем он не может изменить этот тип. Кроме того, в ООП нет классов, а есть только объекты. Моделированием классов ООП не занимается. Оно работает с типами. Пример: в ООП нет операций умножения, вычитания и сложения классов, то есть, нет базовых операций над классами. Книга в ООП создается. В логической парадигме создается не книга, а объект. Он имеет только ИДишник и более ничего. Лишь потом мы его классифицируем. В ООП это невозможно реализовать.
Я уже отвечал на этот вопрос: меня не устраивает моделирование в виде ER диаграмм потому что они не различают связи классификация и специализация в предметной области и, кроме того, позволяют моделировать эти связи двумя разными способами. Из этого получается полный бардак в моделях. Меня это не устраивает
В логической модели объект называется книгой ровно до тех пор, пока он принадлежит классу книг. Но как только субъект исключит его оттуда и перенесет в класс рыб, то объект будет называться рыбой с этого момента.
Мои статьи посвящены почти целиком ограничениям моделирования в виде диаграмм классом, или ER моделей. Если Вас не устраивают мои примеры, то я привел книгу Криса Партриджа, в которой эти ограничения разобраны подробно.
Сконцентрируемся на ООП:
Аристотель работает с типами и экземплярами.
этот подход зафиксирован в MOF
MOF является базисом для всех стандартов OMG, в том числе для всех нотаций ООП
ООП строится только на описаниях типов, а не классов, как заявлено, оттого противоречия в терминологии.
Свойство объекта быть книгой — это из ООП. И это Аристотель. В логической парадигме нет книг. Есть класс книг и есть объекты этого класса. Но книги не существует.
Любую ER модель можно представить в виде набора таблиц. Причем однозначно, насколько я помню. Но тут я не силен, потому что моделирование при помощи таблиц лично мне не нравится. Все силы я направляю на моделирование в логической парадигме и только в самый последний момент, если это необходимо, реализую модель в виде таблиц.
Это вопрос, ответ на который имеет множество ответов. Самый очевидный — таков закон развития науки. История науки говорит в пользу того, что накопление опытных данных в итоге приводит к попытке обосновать эти данные. MOF — это стандарт, к которому приведены все стандарты группы компаний OMG. Почему? потому что без приведения к онтологическому базису стандарт моделирования становится повисшим в пространстве и им пользоваться нельзя. Я до сих пор не знаю, привели ли к базису ER модели. Если не привели, то пользование ими — сугубо личное дело каждого, но узаконить работу при помощи них — нельзя. Поэтому я допускаю, что основа подведена, пусть я этого и не знаю. Почему MOF появился позже, а не раньше? Потому что никому это не надо было тогда. Сейчас надо. Вот и весь ответ. А вот почему раньше не было надо, а сейчас стало надо, — я не знаю, Только версии.
У аналитиков есть тренировка: дайте 10 версий причин. И это навскид. После обдумывания HR обычно ждет до 50-ти вариантов. Зададимся вопросом: почему математикой занимаются несколько тысячелетий, а основы математики были сформулированы только в 20-м веке? Ответ на этот вопрос, возможно поможет нам понять, почему ООП занимались много лет, а обоснование ООП возникло недавно? Вариантов ответа может быть много, как я сказал вначале. Попробуйте сами придумать возможные причины.
Я рассуждаю логически без привязки к цели, к которой я должен прийти. Я не знаю, куда приведут эти рассуждения. Пока я вижу определенный горизонт, на котором маячит нотация, которая была бы более удобна, чем те, которыми мне приходится пользоваться сейчас. Но это далекая перспектива.
Насчет специализации и классификации. Эти доводы найдены не мной. Ограничения моделей в виде таблиц известны онтологам, и способы их разрешения тоже известны. Если Вы понимаете эти ограничения и умеете их обходить, — не значит, что этих ограничений не существует, и не значит, что о них знать не надо.
передача модели возможна только благодаря той настройке, которую проходит субъект в детстве. В этот период он учится видеть мир как все, моделировать мир как все, пользоваться языком в самом общем смысле. После того, как он овладел этими навыками, он может пытаться что-то моделировать.
Если Вы знаете про информацию то, что знаете, то это Ваша парадигма. Я использую ту парадигму, которой придерживаюсь я. Это — субъективные ощущения, которые как-то связаны с мерой упорядоченности (энтропией). Но для целей проектирования систем — тащить энтропию в модель- очень тяжелая задача. Я упрощаю его до просто субъективных ощущений.
Информация хранится в объекте только с точки зрения субъекта. То есть, хранение информации существует только в воображении субъекта. Фактически ничего нигде не хранится. Поэтому противоречий нет. Правильно сказать функция этих объектов с точки зрения субъекта — хранить информацию. Я просто пропустил точку зрения субъекта.
В информационном объекте ничего не содержится. Содержанием объект наполняет воображение субъекта. Уберем субъекта, исчезнет содержание.
Не противоречит. Мы знаем про информацию только то, что ничего про нее не знаем. Мы можем заменить информацию на энтропию, как связанную с информацией сущность, но это в космологии применяется. Кибернетика внутренне противоречива. Из-за тех рекурсий, которые там неизбежно возникают. Есть множество интереснейших книг по теории искусственного интеллекта, в которых разбираются парадоксы кибернетики. Я пробовал разобраться в этом, но моих силенок не хватает. Хватает разве что только на то, чтобы увидеть эти противоречия, но не разрешить их.
Информация есть только у субъекта. Информация — это изобретение человека и только его. Поэтому информация рождается вместе с субъектом и вместе с ним умирает. Информация — это модель. Для передачи модели себе в будущее, или другим, используется способ воплощения модели в реальных физических объектах, которые служат с точки зрения субъекта информационными объектами.
Интерпретацией моделей занимается только субъект. Системы ничего интерпретировать не могут, потому что интерпретация — это психическая функция субъекта. Неорганические объекты не интерпретируют.
Поскольку обсуждение закончилось, я вклинюсь. Есть объекты в предметной области, есть информация об этих объектах. Информация — это интерпретация субъектом информационных объектов. Информационные объекты хранятся в информационных системах. Функция этих систем — хранить информацию о предметной области. Если в системе есть объект, то он что-то моделирует. Если в системе есть объект Event 001, то этот объект моделирует некое физическое, функциональное событие. А может целый класс таких событий, в зависимости от реализации. Об этом я напишу в очередной статье, чтобы объяснить это подробно
Чтобы проверить выкладки, не нужно знать целей проведения выкладок. Для целей обсуждения не нужно знать мои цели.
Про невежество напишу отдельную статью, когда придет время.
Если Вас не задел тот факт, что ER модель позволяет моделировать связи «Классификация» и «Специализация» предметной области двумя разными способами, да еще и не делая различия между ними, то у Вас нет вопросов, а значит и не может быть желания получить ответы. Поэтому для Вас есть два пути. Первый — это разобраться с тем, что я только что сказал и только после этого продолжить диспут. Или, если Вы хотите и дальше дискутировать, то похоже это будет на разговор глухого с немым.
Возможно, Вы не прочли мой ответ, что был ранее. Меня попросили поделиться наработками, чтобы они не остались только на словах. Моя цель — зафиксировать в текстовом виде эти наработки. Это поможет другим. ИМХО
.
страница 67 CHAPTER 3 What Is the Entity Paradigm? там же про неразличение отношений, и о том, как это обходится.
Аристотель работает с типами и экземплярами.
этот подход зафиксирован в MOF
MOF является базисом для всех стандартов OMG, в том числе для всех нотаций ООП
ООП строится только на описаниях типов, а не классов, как заявлено, оттого противоречия в терминологии.
Свойство объекта быть книгой — это из ООП. И это Аристотель. В логической парадигме нет книг. Есть класс книг и есть объекты этого класса. Но книги не существует.
Насчет специализации и классификации. Эти доводы найдены не мной. Ограничения моделей в виде таблиц известны онтологам, и способы их разрешения тоже известны. Если Вы понимаете эти ограничения и умеете их обходить, — не значит, что этих ограничений не существует, и не значит, что о них знать не надо.
Если Вы знаете про информацию то, что знаете, то это Ваша парадигма. Я использую ту парадигму, которой придерживаюсь я. Это — субъективные ощущения, которые как-то связаны с мерой упорядоченности (энтропией). Но для целей проектирования систем — тащить энтропию в модель- очень тяжелая задача. Я упрощаю его до просто субъективных ощущений.
В информационном объекте ничего не содержится. Содержанием объект наполняет воображение субъекта. Уберем субъекта, исчезнет содержание.
Не противоречит. Мы знаем про информацию только то, что ничего про нее не знаем. Мы можем заменить информацию на энтропию, как связанную с информацией сущность, но это в космологии применяется. Кибернетика внутренне противоречива. Из-за тех рекурсий, которые там неизбежно возникают. Есть множество интереснейших книг по теории искусственного интеллекта, в которых разбираются парадоксы кибернетики. Я пробовал разобраться в этом, но моих силенок не хватает. Хватает разве что только на то, чтобы увидеть эти противоречия, но не разрешить их.
Интерпретацией моделей занимается только субъект. Системы ничего интерпретировать не могут, потому что интерпретация — это психическая функция субъекта. Неорганические объекты не интерпретируют.
Про невежество напишу отдельную статью, когда придет время.
Если Вас не задел тот факт, что ER модель позволяет моделировать связи «Классификация» и «Специализация» предметной области двумя разными способами, да еще и не делая различия между ними, то у Вас нет вопросов, а значит и не может быть желания получить ответы. Поэтому для Вас есть два пути. Первый — это разобраться с тем, что я только что сказал и только после этого продолжить диспут. Или, если Вы хотите и дальше дискутировать, то похоже это будет на разговор глухого с немым.