Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.55 MB
Время: 0.032 c
14-1080819455
Dmitriy O.
2004-04-01 15:37
2004.04.25
Невезуха !


3-1080803624
dima74
2004-04-01 11:13
2004.04.25
Временные файлы


1-1081082349
$tranger
2004-04-04 16:39
2004.04.25
Проблема с ShellTreeView


6-1077164853
CASPER
2004-02-19 07:27
2004.04.25
Игра по сети


3-1080225142
Rule
2004-03-25 17:32
2004.04.25
Торможу, помогите с Lookup полями.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский