Ну. я скажу так: я согласен с этим стандартом по многим причинам. Хотя бы потому что я виж уклассы также как вижу объекты классов. Это было со мной еще со школы, когда я читал Колмогорова и его заметки о логике. И осталось до сих пор
Я говорю не о том, как нам хотелось бы, а о том, как будет непротиворечиво. Если Вы строите модели которые не подлежат расширению, то нет и проблем — стройте себе типы. Но как только мы строим сложные расширяемые конструкции, мы переходим к классам. Это доказано математиками и неизбежно как воздух
Я как аналитик должен понимать, что говорит программист. То есть уметь переводить его язык на язык логической парадигмы. Для этого я представляю код как предметную область, затем произвожу его анализ и могу переводить термины программиста в термины логической парадигмы. Это нормальная практика. И я могу это делать
Мы можем обсуждать код программиста, используя для этого логическую парадигму. И тогда код станет объектом исследования, то есть доменом для аналитика. И тогда аналитик будет маппить термины программиста на термины логической парадигмы
Я, когда разговариваю с заказчиком, имею ввиду все смыслы, которые могут быть вложены в любой из терминов, но в модели термин тип не будет участвовать никогда. Потому что он из той логики, которая дает сбой. Вместо термина тип документа я использую термин класс документов и это будет равносильное утверждение. Тип документов «договор», экземпляр этого типа документов — конкретный документ, у меня будет звучать так: данный объект относится к классу информационных объектов, подклассу — договора, И мне понятно, и нет противоречий
У машины 5 предметов, которые мы классифицируем, то есть относим к классу колес. Этот класс именованных объектов, из чего мы можем именовать объект данного класса. Есть неименованные классы, здесь нам приходится как-то выкручиваться
.
Думаю, что логическая парадигма с Вами не согласна. В природе существуют группы объектов. Эти группы называются множествами и обладают какими-то признаками, отличными от объектов этих множеств. Тип — это Аристотель придумал и его нет в природе, а вот с классом поосторожнее — они ровно такие же объекты, как и объекты. В логической парадигме у них даже название одинаковое — Thing. Рисунок из стандарта ИСО 15926:
Тип — это описание объектов класса, если следовать ООП, но сам класс, который есть набор объектов, не есть описание этих объектов. И надо сказать, что все, что я сейчас написал — полный бред. потому что мне пришлось говорить о совершенно разных вещах. Это все равно, что если бы меня спросили, привести пример здания, которое не является совестью. Наверно, для кого-то здание и совесть одно и то же. Но не для всех
Хорошо было бы понимать аналитику, что имел ввиду программист, когда сказал, что создал класс. Аналитик должен точно понимать, что программист не создавал класс объектов в предметной области, он даже не создал класс объектов в информационной системе! Он создал описание объектов, которые в процессе исполнения программы будут созданы в системе. Не больше и не меньше. Если аналитик это понимает, то ему все равно, какой язык для описания этого факта использовал программист — аналитик его понял. Но, если аналитик сидит с программистом и решает задачу описания предметной области, используя термин создадим класс, то я усомнюсь в том, что аналитик обсуждает сейчас предметную область. А это я слышу постоянно. Мы создаем классы в предметных областях! Мы производим класс полицейских, например. Это каким способом, интересно знать?
По причине того, что в современных представлениях под типом понимается модель, под объектам — объекты, а под классами — классы, я не вижу смысла тащить термины тип и экземпляр в современные модели. А. если тащить, то помнить, откуда ноги растут: если употребляешь термин экземпляр, то будь добр сообщить нам о типе объектов. В итоге аналитик, который использует термины тип и экземпляр начнет сам себе противоречить, потому что типы противоречивы по своей природе. И тогда надо будет отбрасывать все эти термины и переходить на термины объекты и классы. При этом мы можем говорить об описаниях объектов класса или об описании класса объектов, Но термин экземпляр исчезнет как туман. Останутся объекты и классы объектов
Аристотель, конечно, не говорил про типы. Термины тип и экземпляр типа родились позже под действием логики Аристотеля. И они стали отражением способа мышления. Если мы говорим экземпляр, то сразу надо искать тип этого экземпляра. Потому что экземпляр предполагает объект из ряда себе подобных. Что значит подобных? Это значит, что существует субъект, у которого в сознании эти объекты выглядят похожими. Похожими их делает с точки зрения Аристотеля тип объектов, или первичная сущность, как он ее называл.
Но с точки зрения современных представлений мы говорим о некоей модели, которая существует в головах у субъектов одного социума. (В одном социуме эти объекты будут считаться похожими, а в другом — нет). И тогда, если мы находимся в том социуме, где есть одна на всех модель похожести объектов, мы говорим, что субъект на основании этой модели, выделяет объекты, схожие друг с другом по только ему (субъекту и социуму) известным признакам. Но вот тут мне становится сложно рассуждать в терминах тип и экземпляр типа. Потому что с точки зрения современных философов мы говорим об объектах способах их классификации и о классах, которые возникают на основе этих классификаций.
Если речь идет о классах, то в класс входят объекты. Класс описывается только одним способом — перечислением объектов, в него входящих. Почему? Если сказать. что признаками, то получится что никто и никогда не может сделать ошибку. И положить помидор вместе с яблоками в одну корзину. Но такое случается и тогда объекты класса, который лежит в корзине, будут обладать разными свойствами, но тем не менее, образовывать классом. Для рассуждений мы часто используем способы описания объектов одного класса. Это некий признак, который говорит нам о том, чем отличаются объекты данного класса от всех остальных объектов.
Мы можем обратить внимание, что объекты внутри класса чем-то похожи друг на друга. Мы можем определить это свойство и создать класс объектов с таким свойством. Но фокус в том, что в этот класс войдут все объекты с таким свойством, ВСЕ! В этом фундаментальное отличие логической парадигмы от ООП и Аристотелевских типов.
Да, чуть не забыл! MOF используется в ООП для описания кода, а не предметной области. Это очень важно помнить. ООП к описанию предметной области не имеет отношения даже через MOF.
Речь идет о том, что программист в программе пишет класс, а создает описание типа данных. Затем он становится аналитиком и говорит: тип и класс одно и то же. Это нормально с его точки зрения, потому что он никогда не различал эти понятия. А класс — это множество и множество отличается от объектов множества. А он начинает реально думать, что объекты множества, собранные в кучу, есть множество объектов. И сам объект множество исчезает в его сознании. Можно много говорить о то, что такое множество и чем оно задается. Я так понимаю, над этим работают со времен Фурье, когда создавалось понимание того, что такое функция. Как задать ее? Перечисление соответствий, или правилами соответствий? На основе каждого из этих определений была создана своя школа. Я не знаком с современными концепциями, но в справочнике по математике у меня картинка есть. Дело не в том, чем заданы классы. При помощи правил, или при помощи связей, главное помнить, что класс и описание объектов класса — разные вещи. Тогда тип становится описанием объектов класса. но не классом. И тогда удобно говорить: ты создал тип для описания объектов класса. А может мы создадим описание для класса, а не для объектов класса? Нам ничего не стоит это сделать? А вот этот механизм в ООП вообще отсутствует.
.
Но с точки зрения современных представлений мы говорим о некоей модели, которая существует в головах у субъектов одного социума. (В одном социуме эти объекты будут считаться похожими, а в другом — нет). И тогда, если мы находимся в том социуме, где есть одна на всех модель похожести объектов, мы говорим, что субъект на основании этой модели, выделяет объекты, схожие друг с другом по только ему (субъекту и социуму) известным признакам. Но вот тут мне становится сложно рассуждать в терминах тип и экземпляр типа. Потому что с точки зрения современных философов мы говорим об объектах способах их классификации и о классах, которые возникают на основе этих классификаций.
Если речь идет о классах, то в класс входят объекты. Класс описывается только одним способом — перечислением объектов, в него входящих. Почему? Если сказать. что признаками, то получится что никто и никогда не может сделать ошибку. И положить помидор вместе с яблоками в одну корзину. Но такое случается и тогда объекты класса, который лежит в корзине, будут обладать разными свойствами, но тем не менее, образовывать классом. Для рассуждений мы часто используем способы описания объектов одного класса. Это некий признак, который говорит нам о том, чем отличаются объекты данного класса от всех остальных объектов.
Мы можем обратить внимание, что объекты внутри класса чем-то похожи друг на друга. Мы можем определить это свойство и создать класс объектов с таким свойством. Но фокус в том, что в этот класс войдут все объекты с таким свойством, ВСЕ! В этом фундаментальное отличие логической парадигмы от ООП и Аристотелевских типов.