Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Класс объекта


Страницы:   1 2 3

Kos[UFO] ©   (2006-08-19 02:34:00) 

Господа программисты, с одним человеком который считает семя хакером у меня возник спор:
Что такое КЛАСС?

Этот уважаемый человек твердит, что класс это указатель. Тем самым опровергая, какое либо отношение методов и свойств класса к понятию класса. Что, по моему мнению, полный бред.

Я считаю:
Класс объекта или просто класс – это специальный тип данных, что описывает свойства и методы объекта. Можно и по другому, но точно не указатель.

Рассудите нас пожалуйста честно и справедливо.


tesseract   (2006-08-19 20:05:00) [21]

> [28] default ©   (19.08.06 20:02)


Согласен, но не pointer, а область памяти.


default   (2006-08-19 20:02:00) [22]

Юрий Зотов ©   (19.08.06 19:07) [21]
я знаю, что в VMT в Delphi напихано ещё всякой всячины и эта VMT есть потому и у всех
но я смотрел на VMT в её прямом назначении, обеспечить косвенный вызов методов(полиморфизм), а то что туда разработчики Delphi напихали это уже не прямое назначение VMT

а вообще я могу всё назвать указателем!(следую аналогии с классом)
могу сказать, что дерево - это 4 байтовый поинтер! матрица - поинтер! почему кто-то спросит, скажу так ак указывает на область памяти где размещены элементы матрицы:)и тд это идеологический бред


tesseract   (2006-08-19 19:57:00) [23]

> если Ваши классы усегда в памяти - поздравляю.


Класс не находящийся в памяти, не существует, ибо не создан. Является частью файла, т.е. частью куска озаглавленной информации.


Юрий Зотов   (2006-08-19 19:55:00) [24]

> Сервисный инженер   (19.08.06 19:52) [25]

> Почему только мне тогда замечание?

Извините, но Вы читаете невнимательно. Оно как раз не к Вам относилось.


Сервисный инженер   (2006-08-19 19:52:00) [25]

> [24] tesseract ©   (19.08.06 19:31)
> Если судить по посту, фиговый из Вас инженер. "Класс" во
> первых не на винте, а в памяти. Во-вторых запись на винчестере
> сильно "модулирована" и на "пупыршки" не тянет.


фиговый или нет - не Вам судить, учитывая количество информации, на основании которой Вы умудрились сделать вывод.

если Ваши классы усегда в памяти - поздравляю.
про пупырышки на винте вообще не говорилось, "пост прочтите" (с).
Как сильно модулирована запись - мне пофиг. Я упростил модель. Но Вы можете придраться, что и пупырышки совсем не пупырышки.


> [21] Юрий Зотов ©   (19.08.06 19:07)
> "Про Delphi" указано в названии форума. Этого мало?


Почему только мне тогда замечание?


tesseract   (2006-08-19 19:31:00) [26]

> [18] Сервисный инженер   (19.08.06 17:59)

Если судить по посту, фиговый из Вас инженер. "Класс" во первых не на винте, а в памяти. Во-вторых запись на винчестере сильно "модулирована" и на "пупыршки" не тянет.


> [20] default ©   (19.08.06 18:22)


Ну надо бы было указать, что статических классов в Delphi не бывает.


> VMT и не пахнет


гм, давно хотел выяснить данный вопрос.


> [22] Джо ©   (19.08.06 19:11)


Я с другой стороны смотрю. Класс - это вид записи, содержащий ссылку на методы работы с данными:-)


Юрий Зотов   (2006-08-19 19:22:00) [27]

> Джо ©   (19.08.06 19:11) [22]

Думаю, что не один. Можно заглянуть в сырцы и убедиться, что как минимум, с нами солидарна еще и команда разработчиков Delphi. А как максимум - очевидно, все, кто знаком с реализацией ее объектной модели.

Так что "нас" - тыщи... правда, "их" все равно намного больше.
:о)


Джо   (2006-08-19 19:11:00) [28]

> [17] Юрий Зотов ©   (19.08.06 17:16)
> Физически, класс - это константа, содержащая адрес VMT.
> То есть, указатель.

Ну вот, хоть один человек со мной солидарен.


Юрий Зотов   (2006-08-19 19:07:00) [29]

> default ©   (19.08.06 18:22) [20]

> в сабже указано про Delphi?

"Про Delphi" указано в названии форума. Этого мало?

> мы говорим вообщем

Можно, конечно, говорить и "вобщем", но в силу несколько различающихся объектных моделей и (особенно!) их реализаций (что, собственно, больше всего и интересует хакера, о точке зрения которого тут речь и идет), это будет разговор ни о чем. От участия в такомразговоре я, с вашего позволения, воздержусь.

> VMT и не пахнет

Загляните в System.pas - думаю, удивитесь. Оказывается, VMT - это далеко не только виртуальные методы. Так что она все равно есть - даже если нет ни одного виртуального метода. По крайней мере, в VCL это так.


default   (2006-08-19 18:22:00) [30]

Юрий Зотов ©   (19.08.06 17:16) [17]
"Физически, класс - это константа, содержащая адрес VMT. "
в сабже указано про Delphi?
мы говорим вообщем
допустим иерархия классов имеет только обычные(неперекрываемые)
методы, VMT и не пахнет


Юрий Зотов   (2006-08-19 18:04:00) [31]

> Сервисный инженер   (19.08.06 17:59) [18]

Действительно. Поэтому в следуюший раз, когда мы будем говорить о ВАШЕМ взгляде на класс - вот тогда и поговорим о намагниченности и пупырышках.

Но пока что, в ЭТОЙ ветке, мы говорим о другом. Сабж прочтите.


Сервисный инженер   (2006-08-19 17:59:00) [32]

> [17] Юрий Зотов ©   (19.08.06 17:16)


ну а для меня класс, равно как и прочее, это просто намагниченность на блине винта, или пупырышки на компакте.


Юрий Зотов   (2006-08-19 17:16:00) [33]

Логически, класс - это тип. То есть, информация для компилятора.

Физически, класс - это константа, содержащая адрес VMT. То есть, указатель.

Если рассматривать класс именно с точки зрения хакера, для него гораздо важнее второе.

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


Пусик   (2006-08-19 13:48:00) [34]


> И ваш "хакер" сразу посыпит голову пеплом, убъётся головой
> ап стену, одновременно выстрелив себе в голову?


Он просто удавится от твоего остроумия.


Пусик   (2006-08-19 13:47:00) [35]

Класс - специальная структура, описывающая данные и правила работы с ними. Никакого отношения к указателям.


> Kos[UFO] ©   (19.08.06 02:34)


"Один человек" (впрочем как и ты) путает объекты как экземпляры некого класса и сами классы.

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


Плохиш   (2006-08-19 11:48:00) [36]


> Я нашел в трех местах! Но этот уважаемый человек настаивает
> на своем. Вот я и пишу сюда в надежде услышать здравые рассуждения
> от опытных программистов.

И ваш "хакер" сразу посыпит голову пеплом, убъётся головой ап стену, одновременно выстрелив себе в голову?


palva   (2006-08-19 11:31:00) [37]

DprYg ©   (19.08.06 11:22) [12]
Хакер это тот, кто использует класс (точнее экземпляр класса) как указатель, и при этом тащится, поскольку узнал про это недавно.


DprYg   (2006-08-19 11:22:00) [38]

Так что, можно сделать вывод, что "класс" вообще - не указатель. А этот один человек вообще - не хакер.
P.S. Кстати, я несколько раз встречался с разными определениями слова "хакер". Одни под ним подразумевают того, кто делает что-то очень плохое, другие - крутого программиста. Вот так :)


DrPass   (2006-08-19 10:24:00) [39]


> Kos[UFO] ©  

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


DprYg   (2006-08-19 09:47:00) [40]

В отличие от BP7 в Delphi нет необходимости при объявлении класса создавать тип-указатель явно. Он неявно происходит от предка. А при ссылке на экземпляр Delphi просто автоматически разыменовывает указатель. Так что ответ на вопрос зависит от того, в каком смысле мы используем термин "класс".


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо