powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поменять класс у существующего объекта
47 сообщений из 47, показаны все 2 страниц
Поменять класс у существующего объекта
    #37681207
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, где-нибудь такая возможность реализована?

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

ps.
Ну или был квадрат - стал прямоугольником

Код: plaintext
1.
2.
------------------------------
!Напрасный труд хуже пьянства!
------------------------------
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37681287
black raven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В смолтоке кажись, можно, а в cecil есть predicate classes. Можно сказать типа квадрат-это такой прямоугольник у которого стороны равны
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37681309
black raven 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
U-geneИнтересно, где-нибудь такая возможность реализована?

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

ps.
Ну или был квадрат - стал прямоугольником

Код: plaintext
1.
2.
------------------------------
!Напрасный труд хуже пьянства!
------------------------------


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

Хотя описание у тебя мутное, можешь попробовать поковыряться в этой теории: http://dl.acm.org/citation.cfm?id=230540 С практической точки зрения, сломать жесткую иерархию наследования, можно с помощью traits или mixins.
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37681316
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-geneИнтересно, где-нибудь такая возможность реализована?

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

ps.
Ну или был квадрат - стал прямоугольником

Код: plaintext
1.
2.
------------------------------
!Напрасный труд хуже пьянства!
------------------------------

а зачем?
покажи пример на псевдокоде.

з.ы. в крайнем случае - можно приведение типов сделать.
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37681330
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-geneИнтересно, где-нибудь такая возможность реализована?

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

ps.
Ну или был квадрат - стал прямоугольником

JS! =)))
Если конечно не учитывать встроенные типы.
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37681361
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем это нужно.

Тут наверно издалека надо начинать,что бы контекст вопроса стал понятен.

Контекст заключается в том, что у меня есть система, где класс является множеством объектов в прямом смысле этого выражения. То есть я могу обратившись к классу, получить доступ к конкретному объекту (в т.ч. получить ссылку на объект) по каким-то атрибутам.

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

Смысл операции КМК слово "развитие" очень хорошо передает.

С учетом того, что возможно множественное наследование, такая операция становится еще более интересной. Например класс отгрузка наследует помимо заказа еще и класс запись в фин книге. Получается, что при развитии объекта заказ в сторону отгрузки этот объект становится еще и объектом класса запись в фин книге. А это - уже совсем сбоку класс. То есть, с множественным наследованием, операция "развитие объекта" работает уже не только вверх по иерархии, но и во все стороны, которые в этой иерархии участвуют.
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37681378
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-gene,
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37681379
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наследование - только один аспект. "Является"
Множественного наследования - абсурд. Чек не является ногой, а нога никак не чек. "Имеет отношение к ... в контексте ... "
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37681415
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-geneИнтересно, где-нибудь такая возможность реализована?
В CLOS например.
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37681418
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNз.ы. в крайнем случае - можно приведение типов сделать.

Думаю, для динамически типизированных языков не прокатит. Да и не в каждом статическом это возможно. Например в Java, на сколько я знаю, простым приведением этого не сделать, точнее бессмысленно делать, т.к. все равно будут вызываться наиболее специфичные для фактического класса объекта методы.
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37681765
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот эта картинка - она к чему? что на значит?
И какое отношение человеческие ноги к наследованию?

Самое главное - я не собираюсь спорить о смыслах и об абсурдности. Кому то не нравится множественное наследование, а кто-то наоборот уверен, что только оно имеет смысл. Я задал конкретный вопрос про конкретную операцию, которую можно сделать. а какой смысл в нее будут вкладывать - их дело.
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37681824
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k0rvinZyK_BotaNз.ы. в крайнем случае - можно приведение типов сделать.

Думаю, для динамически типизированных языков не прокатит.
я про явное приведение. можно у объекта метод определить "конвертировать в предка", который будет возвращать предка.
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37682242
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-geneВот эта картинка - она к чему? что на значит?

