Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменить синтаксис паскаля(делфи) 
:(
    Опции темы
MAKCim
Дата 2.6.2008, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Цитата(Alexeis @  2.6.2008,  14:03 Найти цитируемый пост)
MAKCim, я уже писал, что интерфейс не самостоятельная сущность. Сам он ничего не умеет. Подсчет ссылок целиком и полностью лежит на объекте. 

значит я обязан для каждого класса, реализующего любой интерфейс, определять методы подсчета ссылок?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
skyboy
Дата 2.6.2008, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



Цитата(MAKCim @  2.6.2008,  13:16 Найти цитируемый пост)
 я обязан

нет.
можно вместо TObject наследоваться от TInterfacedObject.

PM MAIL   Вверх
Любитель
Дата 2.6.2008, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(Alexeis @  2.6.2008,  14:03 Найти цитируемый пост)
Это происходит неявно вне зависимости от желания программиста. Если его не указать, то Delphi без спроса его туда скрыто пропишет. На этом основан механизм подсчета ссылок.

Вот я этого не понимаю. С чего это любой интерфейс должен включать методы, занимающиеся подсчётом ссылок?

Цитата(skyboy @  2.6.2008,  14:34 Найти цитируемый пост)
можно вместо TObject наследоваться от TInterfacedObject.

Не вариант. Множественного наследования реализации у нас нет. Появляется проблема в выборе TInterfacedObject или чего-то ещё, не наследющегося от этого класса.


--------------------
PM MAIL ICQ Skype   Вверх
nickless
Дата 2.6.2008, 18:51 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 2
Всего: 181



 smile 

И не надоедает же об одном и том же спорить...  smile 


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
skyboy
Дата 2.6.2008, 19:13 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



Цитата(Любитель @  2.6.2008,  14:20 Найти цитируемый пост)
Множественного наследования реализации у нас нет. Появляется проблема в выборе TInterfacedObject или чего-то ещё, не наследющегося от этого класса.

не появляется. 
любой класс без указания явного предка - наследник TObject. TInterfacedObject - прямой потомок TObject, ничего, кроме реализации подсчета ссылок, к предку не добавляющий. Зачем вместо TInterfacedObject использовать TObject, если они идентичны за исключением подсчета ссылок? Только ради проблем?
PM MAIL   Вверх
Alexeis
Дата 2.6.2008, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



nickless, не об одном. Акценты смещаются. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Mayk
Дата 3.6.2008, 04:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 2
Всего: 134



на эту тему тоже стоит подписатьсяsmile


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
MAKCim
Дата 3.6.2008, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



Mayk, 
подписка не бесплатна  smile  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Любитель
Дата 3.6.2008, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(skyboy @  2.6.2008,  19:13 Найти цитируемый пост)
Зачем вместо TInterfacedObject использовать TObject, если они идентичны за исключением подсчета ссылок? Только ради проблем?

Блин, не от TObject. Я хочу наследоваться от некоторого TMyObject - а он не наследуется от TInterfacedObject. В то же время я хочу реализовать некий Interface1. Я вынужден также реализовывать подсчёт ссылок, который Interface1 наследует от IUnknown - хотим мы того или нет. Наследоваться одновременно и от TMyObject, и от TInterfacedObject я не могу. И вопрос - зачем мне лишние труды по реализации ненужного мне подсчёт ссылок?!

Цитата(nickless @  2.6.2008,  18:51 Найти цитируемый пост)
И не надоедает же об одном и том же спорить... 

smile 


--------------------
PM MAIL ICQ Skype   Вверх
Alexeis
Дата 3.6.2008, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



Любитель, TMyObject в любом случае наследуется от TObject, потому все изменение сводиться лишь к замене TObject на TInterfacedObject. Не пойму в чем проблема?


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
skyboy
Дата 3.6.2008, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 1
Всего: 260



Цитата(Любитель @  3.6.2008,  11:12 Найти цитируемый пост)
Наследоваться одновременно и от TMyObject, и от TInterfacedObject я не могу.

если твой TMyObject не доступен тебе для редактирования, то ты можешь объявить собственного наследника TMyObject, который реализует IUnknown(методы объявленные в нем). И использовать в своих проектах TMyMyObject = class(TMyObject) implements IUnknown в качестве базы.
Если ты не хочешь реализовывать три метода, сделай композицию с объектом TInterfacedObject и передай реализацию методов IUnknown внутреннему объекту класса TInterfacedObject.

Добавлено через 6 минут и 9 секунд
Цитата(skyboy @  3.6.2008,  12:06 Найти цитируемый пост)
 сделай композицию с объектом TInterfacedObject

предчувствуя возражения типа "это же не удобно! меня поплющит три строчки дописать и объявить внутренний объект" сразу привожу контраргументы:
(по реализации) если объектов будет слишком много, объект, реализующий подсчет ссылок и правда - лишняя трата: либо делать-таки "ручную"(непосредственную) реализацию методов, либо использовать шаблон "Посетитель"(visitor)
(по структуре) композиция вполне соответствует "духу ООП", а перенос реализации на внутренние объекты - полне нормально при условии отсутствия множественного наследования; к тому же само по себе делегирование - не есть плохо, лишь бы логика одного объекта не переносилась в независимый и несвязанный по модели объект.
PM MAIL   Вверх
Любитель
Дата 3.6.2008, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Это всё хорошо, вопрос в том - нафига мне вообще заботиться о подсчёте ссылок, который мне вовсе не нужен, если я хочу релизовать некий интерфейс, не имеющий никакого отношения к подсчёту ссылок?

Вообщем, думаю мы друг друга поняли. Нигде больше реализация произвольного интерфейса не заставляет реализовывать подсчёт ссылок (почему вообще именно подсчёт ссылок - мож ещё какую-нибудь полезную фиговину реалдизовать  smile ). Предлагаю переключаться на другой пункт обсуждения (чтоб придумать? smile )

Добавлено через 46 секунд
Цитата(Alexeis @  3.6.2008,  12:28 Найти цитируемый пост)
Любитель, TMyObject в любом случае наследуется от TObject, потому все изменение сводиться лишь к замене TObject на TInterfacedObject. Не пойму в чем проблема? 

Надо змаенить TMyObject на THisObject smile


--------------------
PM MAIL ICQ Skype   Вверх
Alexeis
Дата 3.6.2008, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



Цитата(Любитель @  3.6.2008,  12:22 Найти цитируемый пост)
Вообщем, думаю мы друг друга поняли. Нигде больше реализация произвольного интерфейса не заставляет реализовывать подсчёт ссылок (почему вообще именно подсчёт ссылок - мож ещё какую-нибудь полезную фиговину реалдизовать  smile ). 

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


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Любитель
Дата 3.6.2008, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(Alexeis @  3.6.2008,  13:43 Найти цитируемый пост)
Это значит что при выходе интерфейса из блока счетчик ссылок декремнируется автоматически и если он становиться равным нулю, то объект автоматом удаляется, без явного вызова Free или деструктора.

Гы. Это собственно и называется смарт-поинтер. И непонятно, почему сие обязано привзываться к интерфейсам. smile


--------------------
PM MAIL ICQ Skype   Вверх
Alexeis
Дата 3.6.2008, 14:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 14
Всего: 459



Цитата(Любитель @  3.6.2008,  12:46 Найти цитируемый пост)
И непонятно, почему сие обязано привзываться к интерфейсам.

  Сие называется автоматические объекты. И никак это не привязывается к интерфейсам, просто интерфейс это один из 3х типов автоматических объектов. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.0645 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.