Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2008, 20:38   #1
asmc
Новичок
Джуниор
 
Регистрация: 25.06.2008
Сообщений: 1
По умолчанию Какие языки (системы разработки) имеют встроенные сложные операции над объектами?

Какие существуют конкретные подходы (языки) для автоматизированного создания программ в соответствии с абстрактной логикой, формализованной ввиде графов и др. структур, обозримых для разработчика (или проверка соответствия логике реальной структуры программы и данных во время выполнения или после процедуры выгрузки (dump))?
Например, для некоторой задачи необходимо хранить в памяти ряд объектов, содержащих друг друга внутри себя, а так же ссылающихся друг на друга. Как можно автоматически, например, в конструкторах классов на си++ заполнять массивы указателей на реализации всех классов, объявленных в данном?
Есть ли языки (желательно не медленные интерпретаторы, как php), в которых такие массивы указателей могут появляться без доп. действий разработчика, помимо самих объявлений классов с такими свойствами?
Еще один пример - в каких языках можно при удалении объекта автоматически удалять все ссылки на него из объектов, ссылающихся на данный?
При этом такое же удаление может рекурсивно инициироваться для самих объектов, в которых, например, была удалена последняя ссылка на другие. Соответственно, при удалении, например, первого из 2-х объектов, ссылающихся только друг на друга (т.е. второй тоже не нужен без ссылок из него на другие), попытка просто использовать для этого деструкторы классов в си++ приводит к неконтроллируемым бесконечным рекурсивным вызовам деструктора одного и того же класса. Нужна какая-то внешняя процедура, помечающая, а затем удаляющая разом все ненужные объекты.

Желательны примеры.
Спасибо
asmc вне форума Ответить с цитированием
Старый 26.06.2008, 09:01   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от asmc Посмотреть сообщение
Например, для некоторой задачи необходимо хранить в памяти ряд объектов, содержащих друг друга внутри себя, а так же ссылающихся друг на друга.
Трудно представить себе реальную задачу, в которой есть просто кучка объектов. В терминах задачи эта кучка все равно как-то называется. Это и будет отдельный объект, который владеет всеми остальными. Он и занимается созданием и уничтожением. В общем случае класс владеет всеми объектами, которые инкапсулирует.

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

vector<MyClass> (10);

(В синтаксисе могу ошибиться - С++ редко использую)

Цитата:
Еще один пример - в каких языках можно при удалении объекта автоматически удалять все ссылки на него из объектов, ссылающихся на данный? При этом такое же удаление может рекурсивно инициироваться для самих объектов, в которых, например, была удалена последняя ссылка на другие. Соответственно, при удалении, например, первого из 2-х объектов, ссылающихся только друг на друга (т.е. второй тоже не нужен без ссылок из него на другие), попытка просто использовать для этого деструкторы классов в си++ приводит к неконтроллируемым бесконечным рекурсивным вызовам деструктора одного и того же класса.
Делается наоборот. Для объекта ведется счетчик его использования. Объект удаляется как только счетчик станет равным 0 (т.е. больше на него нет ссылок). Например, так в Delphi реализованы интерфейсные объекты.

Цитата:
Нужна какая-то внешняя процедура, помечающая, а затем удаляющая разом все ненужные объекты.
Еще раз. Владелец уничтожает все объекты, которыми владеет. Есть еще сборка мусора. Но это другая тема и к высокоуровневому программированию отношения не имеет.

Цитата:
Какие языки (системы разработки) имеют встроенные сложные операции над объектами?
По-моему STL в C++ самое то.
alexBlack вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Языки программирования. Так ли велики различия ? Virtson Свободное общение 46 29.09.2010 08:24
встроенные функции,использование записей и файлов OLesechka300490 Общие вопросы Delphi 5 09.06.2008 08:41
Сложные SQL запросы или хранимые процедуры! Killer_djon БД в Delphi 17 25.03.2008 12:10
Какие языки программирования вы изучали? LAN Свободное общение 3 10.11.2007 11:18