В картинке ясно видн как Типы "Процессоры процесса расчетного" стали типами "Процессоры процесса нормативного"
т.е. множественная классификация
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37682279
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объект -> Тип
. .....
. Тип -> Класс
. .......
. Класс -> Класс
. .......
. Класс -> ...
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37682286
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
формат съехал, но смысль понятна вроде
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37682399
rfq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже если бы у меня был под рукой язык, позволяющий на лету менять тип объекта, я бы не стал с ним связываться.
Ведь главное, что требуется - вносить в разные списки, а для этого никакой класс менять не надо. Вноси себе и все.
Вот если одновременно требуется нарастить функциональность (добавить полей, например), то немного репу почесать придется, но все равно делал бы на мэйстриме, а не на экзотике.
Моделировал бы объект как набор слотов, соответстующих подтипу. Подтипы делегируют обращения к элементам суперкласса, если у себя не находят. На ум приходит javascript с прототипированием, но множественного наследования он все равно не потянет, так что лучше моделировать самому. Если писать на Java или C++? то эффективносить исполнения и будет примерно на уровне javascript.
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37682927
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rfgвносить в разные списки, а для этого никакой класс менять не надо
главный список - это сам класс. объект там есть по умолчанию.
класс - это множесто объектов.
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37682949
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Об чём тут толкуют? Об апкастинге? Или снова наследуют шар от круга?
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37682992
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-generfgвносить в разные списки, а для этого никакой класс менять не надо
главный список - это сам класс. объект там есть по умолчанию.
класс - это множесто объектов.
объект может быть в разных классах одновременно :)
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37683007
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это буч все перепутал, назвав свой КОП ООПом.
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37683381
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что такое алкастинг?

но если я правильно понял - то ни капли не алкастинг.

думаю причина вопросов в том, что мало где реализована простая идея "класс - это множестов объектов". класс используют как фабрику объектов, но что бы организовать множество вводят всякие коллекции, экстенты и тд.

То есть для класса существует операция NEW имя_класса(парарметры_конструктора) ,что подразумевает создание нового объекта, но нет операции GET имя_класса (параметры_отбора_объекта) , что подразумевает получение ссылки на уже существующий объект. В существующих системах единственны способ сохранить доступ к объекту - сохранить ссылку на него (в эктенте, коллекции или как то еще). Как только ссылка потеряна - доступа к объекту утерян тоже.

Мой исходный вопрос интересен в контексте системы где такая операция GET есть. Объясню почему. Она позволяет ввести существующий объект в новый класс, а потом получить ссылку на него уже как на объект нового класса. Это подразумевает статический контроль типов. И это абсолютно не то,что мы можем обращаться к объекту класса-наследника по интерфейсу предка.
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37683415
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-geneчто такое алкастинг?
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37683434
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-gene,

блабла
тебе уже 10 раз показал где это реализовано и намного круче чем ты думаешь
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37683731
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 VipRos
да не показал ты ничего. я тебе таких скринов в экселе нарисую десять за час. Ты хоть раз где-нибуть связно мне объяснил, о чем ты говоришь? ссылку дал на доки, на описание или еще на что? Нет.
поэтому я тебя воспринимаю сугубо как тролля, извини. ну ладно... пусть будет тролль с понятиями. в смысле - термины знаешь.

2 mayton
Ржать конечно легче чем думать. Но, уважаемый, я, задав Вам вопрос об алкастинге, как-то сразу перешел на статический контроль типов. То есть, подумавши, можно сделать вывод что речь идет не об одном и том же.... ну, если вы понимаете что такое тип и его статический контроль, ибо all casting это механизм сильно динамический и затратный.
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37683896
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37683937
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а тут был базар на интересующую тебя тему (лайфтайм объекта)
РБД. Жизненный цикл объектов. (Предметная область - управление предприятием)
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37683974
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-gene2 mayton
Ржать конечно легче чем думать...

Товарищ mayton смехом хотел привлечь повышенное внимание к слову. Посмотри внимательно, какое слово он написал изначально, а какое -- ты.

P.S. А что такое all casting? Гугл ничего внятного не предлагает.
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37684020
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юджен.

Вообще я имел в виду ап-кастинг (upcasting). Тот термин который ВЫ вводите
весьма интересен, но мне кажется что в внём неопределённости еще больше.
Потянет на хороший спор в духе Сравнения СУБД и прочих ФВМяс-ов.
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37684100
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

можно определить так
Код: c#
1.
dynamic newType = CastAll(ob1,,,objN);


newType тип классификатор объектов с тип идентификаторов объектов + (опционально) типы одноименных свойств
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37684107
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
одноименных+однотипных
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37684111
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
классификация по свойствам я это называю :)
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37684133
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего CastAll будет сужать область видимости свойств вплоть до корневого Object.
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37684136
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

ну не исключено, я об этом написал (как минимум идентификаторы объектов)
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37684252
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, неправильно прочитал :) и тоже удивился, но потом подумал что может быть имеется в виду идея отработки всех входящих сообщений. типа как в смоллтоке. ну и ляпнул.

в общем -это не об апкастинге. Апкастинг - это вроде про ссылки. А я спрашиваю об операции, когда сам объект(инстанс) меняет свой класс в сторону наследника. Безотносительно к тому, есть на него ссылки или нет. Ссылки то как раз могут вообще не меняться, но при обращении по этим ссылкам будут вызываться новые реализации методов (без всяких приводящих выражений и модификаторов) .
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37684280
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-gene,
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37684289
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
один и тот же объект классифицирован в двух типах
в первом никаких методов
в во втором метод "Структура"
Все объекты классифицированы в базовом типе "Объект"
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37684319
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2VipRos спасибо.
давай я уточню, что. спрашиваю про языковую команду
например
Код: plaintext
PROGRESS class[somе_properties  = x] TO subclass(параметры_преобразования)
это что бы преобразовать некоторые объекты класса class в объекты класса-наследника subclass
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37684333
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosодин и тот же объект классифицирован в двух типах
в первом никаких методов
в во втором метод "Структура"
Все объекты классифицированы в базовом типе "Объект"

Обычное множественное наследование, по-моему Ю-джину нужно что-то другое.
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37684346
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-gene
Код: plaintext
PROGRESS class[somе_properties  = x] TO subclass(параметры_преобразования)
это что бы преобразовать некоторые объекты класса class в объекты класса-наследника subclass
параметры_преобразования - техническое решение (опция)

Collection<subclass> sbcl = PROGRESS class[somе_properties = x] TO subclass
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37684350
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коллекция то зачем?
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37684351
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пойду на работу
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37684353
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, опция.
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37684355
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-gene,

ну я ж не знаю что делает твоя команда и как классы там устроены (если класс в себе содержить коллекцию своих объектов, то коллекция не нужна)
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37684517
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-geneв общем -это не об апкастинге. Апкастинг - это вроде про ссылки. А я спрашиваю об операции, когда сам объект(инстанс) меняет свой класс в сторону наследника. Безотносительно к тому, есть на него ссылки или нет. Ссылки то как раз могут вообще не меняться, но при обращении по этим ссылкам будут вызываться новые реализации методов (без всяких приводящих выражений и модификаторов) .
Существуют языки программирования которые позволяют модифицировать свой код.
Это к примеру Lisp, который не различает код и данные, Ассемблер который может
динамически изменить сегмент кода и исполнить его. И (возможно) различного
рода отладочные режимы работы Java когда экземпляр класса может быть пересобран
и подменён на новый в Runtime (здесь еще можно спорить по определениям). А в твоём
случае (обыкновенный язык с ООП) мне кажется что в 99% случаев проблема решается
даункастингом (если это возможно) либо композицией. Созданием новых объектов
на базе существующего.

А подмена кода - это редкий хинт (hack, tricks) который вобщем-то не ложится в
теорию алгоритмов. Его надо рассматривать отдельно со стороны стоимости
самой реализации и её сложности. Кстати я не заметил чтобы ты рассказал
хотябы о языке или о технологии на которой это надо сделать.
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37684922
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Любую проблему можно как то решить. Вопрос в легкости и очевидноости решения.

Зачем нужно. Книжный (вроде бы) пример - класс сотрудники и производный класс начальники . . Существует сотрудник, который ходит в столовую , посещает долговременный тренинг и т.п. В общем на соответсвующий объект из других частей системы (в том числе из списков столовой и тренинта) есть ссылки. И вдруг сотрудник стал начальником. Как нам это развитие сотрудника в начальники изобразить в системе, оставляя все ссылки на объект нетронутыми? Я могу такую операцию сделать в лоб, а тут, собственно, аккуратно интересуюсь, насколько это народу интересно. Но в очередной раз натыкаюсь на то, непонимание существующее меджу программистами и СУБДшниками. В частности в том, что первые не понимают, как может быть объект без ссылки.

Язык по верхам здесь . Английская версия на ODBMS.ORG
Технология(формально) здесь .
Презентация здесь .
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37684949
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
U-geneЛюбую проблему можно как то решить. Вопрос в легкости и очевидноости решения.

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

Ну обычно в таких случаях должность просто делают свойством сотрудника и соответствующую логику выносят в класс Должность.
...
Рейтинг: 0 / 0
Поменять класс у существующего объекта
    #37684961
Фотография U-gene
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это был книжный пример. В смысле - я не говорю. что так надо делать. Я говорю, что так можно сделать.
...
Рейтинг: 0 / 0
47 сообщений из 47, показаны все 2 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поменять класс у существующего объекта
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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