Автор работы: Пользователь скрыл имя, 12 Ноября 2014 в 09:08, реферат
Краткое описание
Обьектіге бағдарлы оқиғалық программалау тілінде программаның жұмысы негізінен оқиғалар тізбегінен және түрлі обьектілердің осы оқиғаларға жауабынан тұрады. Олардың визуальды түрлері – visual Basic тілі Qbasic программалау тілі негізінде, Delphi (Делфи) обьектілі Паскаль (Object Pascal) тілі негізінде Windows операциялық жүйесін басшылыққа алып құрылған (visual - көзбен көру, экрандық). Олар, әсірісе, Delphi программалау тілі - кез-келген қосымшаны дайындауға болатын жылдамдығы тез, қуатты тіл.
Содержание
1. Кіріспе 2. Delphi-ді іске қосу. Delphi ортасы 3. Проект. Форма.Қасиеттер. Қасиеттер терезесі 4. Оқиғалар
Программа үстінде жұмыс істей
отырып, программист кейбір инструкциялар
қатары бірнеше рет программаның әр түрлі
бөлігінде қайталанатынын байқайды.
Программада осындай қайталануларды
болдырмауға болады. Бұл үшін программада
бірнеше рет қайталанатын инструкциялар
қатарын көмекші программа ретінде жариялап,
қайталанған жерлеріне осы көмекші программаны
шақыру инструкциясын қойып шығу керек.
Көмекші программаны қолданудың
артықшылықтары бар. 1-шіден, программада
кодтың қайталануы болмайды, демек программа
құруды жеңілдетеді, әрі өзгерістер енгізу
және отладка жасау процессін ыңғайлы
етеді. 2-шіден, прогамманың сенімділігі
біршама артады. Көмекші программаларды
тек қайталануды болдырмау үшін ғана қолданбайды.
Үлкен мәселені бірнеше кіші ішкі мәселелерге
бөліп, әр мәселені көмекші программа
ретінде құру ыңғайлы. Бұл жағдайда программаның
«оқылуы» жақсарады, әрі отладка процессі
оңайланады.
Көмекші программа – бұл жалпы
ортақ мәселенің бір бөлігін шешетін кішігірім
программа. Delphi-де көмекші программаның
екі түрі бар: процедура және функция
Әрбір көмекші программаның
атауы бар, ол оны программа ішінде шақыру
үшін қолданылады.
Функцияның процедурадан айырмашылығы
мынада: функция атауына мән (функцияның
нәтижелік мәні) байланыстырылған, сондықтан
функцияны өрнек операндасы (мысалы меншіктеу)
ретінде қолдануға болады.
Көмекші программаның әдетте,
параметрлері бар болады. Олар формальді және нақты болып
бөлінеді.
Функцияны жариялағанда көрсетілетін
параметрлер формальді деп
аталады. Процедураны шақыру инструкциясында
көрсетілетін параметрлер нақты деп аталады.
Параметрлер
көмекші программаға берілгендерді
жіберу үшін
көмекші программаның нәтижесін
алу үшін
қолданылады.
Жалпы жағдайда процедураның
нақты параметрі ретінде типі сәйкес формальді
параметрдің типімен бірдей болатын өрнекті
қолдануға болады.
2. Функция
Функция — бұл көмекші программа,
яғни, бір ғана ортақ атау берілген инструкциялар
қатары. Функцияның инструкцияларына
өту процессі функцияны шақыру
деп аталады. Функцияның инструкцияларынан
программа дағы осы функцияны шақыру инструкциясына
өту - функциядан қайту
деп аталады.
Жалпы түрде функцияны шақыру
инструкциясы мынадай көріністе болады:
Айнымалы := Функция (Параметрлер)
;
Мыналарға көңіл аудару қажет:
әрбір функция белгілі бір типтегі мәнді қайтарады, сондықтан функцияның
мәні меншіктелетін айнымалының типі
функция типіне сәйкес болу керек;
әрбір нақты функция үшін параметрлер
сан мен типі қатал анықталған.
Жалпы түрде функцияның
жариялануы мына көріністе болады:
function Атау (параметр1 : тип1, ..., параметрК
: типК) : Тип;
var // мұнда локал айнымалылардың
сипатталуы
begin
// мұнда функция инструкциялары
Атау := Өрнек;
end;
Мұнда:
function — Delphi тілінің қызметші сөзі, ол өзінен кейін функция инструкциялары
жазылатындығын білдіреді;
атау — функция атауы. Программадан функция инструкцияларына өту үшін қолданылады;
параметр — мәні функция мәнін есептеу үшін қолданылатын айнымалы. Кәдімгі айнымалыдан айырмашылығы,
ол var сөзімен басталатын айнымалыларды
сипаттау бөлімінде емес, функцияның атауында
сипатталады. Нақты мәніне параметр программаның
жұмысы барысында негізгі программадан
функцияны шақыру нәтижесінде ие болады;
тип — функцияның шақырған программаға қайтаратын
мәнінің типі.
Төмендегі мысалда isint және isFioat функциялары
келтірілген. isint функциясы
редакторлау өрісіне бүтін санды енгізу
барысында басылған перне символы рұқсат
етілген не етілмегендігін анықтайды.
Сандар, <Enter> , <Backspace> пернелеріне
рұқсат етілген деп есептеледі. IsFloat функциясының
міндеті де осындай, бірақ, бөлшек сандар
үшін. IsFloat функциясының
екі параметрі бар: басылған перне коды
және редакторлау өрісіне енгізіліп қойылған
символдар қатары.
Функцияға мысал // бүтін санды енгізу кезінде
енгізілген символдың
// рұқсат етілген не етілмегендігін
анықтайды
function Islnt(ch : char) : Boolean;
begin
if (ch >= '0'} and (ch <= '9') // сандар
or (ch = 113) // <Enter> пернесі
or (ch = #8) // <Backspace> пернесі
then Islnt := True // символ рұқсат етілген
else Islnt := False; // рұқсат етілмеген
символ
end;
// бөлшек санды енгізу кезінде
енгізілген символдың
// рұқсат етілген не етілмегендігін
анықтайды
function IsFloat(ch : char; st: string) : Boolean;
begin
if (ch >= '0') and (ch <= '9') // сандар
or (ch = #13) // <Enter> пернесі
or (ch = #8) // <Backspace> пернесі
then
begin
IsFloat := True; // дұрыс символ
Exit; // функциядан шығу
end;
case ch of
'-': if Length(st) = 0
then IsFloat := True; ',':
if (Pos(',',st) = 0)
and (st[Length(st)]'>= '0') and (st[Length(st)] <=
'9')
then // бұрын енгізілмеген болса
үтір белгісін цифрдан соң енгізуге
болады
IsFloat := True; else // басқа символдарға
рұқсат етілмейді
IsFloat := False;
end;
end;
3. Модуль құру
Delphi программистке өз функциялары
мен процедураларын жеке модульге орналастыруға,
бұдан соң осы модульдің процедура мен
функцияларын программада пайдалануға(uses
модульдер тізімінде өз модулінің атауын
көрсету керек) рұқсат етеді.
Модуль құру үшін форма мен
модуль терезесін жабу қажет ( сақтауды
ұсынған терезеде No –ді таңдау қажет,
яғни, жабылған форманың модулін сақтау
керек емес). Бұдан соғ File мәзірінен
New -> Unit командасы
таңдалады. Нәтижеде код редакторының
терезесі ашылады. Мұнда қалыптастырылған
модуль шаблоны бар. Оның мәтіні төменде
келтіріледі.
Модуль шаблоны
unit Unit1;
interface
implementation
end.
Модульді сақтау кезінде Unit1
атауы программист берген атауға автоматты
түрде алмастырылып қойылады.
Interface бөліміне басқа модульдер
шақыра алатын осы модульдің процедура
мен функциялары жарияланады.
Implementation (реализация) бөліміне
interface бөлімінде жарияланған процедуралар
мен функциялар орналастырылады.
Модуль File-> Save командасымен
сақталады. Мұндай модульдерді жеке папкаға
(мысалы Units атауымен)
сақтаған дұрыс.
Модульді пайдалану. Программада модульдің функция
мен процедураларын пайдалана алу үшін
программист осы модульді жобаға қосып,
оның атауын пайдаланылатын модульдер
тізімінде көрсетуі керек.
Объектілі-бағдарлы
программалау тәсілі.
Жоспар:
1. Объектілі-бағдарлы программалау
тәсілі жөнінде
2. Мұрагерлік. Инкапсуляция.
Полиморфизм.
1. Объектілі-бағдарлы программалау
тәсілі жөнінде
Бейсик, Паскаль сияқты дәстүрлі
программалау тілдерінде күрделі, үлкен
программаларды дайындаудың кемшілігі
– ол үшін программалаушылар тобының
көп күш жұмсауы қажет болатын. Программалауды
жеңілдету үшін 80-жылдары объект, класс (object,
class) ұғымдары енгізіліп, объектілі – бағдарлы
программалау (ОБП) тәсілі негізге
алынды. ОБП – Паскальда
қолданылатын процедуралық және құрылымдық
программалаудың және модуль құрудың
дамытылған түрі. Ол берілгендерді белгілі
бір абстракциялық деңгейде көрсетіп, модульдік программалауды
пайдаланады. Мысалы, Visual Basic программалау
жүйесі объектілі программалау тәсілін
пайдаланып, Qbasic тілі негізінде визуальды
түрде құрылған. Паскальдың ОБП тәсілін пайдаланып
құрылған жаңа нұсқасы Object Pascal (Объектілі
Паскаль) деп аталады. Delphi осы тілдің
негізінде дайындалған. Объектілі программалаудың
ыңғайсыздығы – онда дәстүрлі программалау
тәсілдері пайдалана берілмейді, бірақ
ондағы көп қиындықтар арнайы тәсілдерді
пайдалану арқылы тез шешілген.
ОБП тілінің дәстүрлі программалау
тілдерінің өзгешелігі – онда, өрістерге
қоса, мынадай ұғымдар негізге алынған: класс, объект, өңдеу
тәсілі, объект қасиеті және оқиға.
Өрістер – Турбо Паскальдағы жазу (record)
типінің өрістері сияқты;
Қасиеттер – объект сипаттамалары (параметрлері);
Тәсілдер – кластың өрістері мен қасиеттерін
өңдеу процедуралар
мен функциялар;
объект – түрлі мәндердің қасиеттері
тәсілдерінің жиынтығы;
оқиға – объект жағдайының өзгеруі.
Класс - өрістер, қасиеттер және тәсілдерінің
бірлігінен тұратын тип, не, жалпы түрде,
өңдеу тәсілдері не қасиеттері ортақ түрде
сипатталатын объектілер (нысандар) жиынтығы.
Жүйе объект үшін жадтың динамикалық
облысынан арнайы орын қалдырады. Яғни,
шын мәнінде, объект жай айнымалы емес,
ол – жадтың динамикалық облысының кездейсоқ
адресін сақтайтын көрсеткіш. Бірақ программада
оған Турбо Паскальда пайданылатын көрсеткіш
белгісі (^) енгізілмей жазылады.
Объект құрылған кезде автоматты
түрде конструктор
(constructor) деп аталатын тәсіл шақырылып,
ол объектіні динамикалық облыста орналастырады,
динамикалық жадтан объектіні арнайы деструктор (destructor)
тәсілі жояды.
Сонымен, ОБП –да пайдаланылатын
объект сөзінің екі мағынасы бар: нақты
объект (мысалы, геометриялық дене, формада
орнатылған компонент, т.б.) және айнымалы
(абстрактты, дерексіз объект). Delphi-де екінші
объект нақты класс данасын
анықтайды.
Класқа иерархиялық
(бағынышты, жоғарыдан төмен) кластардың
енуі де мүмкін. Мысалы, геометриялық фигуралар
класы жазық фигуралар және кеңістік фигуралары
болатын екі ішкі кластық фигураларға
бөлінеді. Ал жазық фигуралар класы төбелері
бар (үшбұрыш, көпбұрыш) және төбелерсіз
(шеңбер, эллипс) болып екі ішкі класқа
бөлінеді. Объектілі программалауда барлық
кластар иерархиялық түрде негізгі Tobject класынан
тарайды (Tobject à Tpersistent à Tcomponent à …). Әдетте негізгі класты аталық,
бағыныңқы кластарды ұрпақ не сәбилік
кластар деп атайды (Tobject – барлық
кластардың арғы атасы, Tcomponent – барлық
иерархиялық компоненттердің жоғарғысы
(компонент деп
Tcomponent класының мұрагері болатын класс
данасын атайды)). Әр ұрпақ өзінің аталық
класының мүмкіндіктерін (өрістерінің,
қасиеттерінің, тәсілдерінің сипаттамаларын)
қабылдайды. Мысалы, Tobject класының Create (бастапқы
мән меншіктеу (инициалдау)) тәсілі барлық
ұрпақ кластарға тиісті (Tobject класында
конструктор Create деп аталады). Әр ұрпақ
өзіне қосымша жаңа мүмкіндіктер (сипаттамалар)
қосып, келесі ұрпақтарға беруі мүмкін.
Delphi –де класс атауын Т әрпінен бастау
келісілген. Формаға енгізілген компонент
данасын сандық индекс қосылған класс
атауымен аталады.
Ұрпақ кластың сипатталу түрі:
type
<ұрпақ класс атауы> = class (<негізгі
класс атауы>);
end;
var
< объект > : < класс атауы>;
мұндағы класс мүшелері - өрістер,
қасиеттер және тәсілдер.
Мысалы,
type
Tform1= class (TForm)
Button1 : TButton;
Label1 : TLabel;
Procedure Button1 Click (Sender : TObject);
end;
var Form1 : Tform1;
TForm1 = class (TForm) жазуы Tform класының үлгісімен
құрылатын жаңа (ұрпақ) TForm1 айнымалысы
– класс данасы.
Программаны дайындау барысында
Delphi модульдің Interface бөліміне
формаға енгізілген компоненттер мен
оқиғасы таңдалған тәсілдерді сипаттауды
автоматты түрде енгізеді, тәсілдерді
іске асыру нұсқаулары модульдің inplementation бөліміне
қолдан жазылады.
Жалпы, Delphi –де класс
деп өзіне ұқсас даналарды дайындау үшін
үлгі түрінде алынатын, толық түрде дайындалған
программа үзіндісін де атайды. Программалаушы
бұрын дайындалған класс данасының көшірмесін
түрлі программаларға не бір программаның
түрлі жерлеріне енгізіп, программалауды
және оның көлемін көп жеңілдетуіне болады.
Delphi құрамына жүздеген дайын
кластар енгізілген. Әр компонент қатаң
түрде тек бір класқа ғана тиісті. Мысалы,
Delphi – де форма (TForm) компоненті - Forma класына тиісті,
осы типті айнымалы (Form1) – класс объектісі.
Класс бөлігі ретінде сипатталып, модульдің
Inplementation (іске асыру) бөлігінде мәтіні
жазылатын сәйкес процедура - тәсіл, мысалы, procedure TForm1.Button1Click.
Форма ішіне орналастырылған
TЕdit компонентінің Edit1 данасын (объектісін)
екі рет шерткен кезде пайда болатын оқиғаны
өңдеу тәсіліне (процедурасына) мысал:
procedure TForm1.Edit1Click(Sender : TObject);
begin
Edit1.Text:=’Сіз редакциялау өрісін
екі рет шертіңіз’;
end;
программаны іске қосу командасы
берілген соң компилятор автоматты түрде
негізгі модульге енгізілген төмендегі
екі тәсілді орындайды:
Application.CreateForm(TForm1, Form1);
Application.Run;
Бұлардың біріншісі жадта Form1
объектісін құрады (объектіні инициалдайды),
екіншісі Application объектісіне қосымшаның
негізгі формасын іске қосуға нұсқау береді
(Run). Жоғарыда жазылған процедураның орындалу
нәтижесінде форманың Edit1 өрісіне оның
Text қасиетіне меншіктелген мәтін жазылады.
Ескерту. Белгісіз жағдайда программада
тәсілді не қасиет орнату командасын иерархиялық
түрде жазу қажет, мысалы:
TForm1.Button1.FontSize:= 14;
Мұндағы иерархияның бірінші
объектісі – форма (Form1), екінші
объект – формада орнатылған Button1 түймесі,
үшінші объект – түйменің шрифт қасиеті;
команда – форманың Button1 объектісіне
енгізілген FontSize (шрифт өлшемі)
айнымалысына 14 мәнін меншіктеу. Яғни,
объектілер арасына қойылатын нүкте сәйкес
иерархиялық объектіге сілтеме.
2. Мұрагерлік. Инкапсуляция.
Полиморфизм.
ОБП –да класс үшін мұрагерлік, инкапсуляция
және полиморфизм
принцптері енгізілген.
Мұрагерлік-программада негізгі класс
типінің ұрпақ иерархиялық кластарда
да сақталуы. Мысалы.көлік, жеңіл жүк машинасы
т.б.. болып бөлінеді. Олардың
жұмыс істеу жағдайына байланысты, сипаттамаларына
ортақ және бөлек өрістер, қасиеттер мен
тәсілдер енгізілуі мүмкін. Әр қайсысында
тип элементтерін толық сипаттау тиесілі
емес. Бірінің типін аталық (негізгі) етіп
қабылдап, екіншісіне қосымша қасиеттерді
енгізу жеткілікті.Delphi-дің барлық кластары TObject класына
мұрагер.