Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Вниз

Class function/procedure   Найти похожие ветки 

 
Новичек   (2004-06-22 16:05) [0]

что такое subj?
и как это использовать?
спасибо за внимание!


 
Amoeba ©   (2004-06-22 16:13) [1]

Эта ф-я/процедура может вызываться без создания экземпляра класса. Естественно, при этом в ней не может быть обращения к полям/св-вам класса. Для лучшего понимания читай литературу. Большой выбор таковой в эл. виде найдешь на сайте А.Подгорецкого: http://www.podgoretsky.com/lang.html


 
Тимохов ©   (2004-06-22 16:16) [2]

а еще они бывают виртуальные.


 
Amoeba ©   (2004-06-22 16:20) [3]


> Тимохов ©   (22.06.04 16:16) [2]

Интересно, знает ли автор вопроса разницу между виртуальными (а также динамическим) и статическими методами?


 
Тимохов ©   (2004-06-22 16:24) [4]

честно говоря разницу между дин и вирт методами я и сам плохо помню - когда то понял, что для моих задач разницы нет и за был.

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


 
Новичек   (2004-06-22 16:38) [5]

ну про виртуальные и статические я вроде понимать!
типа:

TMyClass = class;
 procedyre MyProc; virtual;
end;
TMyClass2 = class(TMyClass)
 procedure MyProc; override;
end;
...

а с классовыми типа можно сделать так:

TMyEnum = (enElem1, enElem2, enElem3);
TMyBaseClass = class
 class function GetType: TMyEnum; virtual; abstract;
end
TMyClass1 = class(TMyBaseClass)
 class function GetType: TMyEnum; override;
end;

TMyClass2 = class(TMyBaseClass)
 class function GetType: TMyEnum; override;
end;

TMyClass3 = class(TMyBaseClass)
 class function GetType: TMyEnum; override;
end;
...
implementation
...
class function TMyClass1.GetType: TMyEnum; virtual; abstract;
begin
 result := enElem1;
end;
...
class function TMyClass2.GetType: TMyEnum; virtual; abstract;
begin
 result := enElem2;
end;
...
class function TMyClass3.GetType: TMyEnum; virtual; abstract;
begin
 result := enElem3;
end;

я правильно усе написал?


 
Тимохов ©   (2004-06-22 16:41) [6]


>
> я правильно усе написал?

лучший ответ - проверка!
проверь - все станет ясно.

ЗЫ с первого взгляда все ок. кроме того, что под implemention virtual; abstract; надо убрать.


 
PVOzerski ©   (2004-06-22 16:46) [7]

Уж что-то одно: либо abstract, либо begin ... end;


 
Новичек   (2004-06-22 16:56) [8]

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


 
Amoeba ©   (2004-06-22 17:12) [9]


> а в хелпе как-то сжато написано

Тебе уже посоветовали почитать литературу.


 
GrayFace ©   (2004-06-22 18:05) [10]

Удалено модератором
Примечание: Любишь задавать вопросы в чужих ветках, а тебя никто не ограничивает создать свою


 
Тимохов ©   (2004-06-22 18:09) [11]


> GrayFace ©   (22.06.04 18:05) [10]

я так понимаю под статическими вы понимаете то, как это понимается в сях, т.е. принадлежащие классу. Так?

Если да, то ответ:
никак. Можно делать эмуляцию

class function GetClassVar: Integer;
class procedure SetClassVar(...)

implementation
var
 classvar: integer;

class function tmyclass.getclassvar: integer
begin
  result := classvar;
end;


и т.д.


 
Amoeba ©   (2004-06-22 18:09) [12]


> GrayFace ©   (22.06.04 18:05) [10]

Это что, шутка?


 
PVOzerski ©   (2004-06-22 18:09) [13]

>А как в Delphi делать статические переменные?
Если я правильно понял, о чем речь, использовать типизированные константы. Только последние версии требуют опции {$J+}


 
Amoeba ©   (2004-06-22 18:16) [14]


> Только последние версии требуют опции {$J+}

Эта опция установлена по умолчанию.


 
Arnold ©   (2004-06-22 21:27) [15]

чёт я непонял. Статические то переменные в сях (static) это те которые живут до тех пока прога не деструкнется. А принадлежат они классу или какой либо функции это вродь без разницы.


 
jack128 ©   (2004-06-22 21:44) [16]


> Arnold ©   (22.06.04 21:27)


про статические переменные я так понял имеется в виду, что то а ля

class CComPort  
{
public:
  static int m_static;
};

нет, нельзя. только то, что предложил > Тимохов ©   (22.06.04 18:09)

> честно говоря разницу между дин и вирт методами я и сам
> плохо помню - когда то понял, что для моих задач разницы
> нет и за был.
их поведение абсолютно одинаково. разница в реализации этого поведения.  А для твоих задач, если ты используешь ООП(а значит объекты) разница есть ;-) Динамические методы не могут быть методами доступа свойств


 
Тимохов ©   (2004-06-23 10:51) [17]


>  Динамические методы не могут быть методами доступа свойств

да это я знаю.
про одинаковость поведения и разность реализации тоже.

но детали не помню, т.к. к моему делу не относятся :))


 
Игорь Шевченко ©   (2004-06-23 11:01) [18]


> но детали не помню


"Разница между динамическими и виртуальными методами состоит в том, что таблица динамических методов DMT содержит адреса только тех методов, которые объявлены как dynamic в данном классе, в то время как таблица VMT содержит адреса виртуальных методов не только данного класса, но и всех его родителей. Значительно большая по размеру таблица VMT обеспечивает более быстрый поиск, в то время как при обращении к динамическому методу программа сначала просматривает таблицу DMT у объекта, затем у его родительского класса и так далее, пока не будет найдена нужная точка входа. "


 
Тимохов ©   (2004-06-23 11:04) [19]

всего то? :)))
тогда я знаю разницу virtual и dynamic :)))

спасибо, Игорь. Вы укрепили мою уверенность в моих же познаниях :))


 
Anatoly Podgoretsky ©   (2004-06-23 11:07) [20]

Amoeba ©   (22.06.04 16:13) [1]
К свойствам можно обращаться, если они не тянут за собой обращения к полям.
Например:

property CurentTime: TTime read Time;


 
Игорь Шевченко ©   (2004-06-23 11:15) [21]

Тимохов ©   (23.06.04 11:04)

Еще для укрепления:

"Динамические полезны когда базовый класс объявляет много перекрываемых методов, которые будут унаследованы множеством потомков, но только иногда будут перекрыты"

С уважением,


 
Новичек   (2004-06-23 11:21) [22]

очччень интересно! теперь буду знать...


 
Sandman25 ©   (2004-06-23 11:22) [23]

[22] Новичек   (23.06.04 11:21)

Перечитайте [9] Amoeba ©   (22.06.04 17:12). Еще много чего интересного узнаете :)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.035 c
4-1083161649
Бегун
2004-04-28 18:14
2004.07.11
Как запретить двигать форму?


1-1088167974
BBoost
2004-06-25 16:52
2004.07.11
Управление курсором в Edit е


3-1087298262
Xmen
2004-06-15 15:17
2004.07.11
немогу сохранить фото в базу Oracle


6-1084770253
Graf
2004-05-17 09:04
2004.07.11
Работа TCP под ДОС


1-1088174609
Максим
2004-06-25 18:43
2004.07.11
Есть ли ещё способы создания текстового файла, кроме AssignFile?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский