«Қазақстан тарихы, жалпы білім беру пәндері және ақпараттық жүйелер» кафедрасы


public – класс ӛрістері мен тәсілдері программаның кез-келген жерінен кӛріне алады(олар объектте бар деп есептеледі). private



бет28/64
Дата17.06.2022
өлшемі0.51 Mb.
#459285
түріЛекция
1   ...   24   25   26   27   28   29   30   31   ...   64
    Бұл бет үшін навигация:
  • MyObject
publicкласс ӛрістері мен тәсілдері программаның кез-келген жерінен кӛріне алады(олар объектте бар деп есептеледі). private – класс ӛрістері мен тәсілдері сол класс қайсы модульде жарияланған болса сол жерде ғана кӛріне алады.
Средств, чтобы сделать поля и методы видимыми только изнутри самого объекта (его методов) в Турбо Паскале нет. В Дельфи это директива protected. Мысалы:
unit A; interface type TObj1=object
procedure init; procedure done; private x,y:integer;
procedure Hidden;
end;
var AObj:TObj1;
implementation
............... begin
AObj.init;
AObj.x:=10; {здесь - можно} AObj.Hidden; end.
----------------------------- program My; uses A; begin
AObj.init;
AObj.x:=10; {а здесь так нельзя}
AObj.Hidden; end.
Объекттерді жадыда орналастыру
Бір класстың барлық экземплярлары үшін жады ӛріске ғана бӛлінеді.
Бір класстың барлық экземплярларының тәсілдері код сегментінде бір мәрте ғана жазылады, яғни, сол бір тәсіл берілген класстың барлық экземплярларына қызмет етеді. (Для всех экземпляров одного класса память выделяется только под поля.)
Объект экземпляры ӛз тәсілдеріне кӛрсеткішке ие емес (Бұған кейінірек тоқталамыз).

3. SELF параметрі және тәсілді шақыру


Тәсілді шақыру кезінде оған тағы бір параметр жіберіледі, бұл тәсілді шақырып отырған объект экземплярына алыс (дальний) 32-битті кӛрсеткіш.
Бұл кӛрсеткіш Self идентификаторы арқылы қолданылады.
Егер тәсіл жұмысының логикасы объекттің ӛзіне-ӛзі хабар жіберуінде болса(ӛз тәсілін Self шақырады), онда программаның оқылуын түсінкті ету үшін Self –ті айқын түрде кӛрсеткен дұрыс. Бұл параметрге шын мәнінде қажеттілік тәсіл ішінде ассемблерді пайдаланған уақытта туады. Паскалда тәсіл әрдайым алыс шақыруды қолданып шақырылады. Егер TMyObject классындағы тәсілдің атауы мынадай болса procedure Init(x,y:integer); онда шақыру былай жазылған кездегідей орындалады procedureInit(x,y:integer;var SELF:TMyObject); және
MyObject^.Init(10,20); деп шақырылған уақытта стекқа 10,20 сандары ендіріледі, бұдан соң MyObject кӛрсетіп тұрған жады орнының сегменті мен жылжуы (смещение) ендіріледі. Бұдан кейін компилятор алыс CALL командасын Init тәсіліне ену адресін кӛрсетумен бірге генерация жасайды (адрес бұл жағдайда қатаң түрде компилятор арқылы жазылады, және ешқандай таблицадан таңдап алынбайды).


Достарыңызбен бөлісу:
1   ...   24   25   26   27   28   29   30   31   ...   64




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет