Private Fname: integer; //1 - ші өрісінің аты Faddress: string[35]; //2 - ші өрісінің аты
Constructor Create; // құрастырушы
Public
Procedure Show; // Show - әдісі
End;
Объектілер қалай құрылады және жойылады?
Объект конструктор деп аталатын арнайы тәсілдің негізінде пайда болады да, басқа бір тәсіл- деструктордың көмегімен жойылады:
AMyObject := TMyObject.Create;
{ құрылған объектіге қолданылатын амалдар }
...
AMyObject.Destroy;
Класстың бірнеше конструкторы болуы мүмкін. Конструктордың жалпы аты create. Деструктордың типтік аталуы — Destroy.
type
TMyObject = class(TObject)
MyField: Integer;
Constructor Create;
Destructor Destroy;
Function MyMethod: Integer;
end;
Өрістер, қасиеттер және тәсілдер
Класстың өрістері - класстың ішінде сипатталған айнымалылар. Олар класстың объектісінің жұмысы барысында деректерді сақтауға арналған.
Класстың сипаттамасында өрістер тәсілдер мен қасиеттерден бұрын келуі керек.
Әдетте өрістер класстың ішіндегі операциялардың орындалуын қамтамасыз ету үшін қолданылады.
Деректер алмасу үшін класста қасиеттер қолданылады. Қасиеттерді сипаттау үшін класста property сөзі қолданылады.
Мысалы, қосымша терезесіндегі қарапайым батырманың түс, өлшем, алатын орны сияқты қасиеттері болады.
Қасиеттер сыртқы ортамен дерек алмасуды қамтамасыз етеді.
Сондықтан оның мәнін пайдалану үшін класстың арнайы тәсілдері пайдаланылады.
Әдетте қасиет үш элемент арқылы анықталады: өріс және оқу/жазуды жүзеге асыратын екі тәсіл:
type
TAnObject = class(TObject)
function GetColor: TSomeType;
procedure SetColor(ANewValue:
TSomeType);
property AColor:
TSomeType read GetColor write
SetColor;
end;
Егер қасиет тек оқылатын немесе жазылатын болса, онда оның сипаттамасында сәйкес тәсіл жазыла алады:
type
TAnObject = class(TObject)
property AProperty: TSomeType
read GetValue;
end;
Объектінің берілгендеріне орын бөлу - құрастырушы Create әдісін қолданудың нәтижесін меншіктеу арқылы орындалады, мысалы:
Proff:=TPerson.Create;
// proff объектінің берілгендеріне қажетті орын бөлу
Сонымен қатар, Consructor көмегімен объектінің берілгендеріне бастапқы мәндерін меншіктеуге, яғни объектіні инициялизациялау әрекетін орындауға болады:
Constructor TPerson Create;
Begin
fname:=’ ‘;
faddress:=’ ‘;
end;
Ендi объектiнi жариялап, инициялизациялаудан кейiн оны пайдалануға болады.
Жоғарыда айтылғандай, объектінің өрісіне қол жеткізу үшін объектінің және өрістің атын көрсету керек (арасында нүкте тұрады). Мысалы, Proff.fname. Егер белгілі бір объект ары қолданылмаса, онда жадыны босатуға болады. Осы әрекетті орындау үшін Free - деструктор әдісін қолдану керек, мысалы: Proff.Free;
Әдістер
Кластың әдістері (кластың анықтамасындағы көрсетілген процедуралар және функциялар) осы кластың объектілерімен жұмыс атқарады. Әдісті қолдануда объектінің атын және әдістің атын нүктемен ажыратып көрсетеді. Әдісті объектке қолдану - процедураның шақырылуына ұқсас. Кластың әдістерін анықтау әдеттегі процедуралар және функциялардың анықталуымен бірдей, тек әдістің процедурасының және функцияларының аты күрделі болып екі бөліктен тұрады: иесінің - кластың атынан, нүкте және әдістің атынан.
Инкапсуляция және объектінің қасиеттері
Инкапсуляция деп объектінің өрістеріне оның әдістері арқылы қол жеткізу үшін объектінің өрістерін жасыруды атайды. Delphi ортасында объектінің өрістеріне қол жетерлік мүмкіндіктерін шектеуді оның қасиеттері арқылы анықтайды. Объектінің қасиеті оның мәнін сақтайтын өрісімен және осы өріске қол жетерлік мүмкіндіктерін анықтайтын екі әдіспен сипатталады. Қасиеттің мәнін орнатуды қасиеттің мәнін жазу (Write), ал қасиеттің мәнін қайтару - қасиеттің мәнін оқу (Read) әдістерімен орындалады. Кластың анықтамасында қасиеттің атының алдына Properties сөзі, оның түрі және осы қасиетке қол жетерлік мүмкіндігін қамтитын әдістің аты орналасады.
Иемдену
ОББ - ның иемдену қасиеті бүрыннан анықталған кластарға жаңа өрістер, әдістер және қасиеттерді қосу арқылы туындыларын құрастыруға мүмкіндік туғызады. Сонымен бірге жаңа буын өз “иесінің“ барлық өрістерін, әдістерін және қасиеттерін иемденеді.
Туындысын жариялағанда алғы буынның атын міндетті түрде көрсету қажет. Мысалы, қызметкерлер класын TEmpl жоғарыдағы қарастырылған TPerson класына FDep (бөлім) деген өрісті қосу арқылы анықтауға болады.
3.2. Protected және private нұсқаулары
Клас элементттерін (өрістері, әдістері және қасиеттері) жариялаумен қатар әдетте кластың анықтамасына protected (қорғалған ) және private (жасырылған) нұсқауларын келтіреді. Бұл нұсқаулар кластың элементттеріне қол жетерлік мүмкіндігін анықтайды.
Protected арқылы анықталған элементттерді тек олардың туындыларынан көруге болады. Қол жетерлік аймақ кластың анықтамасы орналасқан модульмен шектелмейді. Әдетте Protected бөлімшесіне кластың әдістер анықтамасын орналастырады.
Private арқылы анықталған элементттер тек модульде белгілі болып саналады. Осындай сипатталған элементттерге модульден тыс және кластардың туындыларынан қол жеткізуге болмайды. Әдетте Private бөлімшесіне кластың өрістерінің сипаттамаларын орналастырады, ал осы өрістерге қол жеткізу үшін қолданылатын әдістер анықтамасын Protected бөлімшесінде орналастырады.
3.3. Полиморфизм және виртуалдық әдістер
Полиморфизм, дегеніміз, - әртүрлі кластарға жататын әдістерге бір атауды қолдану мүмкіндігі. ОББ - ның осы қасиеті арқылы кластың әртүрлі объектілеріне бір атаудағы әдісті қолданғанда, дәл аталмыш объектіне сәйкес әдістің орындалуын қамтиды.
Негізгі класта Virtual нұсқауы арқылы бұл әдіс виртуалды деп анықталған. Әдістің виртуалды деп анықталуы туындыларына осы әдісті өз қажеттілігіне сай өзгертуге мүмкіндік береді. Негізгі кластың туындылары да Info функциясын қолданады, тек әр туынды негізгі класс әдісінің орнына өзінің әдісін қояды. Негізгі кластың виртуалды әдісінің орнына туындыдағы анықталған әдісті Override - аластату нұсқауы арқылы көрсетеді.
Жалпы қажеттіліктерге қолданылатын кластар
Object Pascal құрамындағы барлық кластар TObject класының - ең түпкі буынның туындылары болып саналады. TObject класы стандартты SYSTEM.PAS модулінде орналасады және көптеген қасиеттер және әдістермен қамтылған. Әдістердің арасында ClassName - анықталған объектінің алғы буынының атын қайтарады, ClassType - кластың туындысы туралы мәлімет қайтарады, Create - объектінің данасын құрастырады, Free - объектіні жояды және қажет болса объект орналасқан жадының аймағын босатады т.с.с.
1.TPersistent класы өзінің Tobject - алғы буын мүмкіндіктерін ұлғайтып, берілгендерді файлда сақтау, файлдан оқу әрекеттерін “орындай” алады, нәтижесінде оның барлық туындылары аталған әрекеттерді “орындайды”.
2.TControl класының бірнеше қасиеттерін қарастырайық. Мысалы, Align - тегістеу тәртібін орнатады, Caption - компонентің бетіне жазу шығарады, Color - компонентің түсін анықтайды, Enabled - компонентің екпінділігін көрсетеді және т.с.с. Бұл класс көптеген әдістермен қамтылған. Олардың арасындағы бірнеше әдістерді атап шығайық: Click- сырт еткізудегі оқиғаны өңдеуші үзіндіні шақырады, DblClick - екі рет сырт еткізудегі оқиғаны өңдеуші үзіндіні шақырады, Hide - копонентті жасырады, Show - компонентті көрсетеді, Refresh - компоненттің бейнесін қайтадан сызады және т.с.с. Оқиғалары: OnClick, OnDblClick және т.с.с.
3.4 Қолданушының компоненттерін құру
Визуалдық компоненттерді қолданудың негіздері.
Визуалдық компоненттер жиынағының (VCL) құрамындағы барлық компоненттердің алғы буыны ТControl класы деп саналады. Осы класс компоненттің мекен – жәйын, мөлшерін, оның тақырыбын, түсін және басқа да сипттамаларын қамтиды. Сипаттамаларымен бірге аталған класқа барлық визуалдық компоненттердің ортақ қасиеттері, оқиғалары және әдістері жатады. Визуалдық компоненттерді екі үлкен топқа бөлуге болады: терезелік және де терезелік емес.
Терезелік компоненттер - белгілі бір қажеттілікке арнайы даярланған терезе. Оларға командалық батырмаларды, редакторлау терезелерін, қарап шығу белдеулерін және т.с.с жатқызуға болады. Терезелік элементттер TWinControl (Tcontrol класының туындысы) түріне жатады. Терезелік элементттерге фокусты беру төменгі екі әдістің біреумен орындалады:
Редакторлаудың көрсеткіші арқылы;
Төртбүрыштың көмегімен.
Edit және Memo - ге фокусты бергеннен (пернелер тақтасымен байланыстырғаннан) кейін енгізу жолында редакторлау көрсеткіші жыпылықтап тұрған тік сызық түрінде пернелер тақтасынан символды енгізетін позицияны көрсетіп тұрады. Осы көрсеткішті жылжыту пернелер тақтасындағы көрсеткішті басқару пернелерінің көмегімен орындалады.
Мәліметті редакторлау әрекеттерімен байланыспаған компоненттерге фокусты бергенде, көрсеткіш қара төртбырышпен бейнеленеді. Мысалы, төртбүрыш Button батырмасының сыртында орналасады, ал ListBox тізімінің таңдалған бір жолын белгілеп (бұл жол басқа түспен боялады, мысалы көк түспен ) тұрады.
Терезелік емес басқару элементттерінің негізі болып TControl - дың туындысы TGraphicControl түрі саналады. Терезелік емес басқару элементттеріне фокус берілмейді және оларды контейнер ретінде қолдануға болмайды. Терезелік емес басқару элементттерінің артықшылығы - дескриптордың қажеті жоқ болғандықтан, осындай элементтке кететін компьютердің ресурстары біршама төмен болады. Мысалы, программада құралдар тақташасын құрастыру үшін стандартты Button батырмасының орнына SpeedButton - жылдам батырмалардың орнатылғаны жөн.
Визуалдық компоненттердің көптеген ортақ қасиеттері, оқиғалары және әдістері болады.
Қасиеттері
Программа құрастырылғанда және орындалғанда компоненттің сыртқы көрінісін және бет алысын қасиеттер арқылы басқаруға болады. Компоненттің көптеген қасиеттерін Объектілер бақылаушысы арқылы форманы қалыптастыру кезеңінде анықтауға болады. Жалпы компоненттің қасиеттер мәнін меншіктеу операторымен анықтауға да болады.
ТCaption түріне жататын Caption қасиеті компонентің атын (тақырыбын) жазатын жолдан тұрады. Caption - String түрімен ұқсас деп саналады. Тақырыптағы кейбір символдардың асты сызылып тұруы мүмкін, олар жедел қол жеткізу пернелерінің қисындастыруын көрсетеді. Көрсетілген символдың Alt пернесімен бірге басылуы осы элементтті тышқан тетігімен басуымен бірдей деп есептеледі. Пернелердің қиылысуын анықтау үшін тақырыптағы сәйкес символдың алдына & таңбасы қойылады.
TAlign түріне жататын Align қасиеті контейнердің ішіндегі компоненттің тегістеуін қамтиды. Тегістеу тәртібі контейнердің мөлшері өзгертілгенде интерфейстік элементттің контейнер ішінде белгілі бір орынды алып тұруын қамту қажеттілігіне пайдалынады. Кейбір компонентердің, мысалы Button батырмасын осы қасиетіне тек қана программа орындалып жатқанда жол ашылады.
Компоненттің түсін кейбір тұрақтылар арқылы анықтауға болады. Ол тұрақтылар экран қасиеттерінің Оформление – безендіру бетбелгісімен анықталған Windows ортасының жүйелік палитрасының құрамындағы элементтер түстері.
Boolean түріндегі Ctl3D қасиеті арқылы визуалдық компоненттің көрініс түрін анықтауға болады. Егер Ct13D - ның мәні False болса, онда көрінісі екі өлшемді, ал True болса, онда үш өлшемді болады. Үш өлшемді көрініс элементттің жаңа ашылған эффекті арқылы беріледі. Бұл қасиет кейбір компоненттерде болмайды, мысалы Label - де ол жоқ.
TCursor түрінің Cursor қасиеті тышқан көрсеткішінің көрінісін анықтайды. Мысалы, crDefault мәні көрсеткіштің түрін келісімше (әдетте тілсызық) қалтырады, crNone - көрсеткіш көрінбейді, crHourGlass - көрінісі құм сағат түрінде шығады.
Boolean түріндегі Enabled - компоненттің екпінділігін, яғни тышқаннан немесе пернелерден түскен хабарға сезіну қабылеті бар екендігін көрсетеді. Егер қасиеттің мәні True болса, онда компонент екпінді деп саналады, False болса, онда компоненттің көрінісі бозарып, екпінді емес күйде болады.
Integer түріндегі Height және Width қасиеттері компоненттің контейнердегі биіктігін және ұзындығын көрсетеді. Форма өзі экранға орналасқан компонент деп саналады және оның координаттар нөмірі экранның жоғарғы сол жақ бұрышынан басталады. Integer түріндегі Left және Top компоненттің контейнердегі жоғарғы сол жақ бұрышын анықтайды.
String түріндегі Hint қасиеті арқылы көрсеткіш белгілі бір компонент аймағында жылжымай орналасып тұрғанда еске түсіретін хабар шығарылады. Ол хабар Hint қасиетінің оң жақтағы бос жолына енгізіледі. Енді хабар шығып тұруын қамту үшін Show Hint := True деп анықтау керек. Әдетте келісімше Show Hint мәні False болып тұрады.
TMainMenu түрінің MainMenu туындысы арқылы формаға меню жүйесін орнатуға болады. Меню құрастырушысы мәтіндік редакторға ұқсас және онымен жұмыс атқару ыңғайлы және жеңіл түрде орындалады.
TPopupMenu түрінің туындысы PopupMenu арқылы белгілі бір компоненттің аумағында тышқанның оң батырмасын басқанда жергілікті контекстік (тақырыпқа байланысты ) меню жүйесін шығаруға болады.
TabOrder қасиеті арқылы Tab пернесі басылғандағы объектілерге фокусты беру реті анықталады. Келісімше бұл тізбек форманы құрастырғанда оған орнатылған элементтер реті бойынша анықталады, ең алдымен орналастырылған компоненттің TabOrder қасиеті 0 болады, екінші болып орнатылған компоненттің TabOrder тең 1-ге және т.с.с.
Жалпы компоненттердің Parent параметріне ұқсас TComponent түріндегі Owner - иесі қасиеті болады. Әдетте формаға орналастырылған компоненттердің иесі - Form деп саналады. Егер компоненттердің иесі жойылса, онда оған орналастырылған барлық элементтер де жойылады.
Программаның орындалу барысында белгілі бір компоненттің орналастыруы Create (self) функциясы арқылы орындалады.
DragMode қасиеті программалау кезеңінде объектілерді жылжыту амалдарымен байланысты Drag – and - Drop тәсілін қолдануда пайдаланылады және басқару элементтін тышқанмен жылжытқандағы бет алысын анықтайды. DragMode мәні dmAutomatic және dmManual болады. Келісімше DragMode мәні dmManual болып тұрады. Бұл тәртіпте BeginDrag әдісі шақырылмағанға дейін басқару элементтін жылжытуға болмайды. Егер қасиеттің мәні dmAutomatic болса, онда объектіні кез келген мезгілде жылжытуға болады. Объектіні жылжыту амалдарын орындау үшін DragMode мәнін анықтаумен бірге жылжыту амалдары орындалғандағы оқиғаны өндеуші үзіндісін көлтіруді қажет етеді.
Әдістері
Delphi ортасының визуалдық және визуалдық емес компоненттері көптеген әдістермен байланысты болады. Ол әдістер арқылы объектілерді құрастыру, оларды жойып тастау, сызу, бейнелеу, жасыру және т.с.с. операцияларды орындауға болады. Визуалдық компоненттерге жиі қолданылатын әдістерді қарастырайық.
SetFocus прцедурасы терезелік басқару элементтіне енгізу фокусын береді. Егер басқару элементті қазіргі мезетте енгізу фокусын қабылдай алмайтын жағдайда болса, онда қате шығады. Сондықтан фокусты элементтке беру алдында элементттің фокусты қабылдайтын қабылетін CanFocus функциясы арқылы тексеру керек. Егер функцияның нәтижесі True болса, онда элементтке фокусты беруге болады, керісінше (False) - элементт фокусты қабылдай алмайды. Фокусты қабылдамайтын жағдай - элементт екпінді емес күйде болуы, яғни оның Enabled қасиетінің мәні False болғандығы анықтайды.
|