powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / А бывает?....
25 сообщений из 35, страница 1 из 2
А бывает?....
    #32299321
1) Существуют ли какие-либо ОО-системы (ОО системы програмирования, ОО БД или еще чего-либо ОО) где можно менять класс существующего объекта?
2) А оно это нужно?
...
Рейтинг: 0 / 0
А бывает?....
    #32299325
Фотография Павел Воронцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А Вы сперва на последний вопрос (хотя бы для себя) ответьте... И как вы это себе представляете - изменеие класса объекта. Типа вот был котёнок, а вырос в кота.. или в тигра... И что? Предложите варианты использования такого действия - будет что обсуждать.
...
Рейтинг: 0 / 0
А бывает?....
    #32299337
Например можно было бы отказался от использования состояния объекта,
а использовать изменение типа.
...
Рейтинг: 0 / 0
А бывает?....
    #32299342
Был рядовой сотрудник. Стал начальником. Однако на этого сотрудника есть куча данных в бухгалтерии (дескать он 100 рублей авансом получил), в библиотеке(книжку взял), в столовой(в рыбный день не приходит). В терминах О-системы эта информация представлена с помощью ссылок.Таким образом словами скопировать объект в другой или просто низя, или это большая заморочка - надо отыскивать все ссылки на него и править их. ИМХО идеальный вариант - просто поменять класс.
...
Рейтинг: 0 / 0
А бывает?....
    #32299362
Yossarian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, бывают языки программирования, в которых можно
не только динамически конструировать классы, но и менять
класс существующего объекта. Например, Newton Script,
в котором класс и объект - вещи почти тождественные.
Но это большая редкость, обычно стараются не смешивать
ужа с ежом.
...
Рейтинг: 0 / 0
А бывает?....
    #32299616
Естесвенно, изменение класса может подразумевать некие активные действия, описываемые соответсвующей процедурой. Что-то типа конструктора копирования.... только не копирования, а изменения класса и соответсвенно структуры, данных и т.п....
...
Рейтинг: 0 / 0
А бывает?....
    #32300462
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а чем JavaScript не устраивает?
Добавляй себе свойств на-ходу в объект.

Но динамические свойства я тебе сэмулирую на любом языке.
Что надо-то?
Чем классы должны отличаться-то?

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

Способы есть. Только зачем?
Почему бы именно не обойтись состоянием и интерфейсами?

Ведь тип (по смыслу), это нечто, определенное на этапе компиляции...
...
Рейтинг: 0 / 0
А бывает?....
    #32300568
Чем отличаются?

По предложенному ранее примеру.

У объекта "сотрудник" нет массива ссылок на подчиненных, у объекта "начальник" есть.
...
Рейтинг: 0 / 0
А бывает?....
    #32300612
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну, тогда повторюсь,
динамическое изменение (расширение) типа легко сделать на COM-технологии, причем 2-мя путями (можно использовать их одновременно или порознь):
- динамическое создание имплементаторов интерфейсов с последующим их учетом в QueryInterface;
- использование IDispatch для динамического оперирования методами и свойствами объекта.
...
Рейтинг: 0 / 0
А бывает?....
    #32300755
И что, у объекта в атрибутах после этого массив ссылок появится?
...
Рейтинг: 0 / 0
А бывает?....
    #32300818
Давайте сузим вопрос.
То что все можно сделать (с трудом и через ж.пу) никто не сомневается.
Вопрос - где это делается естественным путем.
Пока я так понял появился только один кандидат - Newton Script
Я честно говоря ничего о нем не слышал, а слово Script настораживает.
...
Рейтинг: 0 / 0
А бывает?....
    #32300926
AAS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не только сузим, а еще и пример придумаем действительно требующий изменения класса. А то в этом получается класс = смесь оргштатной единицы (сотрудник) с физическим лицом (занимающим данную должность).
...
Рейтинг: 0 / 0
А бывает?....
    #32301071
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, давайте ставьте-ка задачку, а мы посмотрим...
если действительно будет интересная задачка - вывалю сюда исходник.
...
Рейтинг: 0 / 0
А бывает?....
    #32301412
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нормально систему спроектировать, то никаких проблем не будет.

У нормальных людей у сотрудника есть тип - начальник он или дворник. И все делается изменением одного значения. А если у вас все вот так, через ж..., то тут ничего не поможет

-- Tygra's --
...
Рейтинг: 0 / 0
А бывает?....
    #32301601
ИМХО ничего не через жопу... и ни хочу я никаких задач ставить...просто хотел узнать, существуютли ОО-системы, где можно ПРОСТО поменять класс существующего объекта, не копируя его про этом в другой объект. Ситуацию я описал, мне кажется понятно..... Могу усугубить (я понимаю, видимо меня сейчас закидают тухлыми помидорами, но... )....Скажите мне, существуют ли ОО-системы позволяющие добавить класс (например, унаследовав его от существующего) в функционирующей систему...?
...
Рейтинг: 0 / 0
А бывает?....
    #32301631
И, кстати, а оно это нужно? :)
...
Рейтинг: 0 / 0
А бывает?....
    #32301641
Добавить класс в работающую систему - да.
Зачем далеко ходить - .NET

А вот смена класса у объекта ?
...
Рейтинг: 0 / 0
А бывает?....
    #32301760
GrimReaper777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На COM-технологии это вообще элементарно делается.
Еще 5 мин назад не было у объекта этого интерфейса, а потом вдруг может появиться (т.е. динамически создали объект-имплементатор интерфейса, стали учитывать его при QueryInterface).


нет, не может, спецификация COM такие вещи запрещает
...
Рейтинг: 0 / 0
А бывает?....
    #32302244
Слонопотам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Осмелюсть предложить еще один пример - объекты недвижимости с
точки зрение риэлтора.
Казалось бы что может быть стабильней структуры.... однако новые свойства
даже новые категории свойств возникают внезапно и периодически
эти изменения приводят к изменению класса.
Например: Есть у нас пустырь и описывает его некая совокупость признаков первоочередных - площадь, стостояние территории, стартовая цена, глубина залегания грунтовых вод, р-фон,наличие каналов под учаском и их принадлежность, окружение,ограждение, возможность проведение коммуникаций и кой чего еще.
Поставили на нем двухэтажку (школу совковой планировки или детский садик)
- получили совершенно другой объект !
Но заводить новую сущность мне кажется глупо!
А вот если бы поменять класс и получить доступ к новым свойствам
(это например высота потолков,охрана,наличие отопления и водоснабжения и
пром электропитания .... и еще 12-23 пункта! ).
Конечно можно эти свойства как второстепеные выкинуть в примечания, но
второстепенные они сегодня а завтра ситуация меняется и они становятся
главными и по ним нужно делать фильтры строить группировки объектов и
прочая.
Решений в которых разработчик тупо сваял простыню из 80-200 колонок
лучше не упоминайте - плавали, знаем.
И еще одно - у меня сложилось впечатление что в подобных реляцонная модель неудобна. Приходится громоздить надстройки что
заведомо приведет дополнительным затратам времени на доступ к свойствам объекта. А реализация подобных вещей требуется все чаще.
И отнюдь не так как в совке гланды удаляли 8))
...
Рейтинг: 0 / 0
А бывает?....
    #32302288
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор писал:нет, не может, спецификация COM такие вещи запрещает
речь не о спецификации, а о том - можно или нет?

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

Нечто подобное можно сделать и на объектном уровне.
...
Рейтинг: 0 / 0
А бывает?....
    #32305715
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО вопрос надо ставить так - "А МОЖНО?"

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

Я уже писал тут, что говоря об ОО-системах програмирования в настоящее время по умолчанию, обычно (псокольку альтенатив практически не существует) подразумевают ОО-системы, выполняемые на Фон-Неймановских машинах. В таких системах в свете заданного вопроса важны два момента - 1) линейная организация памяти и 2) привязка OID к адресному пространству машинной памяти (OID = адрес объекта в памяти). Говоря по простому, изменяя класс объекта (в примере мы меняем его структуру) мы должны изменить размер лежащих в памяти данных этого объекта. Однако, поскольку, память линейная , эти данные ограничены "спереди" и "сзади" другими объектами. таким бразом мы не можем впихнуть новые данные на старое место (ну, либо, мы должны перенести соседний объект, который здесь вообще ни при чем....на колу мочало - начинай сначала :) В общем объекты толкаюьтся локтями...

Можно конечно делать некую таблицу переадресации, где OID каждого объекта соответствует его адресу в физической памяти..но ИМХО эта та еще заморочка :)
...
Рейтинг: 0 / 0
А бывает?....
    #32305725
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 U-gene

сейчас очень модно адресовать объекты по хендлам, так в этом случае - никаких описанных проблем.
...
Рейтинг: 0 / 0
А бывает?....
    #32305775
GrimReaper777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у меня встречный вопрос: а каким образом объект-клиент (вызывающий объект) будет использовать тот факт, что тип объекта-сервера поменялся? ИМХО объект-клиент изначально рассчитан на конечное число типов объектов-серверов и если добавляется новый тип сервера, то бизнес-логика клиента должна быть изменена, то есть переписана ручками, а не динамически во время исполнения
...
Рейтинг: 0 / 0
А бывает?....
    #32305795
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А никак :). ИМХО это может иметь смысл, когда класс объекта меняется на его класс-наследник. Предложенный пример тому иллюстрация. Для других частей системы объект не меняется , поскольку класс "Начальник" наследует класс "Сотрудник".
...
Рейтинг: 0 / 0
А бывает?....
    #32305858
GrimReaper777
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в таком случае задачка сводится к использованию тн прокси-объекта который бы делегировал вызовы разным объектам в зависимости от к-л условий
при этом клиент держит ссылку только на прокси-объект
вообщем, имхо, это уровень проектных решений, а не фундаментальных изменений в ОО-системе
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / А бывает?....
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]