Форум: "Потрепаться";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Внизклассы и объекты Найти похожие ветки
← →
Kolyan © (2004-03-28 14:49) [0]Вот люди,я понять не могу, помогите, растолкуйте и/или приведите примеры. Чем класс от объекта отличается а?
← →
Kerk © (2004-03-28 14:53) [1]В одном смысле, объект - это экземпляр класса.
В другом смысле, объект - object, класс - class.
object - это что-то вроде record"а, который может
хранить кроме полей еще и процедуры и функции.
отличие class от object в том, что class создается
динамически.
надеюсь ничего не напутал. :)
← →
Opuhshii © (2004-03-28 15:15) [2]Вот смотри, бывают бутылки с пивом,
бутылки с пивом - это класс,
а вот та которую я сейчас пью есть конкретная реализация этого класса - объект.
← →
Opuhshii © (2004-03-28 15:17) [3]"конкретная реализация" читать как "экземпляр"
← →
Kolyan © (2004-03-28 15:22) [4]
> Opuhshii © (28.03.04 15:17) [3]
По моему понял.
Например:
Библиотека - это класс. А книга по Делфи - это объект или экземпляр класса.Так что ли?
← →
vuk © (2004-03-28 15:23) [5]>Так что ли?
Не, не так. Класс - человек, Kolyan - экземпляр. ;o)
← →
Opuhshii © (2004-03-28 15:30) [6]идея не в "бутылки с пивом", а вообще "бывают бутылки с пивом"
← →
Kolyan © (2004-03-28 15:33) [7]
> vuk © (28.03.04 15:23) [5]
ДА. ДА. Программеры - класс. А vuk - экземпляр. ;o)
← →
vuk © (2004-03-28 15:40) [8]Факт! :o)
← →
ИМХО © (2004-03-28 17:35) [9]Голубые - класс. Борька Моисеев - объект... или субъект :o)
← →
vuk © (2004-03-28 18:09) [10]Он тип.
← →
ИМХО © (2004-03-28 18:17) [11]Тот еще.
← →
Nous Mellon © (2004-03-28 18:34) [12]Неужто сложно в ФАК посмотреть.
Там тот же самый вопрос выяснял ныне замастеревший Palladin
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988619105&n=19
← →
ИМХО © (2004-03-28 18:46) [13]Молодца, Мауз Нейлон! Достал скелет из шкафа.
← →
Nous Mellon © (2004-03-28 19:06) [14]
> Молодца, Мауз Нейлон! Достал скелет из шкафа.
Хоми ты чего? Такие знания не устаревают..
← →
TButton © (2004-03-28 19:09) [15]>Неужто сложно в ФАК посмотреть
да.
← →
Nous Mellon © (2004-03-28 19:27) [16]
> >Неужто сложно в ФАК посмотреть
> да.
Ну тогда это ни что иное как леность и тупость человека которому это сложно
← →
SergP © (2004-03-28 19:34) [17]>Opuhshii © (28.03.04 15:15)
>бутылки с пивом - это класс,
И чем их больше - тем класснее... :-)))
← →
AZ © (2004-03-28 21:11) [18]Лучше, чем ЮЗ, тебе никто не объяснит.
← →
Kolyan © (2004-03-29 06:04) [19]
> Nous Mellon © (28.03.04 18:34) [12]
Вот блин не увидел это в факах. Спасибо всем. Просто теперь я действительно понял чем они отличаются
← →
Alex Konshin © (2004-03-29 07:28) [20]Дайте и мне вставить свою копейку (цент?).
Класс - это метаданные. Он описывает как работать с объектами (экземплярами) этого класса и может еще содержать данные, которые общие для всех объектов этого класса (кстати, в Delphi это не поддерживается).
Объект же содержит указатель на класс (чтобы знать, к какому классу он принадлежит и как как с ним работать) и данные именно этого объекта.
Теперь, чтобы окончательно вас запутать :)
В некоторых языках (например, в Java, но в Delphi этого нет) класс как таковой тоже является объектом некого класса (в Java - Class), который имеет методы для работы с классами, например, можно узнать родительский класс или имя класса.
В Delphi же указатель на класс это особый тип - "class of". Реально это указатель на VMT (virtual method table) этого класса - таблице указателей на все виртуальные методы этого класса, а также некоторые другие данные (например RTTI - run-time type information).
Конструкция
var pclass : class of TObject;
описывает переменную, которой можно присвоить указатель на класс.
В модуле TypInfo есть куча функций для работы с этими указателями.
Теперь вернемся к обектам в Delphi. Физически это record, у которой в первых 4 байтах находится указатель на класс. Далее идут поля, которые описаны при определении класса (точнее, сначала поля, описанные у всех предков этого класса, а потом уже поля собственно этого класса).
Запутал? :)
← →
Думкин © (2004-03-29 07:43) [21]Не останавливайся, продолжай. %))
← →
MeF88 © (2004-03-29 08:04) [22]Блин, ну людям хелп открыть почитать влом... Дожили.
← →
Alex Konshin © (2004-03-29 08:08) [23]А куда уж дальше? Про RTTI вроде не спрашивали. Про структуру VMT, конечно, можно рассказать, но нужно ли?
← →
Думкин © (2004-03-29 08:15) [24]смайл не помог. умолкаю. :((
← →
Kolyan © (2004-03-29 09:08) [25]
> MeF88 © (29.03.04 08:04) [22]
> Блин, ну людям хелп открыть почитать влом... Дожили.
Если ты это адресуешь мне и говоришь о хелпе в Делфи, то я в Английском практичеки полный нуль.
← →
wal © (2004-03-29 10:00) [26]А можно я скажу?
Как НЕТ?
А я все равно скажу!
Вот ты сидишь на стуле. Стул - это объект. Стул собирали по чертежу. Чертеж - это класс. Внимание вопрос. Чем чертеж стула отличается от стула? Из чертежа можно еще один стул сделать (Стул := TСтул.Create), можно взять этот чертеж за основу, и нарисовать еще один чертеж (ТСуперСтул = class(ТСтул)). Можно, конечно и на чертеже сидеть, но как-то не удобно :) .
С уважением.
← →
Reindeer Moss Eater © (2004-03-29 10:01) [27]Все это хорошо.
Но в OP класс - это тоже объект.
← →
Alex Konshin © (2004-03-29 10:05) [28]Но в Delphi это не так.
← →
Reindeer Moss Eater © (2004-03-29 10:12) [29]Это так и в Делфи потому что в Delphi - Object Pascal
← →
Alex Konshin © (2004-03-29 10:16) [30]Не, ты не прав. В Delphi class это отдельный тип данных, но он не является объектом. Вот в Java - да, там именно так.
← →
Reindeer Moss Eater © (2004-03-29 10:17) [31]Нет это ты не прав. А в Delphi класс - это тоже объект.
← →
int64 (2004-03-29 10:18) [32]Alex Konshin © (29.03.04 07:28) [20]
> может еще содержать данные, которые общие для всех объектов
> этого класса (кстати, в Delphi это не поддерживается).
Можно я спрашу? Почему все вспоминают, что в Delphi это не поддерживается. И какой практический смысл.
Фобия на глобальные переменные и методы класса? :|
← →
Alex Konshin © (2004-03-29 10:46) [33]Reindeer Moss Eater © (29.03.04 10:17) [31]
Нет это ты не прав. А в Delphi класс - это тоже объект.
Нет ты, нет ты! Что за детство? Аргументы есть?
Ты знаешь методы у указателей на класс? И еще более важно: ты можешь достать указатель на класс этого "объекта"?
← →
Anatoly Podgoretsky © (2004-03-29 10:47) [34]Что бы далее запутать, в Дельфи есть две модели - классовая и объектовая. Например КОЛ построен по объектовой модели.
← →
Alex Konshin © (2004-03-29 10:54) [35]int64 (29.03.04 10:18) [32]
Потому как проще и понятнее просто объявить поле - статический член класса, чем городить конструкцию со статическими методами класса и глобальными переменными.
← →
Плохиш (2004-03-29 11:10) [36]
> int64 (29.03.04 10:18) [32]
> Потому как проще и понятнее просто объявить поле - статический
> член класса, чем городить конструкцию со статическими методами
> класса и глобальными переменными.
А можно это ещё раз по-русски и по-медленнее?
← →
Alex Konshin © (2004-03-29 11:12) [37]Хм, вроде и так по-русски. Ты просто читай медленнее. :)
А что именно неясно?
← →
Плохиш (2004-03-29 11:55) [38]>Alex Konshin © (29.03.04 11:12) [37]
Да вроде слова все русские :-(
Может на примере продемонстрируете?
← →
Igorek © (2004-03-29 12:01) [39]Класс - множество, обьект - его элемент.
Теперь ответьте в таком же духе:
- что такое метакласс (class of T...)
- что такое предок класса
- что такое наследник класса
- что такое класс имеющий общий базовый с данным
- что такое TObject в ObjectPascal
- что такое два обьекта одного класса с разными значениями полей
- -..- с одинаковыми значениями полей
Если ответы будут клевые - оформим образовательную статью с философским уклоном. :-)
← →
Игорь Шевченко © (2004-03-29 12:16) [40]
> В некоторых языках (например, в Java, но в Delphi этого
> нет) класс как таковой тоже является объектом некого класса
> (в Java - Class), который имеет методы для работы с классами,
> например, можно узнать родительский класс или имя класса.
AFAIK, в Delphi все классы являюся наследниками TObject, у которого определены методы
class function ClassName: ShortString;
class function ClassNameIs(const Name: string): Boolean;
class function ClassParent: TClass;
class function ClassInfo: Pointer;
class function InstanceSize: Longint;
class function InheritsFrom(AClass: TClass): Boolean;
и т.д.
Чем не аналог Class в Java ?
Страницы: 1 2 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.032 c