Нельзя, но можно в Delphi, или аномалии Delphi и почему это
От: Аноним Артем Голубев  
Дата: 19.03.05 07:30
Оценка: 40 (4) +1 -4
Статья:
Нельзя, но можно в Delphi, или аномалии Delphi и почему это работает
Автор(ы): Артем Голубев
Дата: 11.06.2005
Описание нестандартных, с точки зрения ООП, особенностей Delphi


Авторы:
Артем Голубев

Аннотация:
Описание нестандартных, с точки зрения ООП, особенностей Delphi
Re: Нельзя, но можно в Delphi, или аномалии Delphi и почему
От: Oleg A. Bachin Украина  
Дата: 19.03.05 14:42
Оценка: 1 (1) +2
Здравствуйте, Аноним, Вы писали:

А>Статья:

А>Нельзя, но можно в Delphi, или аномалии Delphi и почему это работает
Автор(ы): Артем Голубев
Дата: 11.06.2005
Описание нестандартных, с точки зрения ООП, особенностей Delphi


А>Авторы:

А>Артем Голубев

А>Аннотация:

А>Описание нестандартных, с точки зрения ООП, особенностей Delphi

а в чем особонность то? ну грязный хак! нормальные люди если им не нужны переменные класса пишут class function и не вводят никого в заблуждение!
то что внутрях Self переприсваиваешь, так у меня после включения оптимизатора тоже есть такие строки (ну не можем мы от него отказаться).

вобщем статьи нет, но врядли я ее буду сильно ждать.

в двух словах:
класс — это список функций ассоциированный с именем класса (на стадии компиляции)
экземпляр класса — это указатель на начало данных класса

если тебе не нужны данные — то какая тебе разница внутри функции куда указывает Self!
Best regards,
Oleg A. Bachin
Re: Нельзя, но можно в Delphi, или аномалии Delphi и почему
От: kvl_mikki Россия  
Дата: 20.06.05 08:58
Оценка: -1
Здравствуйте, Артем Голубев, Вы писали:

АГ>Статья:

АГ>Нельзя, но можно в Delphi, или аномалии Delphi и почему это работает
Автор(ы): Артем Голубев
Дата: 11.06.2005
Описание нестандартных, с точки зрения ООП, особенностей Delphi


АГ>Авторы:

АГ>Артем Голубев

АГ>Аннотация:

АГ>Описание нестандартных, с точки зрения ООП, особенностей Delphi

ты всего лишь создал объект в статической памяти и использовал его. это допустимо и было еще в 7-ом турбо паскале. ничего нового здесь нет и в турбопаскалевских учебниках расписан весь этот механизм.

--
Каратаев Владимир.
Re[2]: Нельзя, но можно в Delphi, или аномалии Delphi и поче
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 21.06.05 02:52
Оценка:
>ты всего лишь создал объект в статической памяти
Как ты себе это представляешь с class? Object-объекты (старого стиля) можно разместить в статической памяти — но никак не объекты нового стиля (class).

> это допустимо и было еще в 7-ом турбо паскале. ничего нового здесь нет и в турбопаскалевских учебниках расписан весь этот механизм.

Угу, только в 7м паскале не было объектов нового стиля.

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Re: Нельзя, но можно в Delphi, или аномалии Delphi и почему
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 21.06.05 03:01
Оценка: 1 (1)
Здравствуйте, Артем Голубев, Вы писали:

АГ>Статья:

АГ>Нельзя, но можно в Delphi, или аномалии Delphi и почему это работает
Автор(ы): Артем Голубев
Дата: 11.06.2005
Описание нестандартных, с точки зрения ООП, особенностей Delphi

Я бы сказал, крайне неудачное название, из-за чего и идут наезды на статью По сути, речь идет не о каких-то аномалиях (то, что расписано в хелпе, на мой взгляд, уже не аномалия, если только это явление не является абсолютно уникальным среди ОО-языков). Речь идет о пояснении реализации объектов в Delphi: выделении памяти, вызове методов и т.п. По-хорошему, следовало бы так статью и назвать и дать более полное раскрытие этой темы в смысле реализации именно в Delphi (где расположена VMT и с чем ее едят, чем dynamic отличается от virtual, какие различия у объектов старого и нового стиля, как берется интерфейс от объекта, почему, хотя VMT совместима по внутреннему формату с таблицей методов интерфейса и наследование идет только от одного класса, интерфейсный указатель от объекта может отличаться от адреса объекта — и т.д. и т.п.). Только про все это уже в разных местах написано, пусть даже везде понемногу, — не знаю, стоит ли огород городить.

АГ>Аннотация:

АГ>Описание нестандартных, с точки зрения ООП, особенностей Delphi
Так-таки и с точки зрения ООП? С точки зрения ООП все в порядке. Видимость внутри модуля — неявный Friend, который уже можно считать наполовину входящим в современные представления об ООП. А уж вызов метода несозданного объекта — никакое ООП не помешает тебе прострелить себе ногу, если очень захочешь

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Re[3]: Нельзя, но можно в Delphi, или аномалии Delphi и поче
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 21.06.05 03:26
Оценка:
SM>Как ты себе это представляешь с class? Object-объекты (старого стиля) можно разместить в статической памяти — но никак не объекты нового стиля (class).
Поправка Разумеется, извратом можно — через перекрытие NewInstance, например. А простым созданием — нельзя.

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Re: Нельзя, но можно в Delphi, или аномалии Delphi и почему
От: kuda2004  
Дата: 21.06.05 06:35
Оценка: 1 (1) +1
Здравствуйте, Артем Голубев, Вы писали:

АГ>Получается, что все методы в объекте – это почти методы классов (Class methods, в терминологии Delphi), за исключением параметра Self! Т. е. разница между ними только в синтаксисе вызова и в неявном параметре.


Я конечно могу ошибаться, но если мне не изменяет память, то Self для class методов указывает на метакласс.
Re[2]: Нельзя, но можно в Delphi, или аномалии Delphi и поче
От: Oleg A. Bachin Украина  
Дата: 21.06.05 12:04
Оценка:
Здравствуйте, kvl_mikki, Вы писали:

_>Здравствуйте, Артем Голубев, Вы писали:


АГ>>Статья:

АГ>>Нельзя, но можно в Delphi, или аномалии Delphi и почему это работает
Автор(ы): Артем Голубев
Дата: 11.06.2005
Описание нестандартных, с точки зрения ООП, особенностей Delphi


АГ>>Авторы:

АГ>>Артем Голубев

АГ>>Аннотация:

АГ>>Описание нестандартных, с точки зрения ООП, особенностей Delphi

_>ты всего лишь создал объект в статической памяти и использовал его. это допустимо и было еще в 7-ом турбо паскале. ничего нового здесь нет и в турбопаскалевских учебниках расписан весь этот механизм.


а что, придумали механизмы как в делфях на стеке объекты создавать?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Best regards,
Oleg A. Bachin
Re: Нельзя, но можно в Delphi, или аномалии Delphi и почему
От: Аноним  
Дата: 21.06.05 23:15
Оценка:
Здравствуйте, Артем Голубев, Вы писали:

АГ>Статья:

АГ>Нельзя, но можно в Delphi, или аномалии Delphi и почему это работает
Автор(ы): Артем Голубев
Дата: 11.06.2005
Описание нестандартных, с точки зрения ООП, особенностей Delphi


АГ>Авторы:

АГ>Артем Голубев

АГ>Аннотация:

АГ>Описание нестандартных, с точки зрения ООП, особенностей Delphi

Книги читать нужно автору.
Согласно стандартам работает Делфи.
К написанию статей автора не допускать!
Re: Нельзя, но можно в Delphi, или аномалии Delphi и почему
От: Аноним  
Дата: 22.06.05 18:10
Оценка:
Доброго времени суток!

Хотелось бы обратиться к авторам предыдущих комментариев: имхо, вы напрасно так наезжаете на автора. Человек нашел любопытный факт, я, например, этого не знал... Другое дело, что этот факт если и интересен, то только с теоретической точки зрения, я что-то сильно сомневаюсь, что такая ситуация встретится на практике (вызов метода несозданного объекта) — если объявил объектную переменную, то сразу же пиши соответствующие Create/Free, это по-моему уже рефлекс.
Re[2]: Нельзя, но можно в Delphi, или аномалии Delphi и поче
От: Oleg A. Bachin Украина  
Дата: 23.06.05 06:36
Оценка: 2 (1) -1
Здравствуйте, <Аноним>, Вы писали:

А>Доброго времени суток!


А>Хотелось бы обратиться к авторам предыдущих комментариев: имхо, вы напрасно так наезжаете на автора. Человек нашел любопытный факт, я, например, этого не знал... Другое дело, что этот факт если и интересен, то только с теоретической точки зрения, я что-то сильно сомневаюсь, что такая ситуация встретится на практике (вызов метода несозданного объекта) — если объявил объектную переменную, то сразу же пиши соответствующие Create/Free, это по-моему уже рефлекс.


есть реальное применение и я об этом уже писал здесь. просто
1. это серьезная вещь, а автов ее излагал довольно таки по-детски
2. тема не раскрыта даже на половину
3. нет никаких ограничений (а их валом!!!!).
и т.д...

я так понимаю, что статья написана методом научного тыка — потому и такое название. в реальности, изучив немного основы, все становится на свои места и появляются ньюансы.

поясню. автор нигде не написал что это должна быть статический метод. хорошо, я возьму виртуальный... что имеем?
а имеем вот что: во время компиляции было определено что это у меня пятый метод. значит я должен взять виртуальную таблицу методов, взять пятый и его вызвать. если же он nil, то берем его из предка и т.д. остается одна мелочь — определить класс созданного объекта. именно СОЗДАННОГО, а не задекларированного. берем 4 байта перед Self — они содержат указатель на наш класс. упс, обломс... 0 — 4 прядли содержит указатель на то что хотел автор. и это не последний ньюанс.

PS давно хотел написать нормальную статью по этому поводу, но нет времени, а сейчас еще и херней нагрузили, сорри.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Best regards,
Oleg A. Bachin
Re[3]: Нельзя, но можно в Delphi, или аномалии Delphi и поче
От: Oleg A. Bachin Украина  
Дата: 23.06.05 06:52
Оценка: 2 (1)
Здравствуйте, Oleg A. Bachin, Вы писали:

в догонку...
читать статью крайне не рекомендуется! автор просто не знает теории, не знает терминологии и не понимает основ.
чего стоит хотябы:

Теперь давайте сфокусируемся на методе класса:
.............
Он содержит одну локальную переменную, память под которую опять же выделяется при компиляции класса!

это ж бред! при какой компиляции выделяется память!? неужели можно допускать статьи от людей не отличающих класс от инстанса!?
уж и не знаю куда смотрит уважаема редакция чтоб такое пропустить еще и в печать.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Best regards,
Oleg A. Bachin
Re[4]: Нельзя, но можно в Delphi, или аномалии Delphi и поче
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 23.06.05 07:59
Оценка: -1 :)
Здравствуйте, Oleg A. Bachin, Вы писали:

OAB>уж и не знаю куда смотрит уважаема редакция чтоб такое пропустить еще и в печать.


должны же у нас быть хоть какие-то недостатки
Re[5]: Нельзя, но можно в Delphi, или аномалии Delphi и поче
От: Oleg A. Bachin Украина  
Дата: 23.06.05 08:02
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>Здравствуйте, Oleg A. Bachin, Вы писали:


OAB>>уж и не знаю куда смотрит уважаема редакция чтоб такое пропустить еще и в печать.


OE>должны же у нас быть хоть какие-то недостатки


так может тогда форум переименовать humor-near_delphi?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Best regards,
Oleg A. Bachin
Re[5]: Нельзя, но можно в Delphi, или аномалии Delphi и поче
От: metalim Эстония http://mem.ee
Дата: 28.06.05 15:39
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>должны же у нас быть хоть какие-то недостатки


НЕТ!
Have fun: Win+M, Ctrl+A, Enter
Re: Нельзя, но можно в Delphi, или аномалии Delphi и почему
От: Аноним  
Дата: 07.11.05 13:43
Оценка:
Здравствуйте, Артем Голубев, Вы писали:

АГ>Статья:

АГ>Нельзя, но можно в Delphi, или аномалии Delphi и почему это работает
Автор(ы): Артем Голубев
Дата: 11.06.2005
Описание нестандартных, с точки зрения ООП, особенностей Delphi


АГ>Авторы:

АГ>Артем Голубев

АГ>Аннотация:

АГ>Описание нестандартных, с точки зрения ООП, особенностей Delphi

бред, неожиданное "озарение" понимания нормального функционирования под соусом сенсационной аномалии. в мусор такие статьи и таких писателей.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.