| 
 | 
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  1) Существуют ли какие-либо ОО-системы (ОО системы програмирования, ОО БД или еще чего-либо ОО) где можно менять класс существующего объекта? 2) А оно это нужно? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 21.10.2003, 09:40 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  А Вы сперва на последний вопрос (хотя бы для себя) ответьте... И как вы это себе представляете - изменеие класса объекта. Типа вот был котёнок, а вырос в кота.. или в тигра... И что? Предложите варианты использования такого действия - будет что обсуждать. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 21.10.2003, 09:43 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Например можно было бы отказался от использования состояния объекта, а использовать изменение типа. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 21.10.2003, 09:51 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Был рядовой сотрудник. Стал начальником. Однако на этого сотрудника есть куча данных в бухгалтерии (дескать он 100 рублей авансом получил), в библиотеке(книжку взял), в столовой(в рыбный день не приходит). В терминах О-системы эта информация представлена с помощью ссылок.Таким образом словами скопировать объект в другой или просто низя, или это большая заморочка - надо отыскивать все ссылки на него и править их. ИМХО идеальный вариант - просто поменять класс. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 21.10.2003, 09:54 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Да, бывают языки программирования, в которых можно не только динамически конструировать классы, но и менять класс существующего объекта. Например, Newton Script, в котором класс и объект - вещи почти тождественные. Но это большая редкость, обычно стараются не смешивать ужа с ежом. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 21.10.2003, 10:09 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Естесвенно, изменение класса может подразумевать некие активные действия, описываемые соответсвующей процедурой. Что-то типа конструктора копирования.... только не копирования, а изменения класса и соответсвенно структуры, данных и т.п.... ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 21.10.2003, 12:26 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  а чем JavaScript не устраивает? Добавляй себе свойств на-ходу в объект. Но динамические свойства я тебе сэмулирую на любом языке. Что надо-то? Чем классы должны отличаться-то? На COM-технологии это вообще элементарно делается. Еще 5 мин назад не было у объекта этого интерфейса, а потом вдруг может появиться (т.е. динамически создали объект-имплементатор интерфейса, стали учитывать его при QueryInterface). Способы есть. Только зачем? Почему бы именно не обойтись состоянием и интерфейсами? Ведь тип (по смыслу), это нечто, определенное на этапе компиляции... ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 21.10.2003, 19:14 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Чем отличаются? По предложенному ранее примеру. У объекта "сотрудник" нет массива ссылок на подчиненных, у объекта "начальник" есть. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 21.10.2003, 22:21 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  ну, тогда повторюсь, динамическое изменение (расширение) типа легко сделать на COM-технологии, причем 2-мя путями (можно использовать их одновременно или порознь): - динамическое создание имплементаторов интерфейсов с последующим их учетом в QueryInterface; - использование IDispatch для динамического оперирования методами и свойствами объекта. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 22.10.2003, 01:40 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  И что, у объекта в атрибутах после этого массив ссылок появится? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 22.10.2003, 09:47 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Давайте сузим вопрос. То что все можно сделать (с трудом и через ж.пу) никто не сомневается. Вопрос - где это делается естественным путем. Пока я так понял появился только один кандидат - Newton Script Я честно говоря ничего о нем не слышал, а слово Script настораживает. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 22.10.2003, 10:10 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Не только сузим, а еще и пример придумаем действительно требующий изменения класса. А то в этом получается класс = смесь оргштатной единицы (сотрудник) с физическим лицом (занимающим данную должность). ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 22.10.2003, 10:42 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  да, давайте ставьте-ка задачку, а мы посмотрим... если действительно будет интересная задачка - вывалю сюда исходник. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 22.10.2003, 11:31 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Если нормально систему спроектировать, то никаких проблем не будет. У нормальных людей у сотрудника есть тип - начальник он или дворник. И все делается изменением одного значения. А если у вас все вот так, через ж..., то тут ничего не поможет -- Tygra's -- ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 22.10.2003, 13:53 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  ИМХО ничего не через жопу... и ни хочу я никаких задач ставить...просто хотел узнать, существуютли ОО-системы, где можно ПРОСТО поменять класс существующего объекта, не копируя его про этом в другой объект. Ситуацию я описал, мне кажется понятно..... Могу усугубить (я понимаю, видимо меня сейчас закидают тухлыми помидорами, но... )....Скажите мне, существуют ли ОО-системы позволяющие  добавить  класс (например, унаследовав его от существующего) в  функционирующей  систему...? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 22.10.2003, 15:13 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  И, кстати, а оно это нужно? :) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 22.10.2003, 15:19 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Добавить класс в работающую систему - да. Зачем далеко ходить - .NET А вот смена класса у объекта ? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 22.10.2003, 15:25 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  На COM-технологии это вообще элементарно делается.  Еще 5 мин назад не было у объекта этого интерфейса, а потом вдруг может появиться (т.е. динамически создали объект-имплементатор интерфейса, стали учитывать его при QueryInterface). нет, не может, спецификация COM такие вещи запрещает ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 22.10.2003, 16:10 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Осмелюсть  предложить  еще  один  пример -  объекты недвижимости с  точки зрение риэлтора. Казалось бы что может быть стабильней структуры.... однако новые свойства даже новые категории свойств возникают внезапно и периодически эти изменения приводят к изменению класса. Например: Есть у нас пустырь и описывает его некая совокупость признаков первоочередных - площадь, стостояние территории, стартовая цена, глубина залегания грунтовых вод, р-фон,наличие каналов под учаском и их принадлежность, окружение,ограждение, возможность проведение коммуникаций и кой чего еще. Поставили на нем двухэтажку (школу совковой планировки или детский садик) - получили совершенно другой объект ! Но заводить новую сущность мне кажется глупо! А вот если бы поменять класс и получить доступ к новым свойствам (это например высота потолков,охрана,наличие отопления и водоснабжения и пром электропитания .... и еще 12-23 пункта! ). Конечно можно эти свойства как второстепеные выкинуть в примечания, но второстепенные они сегодня а завтра ситуация меняется и они становятся главными и по ним нужно делать фильтры строить группировки объектов и прочая. Решений в которых разработчик тупо сваял простыню из 80-200 колонок лучше не упоминайте - плавали, знаем. И еще одно - у меня сложилось впечатление что в подобных реляцонная модель неудобна. Приходится громоздить надстройки что заведомо приведет дополнительным затратам времени на доступ к свойствам объекта. А реализация подобных вещей требуется все чаще. И отнюдь не так как в совке гланды удаляли 8)) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 22.10.2003, 20:44 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  автор писал:нет, не может, спецификация COM такие вещи запрещает речь не о спецификации, а о том - можно или нет? В базе данных я такое делал. По ошибке ввели кого-то как частное лицо, а он оказывается юр-лицо, ну вот и были у меня несколько процедур взаимного преобразования типов. Правда у меня была единая основная таблица, так что трансформировал только данные в таблицах-аттрибутах. Нечто подобное можно сделать и на объектном уровне. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 22.10.2003, 22:38 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  ИМХО  вопрос надо ставить так -  "А МОЖНО?" Когда задаються такие вопросы стоит обратить внимание на то, можно ли это реализовать в принципе....в неких конкретных условиях. Под конкретными условиями я понимаю оргнизацию данных в конкретных системах, в конкретной памяти и в тому подобных конкретных вещах.... хотя слово "конкретный" можно понимать достаточно, я бы сказал очень широко :). Понятно? Тогда объясню :) Я уже писал тут, что говоря об ОО-системах програмирования в настоящее время по умолчанию, обычно (псокольку альтенатив практически не существует) подразумевают ОО-системы, выполняемые на Фон-Неймановских машинах. В таких системах в свете заданного вопроса важны два момента - 1) линейная организация памяти и 2) привязка OID к адресному пространству машинной памяти (OID = адрес объекта в памяти). Говоря по простому, изменяя класс объекта (в примере мы меняем его структуру) мы должны изменить размер лежащих в памяти данных этого объекта. Однако, поскольку, память линейная , эти данные ограничены "спереди" и "сзади" другими объектами. таким бразом мы не можем впихнуть новые данные на старое место (ну, либо, мы должны перенести соседний объект, который здесь вообще ни при чем....на колу мочало - начинай сначала :) В общем объекты толкаюьтся локтями... Можно конечно делать некую таблицу переадресации, где OID каждого объекта соответствует его адресу в физической памяти..но ИМХО эта та еще заморочка :) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.10.2003, 10:29 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  2 U-gene сейчас очень модно адресовать объекты по хендлам, так в этом случае - никаких описанных проблем. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.10.2003, 10:37 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  А у меня встречный вопрос: а каким образом объект-клиент (вызывающий объект) будет использовать тот факт, что тип объекта-сервера поменялся? ИМХО объект-клиент  изначально рассчитан на конечное число типов объектов-серверов и если добавляется новый тип сервера, то бизнес-логика клиента должна быть изменена, то есть переписана ручками, а не динамически во время исполнения ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.10.2003, 11:05 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  А никак :). ИМХО это может иметь смысл, когда класс объекта меняется на его класс-наследник. Предложенный пример тому иллюстрация. Для других частей системы объект  не меняется , поскольку класс "Начальник" наследует класс "Сотрудник". ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.10.2003, 11:11 | 
  
  
  
   | 
||
| 
 
А бывает?.... 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  в таком случае задачка сводится к использованию тн прокси-объекта который бы делегировал вызовы разным объектам в зависимости от к-л условий при этом клиент держит ссылку только на прокси-объект вообщем, имхо, это уровень проектных решений, а не фундаментальных изменений в ОО-системе ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 27.10.2003, 11:48 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?fid=32&msg=32301601&tid=1546789]:  | 
    0ms | 
get settings:  | 
    9ms | 
get forum list:  | 
    14ms | 
check forum access:  | 
    3ms | 
check topic access:  | 
    3ms | 
track hit:  | 
    61ms | 
get topic data:  | 
    13ms | 
get forum data:  | 
    3ms | 
get page messages:  | 
    67ms | 
get tp. blocked users:  | 
    2ms | 
| others: | 12ms | 
| total: | 187ms | 

| 0 / 0 | 

На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.