Объектілі-бағдарлы программалаудың теориясын меңгеру


Пән: Информатика, Программалау, Мәліметтер қоры
Жұмыс түрі:  Дипломдық жұмыс
Тегін:  Антиплагиат
Көлемі: 54 бет
Таңдаулыға:   
Бұл жұмыстың бағасы: 1500 теңге

Қандай қате таптыңыз?

Рақмет!







Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 3
І. ТАРАУ. Объектілі бағдарлы программалау және технологиясы.
Объект ұғымы ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... .7
ОБП қасиеттерi ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ... ... ... ... .13
Әдістер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..20
Виртуалды әдістер ... ... ... ... ... ... ... ... ... ... ... ... ... ... 23
Кластар құру ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 24
Жиындар құру ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 40
ІІ. ТАРАУ. HTML және ОБПтехнологиясы жайлы Web түйін құру
HTML ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .45
Тегтер ... ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ... ... ..46
HTML тілінің құрылымы ... ... ... ... ... ... ... ... ... ... ... ...48
Cілтемелер мен якорьлар ... ... ... ... ... ... ... ... ... ... ... ... ...50
2. 1.4 Бетке суреттер енгізу ... ... ... ... ... ... ... ... ... ... ... ... ... ..52
2. 1. 5 Тізімдермен жұмыс ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 57
2. 1. 6 HTML-дің мультимедиялық объектілері ... ... ... ... ... .. ... ..58
2. 1. 7 Кесте құру ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 60
2. 1. 8 Фреймдер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... . 62
2. 2 Front Page программасы ... ... ... ... ... ... ... ... ... ... ... ... ... ... 63
2. 2. 1 Стандартты аспаптар тақтасы ... ... ... ... ... ... ... ... ... ... ... 64
2. 2 Жұмыс режимі тақтасы ... ... ... ... ... ... ... ... ... ... ... ..66
2. 2. 3 Графикалық форматтардың түрлері ... ... ... ... ... ... ... ... .. .68
2. 2. 4 Динамикалық эффектілер ... ... ... ... ... ... ... ... ... ... ... ... ... . 70
2. 2. 5 Жүгіртпе жол ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 70
2. 2. 4 Бетке анимация ұйымдастыру ... ... ... ... ... ... ... ... ... ... ... .. 71
2.3 ОБП жайлы Web түйіннің дайындалу технологиясы ... ... ... ... ... ... .72
ҚОРЫТЫНДЫ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .79
Пайдаланылған әдебиеттер ... ... ... ... ... ... ... ... ... ... ... ... ... 80
Қосымша ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .81
Кіріспе

Компьютердің құрылымына байланысты төменгі, ортаңғы,жоғары деңгейлі программалау тілдері болады.
Төменгі деңгейлі тілдерге нақты компьютрлік машиналық командалар тілі енеді. Машиналық тілдегі программа командалар тізбегі, яғни, операцияға қатысатын операндтардың адрестерімен орындалатын операцияның кодтарының тізбегі. Мұндай программалау тілдерін компьютерге тәуелді тілдер деп те атайды. Машиналық тілде жазылған программа басқа компьютерде орындалмауы мүмкін. Себебі бұл компьтердің командалар жүйесі мен құрылысы өзгеше болуы мүмкін. Машиналық тілде жазылған программа жылдам орындалады және жадтан аз орын бөледі. Машиналық тілде программалау көп уақыт жұмсауды қажет етеді.
Машиналық тілдердің кемшіліктері ортаңғы деңгейлі машинаға бағдарланған. Машиналық тілде программалау кезінде жадты бөліктеу жұмысын программалаушы орындайды. Ал бағдарланған тілдерде ол жұмысты компьютр атқарады. Нақты адрестермен оперция кодтары орнына символдар және бір командаға біріктірілген командалар тізбегі ретінде орындалады. Ортаңғы деңгейлі тілдерге автокодтар мен ассемблер тілі кіреді. Ассемблер автокодтарды машиналық тілге аударады. Мұндай программалау тілдерін трансляторлар деп атайды. Ассемблер тілінде программалау копьютр құрылымының барлық мүмкіндіктерін қолдануға мүмкіндік береді.
Жоғары деңгейлі программалау тілдері компьютрге тәуелсіз деп те атайды. Яғни, траслятор прогаммалау тілінде жазылған командаларды машиналық тілге аударады. Жоғары деңгейлі программалау тілде проблемалық- бағдарланған және универсады болып бөлінеді.
Проблемаға бағдарланған тілде тек бір салада есептерді тиімді шешуге арналған. Мысалы, экономикалық есептерді, лисп, пролог- жасанды интеллект саласындағы есептерді шешуге арналған. Универсал программалау тілдері кез келген сипаттағы, кез келген саладағы есептерді шешуге мүмкіндік береді. Универсал программалау тілдері процедуралық және объектілі - бағдарлы болып екіге бөлінеді. 1950 жылы алғашқы процедураға бағдарланған Фортран программалау тілі пайда болды, ал 1960 жылы Алгол программалау тілі, кейін Basic, Pascal, Cu, APL т.с.с. программалау тілдері шығарыла бастады.
Паскаль программалау тілі 1969 жылы жасалынған, оны Швейцария ғалымы Никлаус Вирт құрастырып шығарған. Алғашқы кездері тіл программалау негіздерін оқытуға арналып шығарылғаны уақыт өте келе кәсіби программалаушының арасында кеңінен қолданыс тапты. Қазіргі кезге дейін программалау тілі жетілдіріліп, оның көптеген нұсқалары пайда болды. Паскаль тілі программалауға ыңғайлы құрал болғандықтан қазіргі кездерде де көптеген мәселерді шешуге пайдаланады.
Паскаль тілінің соңғы нұсқасын 1991 жылы Borland International компаниясы жасап шығарды.
Паскаль тілі - компелятор. Паскаль тілінде алфавит Бейсик тіліндегідей, мұнда программалау ортасын іске қосу үшін бірнеше фактор жиынтығы керек:
Turbo.exe - программаларды құру үшін интегралданған орта.
Turbo.hlp - көмекші мәліметтер орналасқан файл.
Turbo.tp - Turbo.exe файлы қолданатын конфигу- рациялық файл.
Turbo.tpl- Turbo Pascal-дің резидентті модульдері.
Tptour.exe- программалау ортасы алғаш іске қосылған кезде орта жайлы мәлімат беретін программа.
Graph.tpu - ортаның барлық графикалық программасын іске қосатын файл.
Қазіргі кезде Паскаль тілінің Turbo Pascal нұсқасы қолданылады. Бұл ортаны іске қосу үшін Turbo.exe файлын орындау қажет. Файл орындауға жіберілгеннен соң программалау ортасы экранда ашылады. Экран үш бөліктен тұрады:
Мәзір қатары.
Программа мәтіні терілетін жұмыс облысы.
Көмекші мәлімет беретін қатар.
Паскальда программа құрылымы :
Label - белгілемелер.
Const- тұрақтытылар.
Type - типтер.
Procedure, function - көмекші программалар.
Var- айнымалыларды сипаттау.
Begin ... ..end - программаның негізгі бөлігі.
Бұл дипломдық жұмыстың мақсаты - - - Объектілі-бағдарлы программалаудың теориясын меңгеру, оның ішінде программалар құруды үйрену және Turbo Pascal-да мәзір арқылы ұйымдастыру. Бұл мақсатқа жету үшін келесі міндеттер орындалуы тиіс :
Объектілі-бағдарлы программалауға қажетті мәліметтер жинау;
Инкапсуляция, мұрагерлік, полиморфизмнің мағынала-рын түсіну;
Turbo Pascal-да файлдармен жұмыс жасау;
Тестік сұрақтарды енгізетін программа құрып үйрену және оны іске қосу;
Графикалық режимнің жұмысын игеру;
Turbo Pascal-дан мәзір программасының жұмысын игеру;
Turbo Pascal-да құрылған программаларды мәзір программасына кірістіру.
Дипломдық жұмыс үш тараудан тұрады. Бірінші тарау объектілі бағдарлы программалау негіздеріне, оның технологиясына арналған. Екінші тарау WWW және HTML ұғымдарына, объектілі бағдарлы программалау технологиясы жайлы Web түйін құру технологияларына арналған.
Web түйін Front Page бағдарламасының көмегімен құрылған. Оның фреймдік, жүгіртпе жол жасау т.б. мүмкіндіктері пайдаланылған. Суреттер Photoshop - тың көмегімен дайындалған.

I ТАРАУ. ОБЪЕКТІЛІ БАҒДАРЛЫ ПРОГРАММАЛАУ

Объект ұғымы
Объектілі бағдарлы программалаудың ең үздік технологиясы және модификациясы жеңіл программа жасауға мүмкіндік береді. Оның мүмкіндіктерін ОБП тілінде қолдануға болады. Ондай тілдердің бірі Simula 67 , ол 60 - шы жылдардың екінші жартысында пайда болды. Қазіргі программалау тілдері ОБП-ны қолдайды. Оларға С++ , Java, Delphi т.б жатады. Бұл методология Turbo Pascal- дың 5.5 версиясынан бастап пайда болды. Мынаны айта кету керек, тек қана ОБП тілдерінде емес басқа тілдерде де, мысалы, С және Фортран тілдерінде ОБП- ны қолданады. Бірақ оның жұмысын іске асыру өте қиынға түседі. Кейбір тапсырмалар класы дәстүрлі жолмен оңай шешіледі.
ОбП- ны пайдаланып, программаны өңдеу проектілі жүйенің объектілі моделін өңдеуден басталады. Ол үшін проблемаларды объектілерге бөліп, олардың арасындағы бір- біріне тәуелділігін ашады. Бұл шығармашылық процесс болашақ жүйені қарастырушы программалаушының біліктілігіне сүйенеді. Егер, мысалы, беттің кескіні туралы сөз етсек, онда бастапқы беттің жылтыры тегіс фрагменттердің жиынтығымен, үшбұрыштармен нақты көрінеді. Бұндай бөлінуді триангуляция деп атайды. Бұл жағдайда үшбұрыштар объект болып есептелінеді. Үшбұрыштар қабырғаларымен,бұрыштың өлшемдерімен анықталады. Бірақ олардың ұқсастықтары бар болғанымен үшбұрыштарды жалпы бір класқа біріктіруге мүмкіндік береді. Объектінің сипаттамасы оның атрибуттарының жиынтығы болып табылады. Оларды тұрақты және тұрақсыз атрибуттар деп екіге бөледі. Тұрақты атрибуттар оның класындағы объектілерді сипаттайды. Мысалы, көпбұрыштың төбелерінің санын айтуға болады. Ал, тұрақсыз атрибуттар объектінің жағдайын сипаттайды - осы атрибуттың мағынасын өзгерту арқылы, біз объектінің жағдайын өзгерте аламыз. Мысалы, көпбұрыштың төбелеріндегі бұрыштардың өзгеруін айтуға болады. Кейде атрибуттардың типтері көрсетіледі, себебі, әрқайсысы әртүрлі мағына береді және тұрақсыз атрибуттың бастапқы мағынасын көрсетеді. Осы атрибуттың бастапқы мағыналары объектінің бастапқы жағдайын көрсетеді. Мысалы, үшбұрышты алатын болсақ, оның атрибуттары болып қабырғалары болып есептеледі.
Объектілерді класқа біріктірудің белгілері болып тек қана атрибуттар ғана емес, сондай-ақ тапсырмалардың контекстісі де есептеледі, мысалы, тікбұрыштар және тікбұрышты үшбұрыштар бірдей атрибуттардың жиынтығымен сипаттала алады- іргелес екі қабырғалардың ұзындықтары. Солай бола тұра олар әртүрлі геометриялық қасиеттермен бірге әртүрлі математикалық объектілер бола алады.
Объектілерді класқа біріктіру тапсырмаларды жалпы қойылым ретінде көрсетуге мүмкіндік береді. Осы кластың барлық объектілеріне қатысты өзіне тән аты болады. Сонымен қатар кластағы атрибуттардың аттары кейбір объектілерге байланысты қойылады. Класты сипаттау `' жазу `' түрін сипаттауды еске түсіреді, әр объект тұрақты немесе тұрақсыз типтің мағынасындай мағыны береді.
ОБП- ның келесі негізгі түсінігі - операция. Операция дегеніміз берілген кластың объектісіне қолданатын функцияны айтамыз. Мысалы , үшбұрыштың геометриялық өзгерістері бір операцияны әртүрлі кластың объектісіне қолданады, оны полиморфтық операция деп атайды. Мысалы , " вектор" және "комплексті сан " объектісіне көбейту операциясын қолдануға болады. Бұл полиморфтық операцияның мысалы болып табылады, себебі , векторды көбейту және комплексті сандарды көбейту - әртүрлі математикалық операциялар.
Объект берiлгендердiң сипатталынуы мен оларды өңдейтiн программаларды бiрiктiредi. Объектiге енетiн программалар :
Процедуралар;
Функциялар;
Конструкторлар;
Деструкторлар түрiнде iске асады.

Объектке енгiзiлген программалар әдiстер деп аталынады және сонымен қатар:

Объект Turbo Pascal-да берiлгендердi сипаттау бөлiмiнде жазылады. Ал айнымалыларды сипаттау бөлiмiнде объект экземплярлары берiледi.
Type Pozicia=Object
X,Y:integer;
Procedure Init(NewX,NewY:integer);
Procedure Locat( var XL,YL:integer);
End;
Объектi сипаттау үшiн Object кiлiттi сөзi қолданылады. Pozicia объектiсiне берiлгендер ретiнде X және Y бѕтiн айнымалылары және әдiс ретiнде Init және Locate процедуралары енгiзiлген. NewX, NewY, XL,YL айнымалалары объектiнiң берiлгенi емес, Init және Locate процедураларының формальды параметрi болып табылыды. Әдiстердiң мәтiнi объектен тыс берiледi, сондықтан сипатталыну кезiнде қандай объектiге жататыны анықталынуы тиiс. Егер әдiстер әртүрлi объектiлерге тиiстi болса, онда олардың аттарын бiрдей етiп жаза беруiмiзге болады.Сондықтан әдiс атына оның қай объектiге жататынын көрсететiн префикс қосылып жазылады, мысал: Pozicia.Init, Circle.Init. Әдiстермен жұмыс iстеу үшiн айнымалы енгiземiз:
Var
MyPoz:Pozicia;
Бұл сипатталынудан кейiн MyPoz.Init(18,12) деп жазуымызға болады, яғни MyPoz объект экземплярының Init процедурасын шақыру арқылы объектiнi инициализациялау болып табылады, нәтижесiнде MyPoz объект экземплярының X,Y айнымалылары 18 және 32 мәнiне ие болады. Әрбiр объект экземплярының барлық айнымалыларына меншiктi жады алаңы болады және олар арасында мәндердiң алмасуы үнсiз жүргiзiлмейдi. Объект айнымалаларымен тура байланысуға болады. Төменде көрсетiлген мысалда программадағы екi нұсқаданың қай қайсысының орындалу MyPoz.Init процедурасының шақырғандағы нәтиженi бередi.
1-шi нұсқа:
MyPoz.X:=18;
MyPoz.Y:=32;
2-шi нұсқа:
With MyPoz do
X:=18;
Y:-32;
End;
ОБП әдiстемесi берiлгендермен тура байланысуға кеңес бермейдi. Объект берiлгендерiн сол объектiнiң әдiсi арқылы өңдеген жөн.
ОБП- ны қолданып жазылған программа бір-бірімен қарым - қатынаста болатын объектіден тұрады. Объектіні программалық жүзеге асыру- олардың өңдеу процедуралары мен берілгендерін біріктіру деген сөз. Турбо Паскальда Object типі бар, оны record құрылымды типінің жалпыламасы деп есептеуге болады. Тұрақсыз объек типін объект экземпляры деп атайды.
Объект типінің жазу типінен айырмашылығы тек қана берілгендерді сипаттайтын бөлімі ғана бар емес, тағы да объектіде сипатталатын процедуралар мен функциялар бар. Бұл процедуралар мен функциялар әдіс болып табылады.Объектінің әдістеріне олардың бөлімдері қатысты. Әдістері мен олардың параметрлері объектіні сипаттауда анықталады, ал оларды жүзеге асыру басқа жерде, яғни, программаның сол әдісті шақыру женрінде орындалады. Объектіні сипаттау әдіске қарайтын шаблондардан тұрады. Олар параметрлермен типтердің сандарының сәйкес екендігі компелятор үші н қажет.
Type
Location=obgect
x,y:integer;
Procedure init( initX, InitY: integer);
Function getX: integer;
Function getY: integer;
End;
Обьект резервтегі object_end сөздерінің көмегімен сипатталады. Олардың арасында әдістер мен бөлімдердің сипаттамасы бар. Келтірілген мысалда объект графикалық координаталардың белгілерін сақтау үшін екі бөлімнен, берілген объектілердің әдістері сипатталған процедура мен екі функциялардан құралған. Объекті типтердің сипатталауының басқа сипатталудан айырмашылығы - ол программалық бірліктің (программа, модуль) ең жоғарғы сатысында тұрады. Әдістер мен функциялар, процедуралардың сипатталу бөлімінде мұндай сипаттау болмайды. Резевтегі private сөзі объект бөлімдеріне кіре алмайды. Келесі мысалда X,Y айнымалысына location объектілі типінің getX, getY әдістері арқылы ғана кіреді. Мысалы:
Type
Location= object
Procedure init(initX, initY : integer);
Function getX: integer;
Function getY : integer;
Private X, Y : integer;
End;
Private секциясында объект әдістері де бола алады. Әдістерді толық сипаттау, яғни, оларды жүзеге асыру сипатталуы объектіні сипаттаудан кейін тұруы керек. Әдістердің аттары құрамалы және нүкте арқылы бөлінетін әдістердің аттары мен
объектілердің аттарынан тұрады . Мысалы :
Procedure Location.init(initX, initY : integer);
Begin
X:= initX;
Y:= initY;
End;
Function Location. getX: integer;
Begin
GetX:=X;
End;
Function Location.getY : integer;
Begin
GetY := Y;
End;
Объект сипатталып болғаннан кейін прграммада оның экземплярын қолдануға болады. Яғни, берілген объектілі типтерінің айнымалысын :
Var
Grmarker : location;

1.2 ОБП қасиеттерi
ОБП инкапсуляция, мұра, полиморфизм деген қасиеттерден тұрады.
Инкапсуляция - дегеніміз ол объектінің өзіне қолданылатын қажетті детальді жасыру.инкапсуляция тек өзіне тән әдістері арқылы ғана берілгендерге кіруді ұйымдастыратын бірден бір тәсіл. Инкасуляция- жаңа объект түрiн өңдеудегi берiлгендердiң процедура және функциялармен бiрiгуi болып табылады. "Инкапсуляция" терминi- бұл жалпы бiр "қабыққа" (Object ... End) берiлгендер мен әдiстердi бiрiктiру мағанасын бередi.
Жоғарыда айтылғандай, ОБП әдiстемесiмен келiсе отырып, берiлгендердiң мәндерiн өзгерту мақсатында, берiлгендермен тура байланысуға болмайды. Объект берiлгендерi әдiстер арқылы өңделуi тиiст. Бұл инкапсуляция болып табылады. Private cипаттауы арқылы берiлгендер мен әдiстердiң бiр бөлiгiн объектен тыс пайдалануға мүмкiншiлiк туғызбауға болады.
Type
NewObject=object
Public
Берiлгендердi сипаттау{ашық бөлiгi}
Әдiстердi сипаттау {ашық бөлiгi}
Private
Берiлгендердi сипаттау{жабық бөлiгi}
Әдiстердi сипаттау {жабық бөлiгi}
End;
Жабық берiлгендердi тек қана осы объектiнiң әдiстерi ғана өңдей алады алады.
Инкапсуляция принципі бойынша объект және оған орындалатын іс-әрекеттер біріктіріліп объектінің ерекше бір түрінде қарастырылады. Яғни, әрбір объект және оған орындалатын іс-әрекеттер жеке класс ретінде ұйымдастырылады.
Біздің мысалда объектіні сипаттау init-инициялизациясының процедурасы және getX, getY функциялары бөлек өзінше объект бола алмайды. Ол - location объекті типінің бөлінбейтін бөлігі. Егер программада берілген типтердің бірнеше айнымалыларының сипаттамасы келтірілген болса, онда әр айнымалы берілгендерді сақтау үшін өзінің есте сақтау облысы болады, ал функциялар мен процедураларға кіретін нүктелердің нұсқаулары үшін жалпы есте сақтау облысы болады. Әр әдісті шақыру мүмкіндігі тек қана өзінің құрама атының көмегімен ғана орындалады.
Өзінің бұрынғы қасиеттерін пайдаланып, дамыта және өзгерте отырып, мұрагерлік жаңа объектілерді анықтауға мүмкіндік береді.
Мұрагерлік принцип- белгілі бір объектіден келесі бір объект туындап, туынды объекті бастапқы объектінің барлық қасиеттеріне ие болуы. Сонымен қатар туынды объект бастапқы объектіде болмайтын жаңа қасиетке ие болуы да мүмкін. Туынды объект түбірлік объектіден барлық өрістер мен әдістерді қабылдап және оған өзінің өрістері мен әдістерін қосады немесе түбірлік объектінің әдістерін өзінікіне айырбастай алады. Туанды объектінің сипаттамасы мына мысалда келтірілген.
Мұра -бағынышты объектiлерден тұратын иерархиялық құрылымды құрайтын бағынышты объектiнi анықтау. Әрбiр бағынышты объект ататегi объектiсiнiң берiлгендерiне, процедура мен функцияларына тiкелей байланыса алады.
Ататегi объектiсiнiң атын туылатын жаңа объектiнiң сипатталуына жазу арқылы мұра қалдырылынады. Осылай ағаш тәрiздi құрылым құрылады. Мұра-бұл объектiлер емес, объект түрлерi арасындағы байланыс болып табылады. Мысалы:
Type Pozicia=Object {Ата-ана объектiсi}
X,Y:Integer;
Procedure Init(NewX,NewY:integer);
Procedure Locate(Var XN,XL:Integer);
End;
Kom=Object(Pozicia) {Бағынышты объект}
Cvet,Raz:Word;
Procedure Init(NewX,NewY:Integer;Color:Word);
Procedure Zoom(Delt,Znak:Integer);
End;
Pozicia түрiне бағынышты Kom түрi қабырғасы Raz (пиксел бойынша) болып келген боялған квадратты бередi. Мұнда мұрадан қалған X,Y координаттары квадрат центiрiнiң координатасын бередi. Zoom процедурасы квадратты Delt және Znak аргументерi бойынша үлкейтедi (кiшiрейтедi).
Әдiстердi мұра ету. Жаңа алаңдарды сипатаған кезде, алаң аттарының қайталанып жазылмайтындылығын қадағалау керек. Объектiдегi жаңа алаң аты мұра арқылы алынған алаң атымен сәйкес болған жағдай программада қате туғызады. Ал әдiстер басқаша болып келедi. Объект (бағынышты объект) күрделi болған сайын, ол өзiн өрнектейтiн жаңа әдiстердi талап етiп ғана қоймай, ескi әдiстердi өзгеруiн талап етуi, оның "жүрiс-тұрысыда" күрделене түседi. Kom.Init локальды әдiс Pozicia.Init ата-ата әдiсiн жабады. Егер Kom.Init әдiсi болмаса, онда Pozicia.Init Kom түрi үшiн глобальды болып табылыды және автоматты түрде осы әдiске программа назар аударады.
Функциональды ұқсас әдiстердiң бiрдей аталынуы объектiлер жүйесiн қабылдау мен программалауды жеңiлдетедi.
Мысалы :
Type
Point= object(location)
Visible: boolean;
Procedure init(initX, initY: integer);
Procedure show;
Procedure hide;
Function isvisible: boolean;
Procedure moveto(newX,newY: integer);
End;
Бұл жерде point объектісі туынды объекті болады, ал түбірлік объект ретінде location объектісі болады. Туынды объектіде түбірлік объектінің өрістері мен әдістерінің сипаттамасы жоқ. Соңғысының ( түбірлік объектінің) аты дөңгелек жақшаның ішінде object сөзінен кейін көрсетілген. Туынды объект әдісінен түбірлік объект әдісін шақыруға болады. Туынды объект жасау үшін түбірлік объектінің алғашқы текстісінің болуын қажет етпейді. Түбірлік объект трансляциядан өткен модульдің құрамында болуы мүмкін.
Турбо Паскальда inherited деген сөз резервте болады. Ол түбірлік объект әдісін шақыруға қолданылады. Туынды объект сипаттамасында сәйкес келетін сөйлем орналасқан, мысалы:
constructor nunfield.init(x.coord, y.coord, len:integer;
lmin, lmax: longint);
begin
inherited.init(x_coord, y_coord,len);
min:=lmin;
max:=lmax;
end;
Инициализация дегеніміз массивті нөлдермен толтыру, бұл үшін fillchar процедурасы қолданылады. Біріші параметр белгіні өзіне иеленетін берілгендердің объектісін береді. Ал екінші параметр үшінші параметр арқылы берілген белгі кіргізілетін жадтағы аралас байттың саны. Бұл процедураны шақыру кезінде кіріктірілген Турбо Паскальдың self тұрақтысы қолданылады. Ол экземпляр объектісіне анық емес нұсқағыш параметрі болып табылады. Инициялизация кезінде массивтердің аты мен типі анықталынады. Массивтің құрылуы кезінде массив өлшемі шектен тыс үлкен болмауын және типтің дұрыс көрсетілуін қадағалайтын тексерулер жүргізіледі. Содан кейін массивке жадтан орын бөледі және олар нөлге айналады. Массивтермен жұмыс аяқталғаннан кейін close әдісі шақырылады.
Полиморфизм - туынды объектілердің бастапқы объектілер әдістерін басқа есептерді шешуге қолданылуы. Обект қасиеттеріне байланысты әдістер әртүрл іс- әрекеттер жасайды, осы кезде полиморфизм көрінеді. Полиморфизм виртуальды әдістермен және соңғы байланыс механизмімен байланысты. Дәл осы ситуацияда қандай операция орындалатындығы жөніндегі шешім программа орындалу кезінде қабылданады.
Полиморфизм ("көпкөрiнiстi") класты немесе әр кластың өзiнiң функциональды ролi бар бiрнеше кластарды туысқан объектiлерге анықтауды ұсынады. Күрделi әдiстi жүрiстерi әр түрлi объектiнiң әр түрiне беру керек болатын тууы мүмкiн. Бұл жағдайда объектiлерге жалпы бiр әдiс қолданып, айырмашылықтарын ауыспалы бағынышты әдiстерге жүктеген жөн болып табылады. Бұл идея конструктивтi полиморфизм деп аталады. Бұл идея виртуальды бағынышты әдiстер арқылы iске асады. Объектiнi сипаттау барысында әрбiр "ауыспалы" әдiстiң атынын кейiн Virtual сөзi жазылуы керек. Ал оларды қосу үшiн конструкторге назар аударуымыз керек. Конструктор-бұл процедураның бiр түрi болып табылады және объектiнi сипаттау барысында Constructor сөзi процедура алдына жазылады. Бұл түсiнiктердi жақсы игеру үшiн мысал қарастырылған.
Қарастырылатын мысалда объектiлер ретiнде геометриялық фигуралар алынған. Кадарларды ауыстыра отырып "көрiнiстi жасыру-позициясын өзгерту-жаңа орында пайда болу" принципы бойынша фигураларды (хаосты) ұшыратын Fly әдiсi объектiлермен жұмыс iстейдi. Мұнда көрсету (Show) және жасыру(Hide) фигураның әр түрiне арнайы арналған болып табылады. Бұлар виртуальды әдiстерге "кандидат" болады. Бұл мысалда, негiзгi ой- өлшемiн, түсiн және пропорциясына дейiн өзгерiп отыратын "ұшатын" фигуралар жиынын құру болып табылады.
Абстрактылы ата-аналық түр

Бастапқыда 3 түр алынған: Point("нүкте"), Circle( дөңгелек), Ring("Сақина"), бiрақ программа көрсетiлген кескiн бойынша құрылған.
Point объектiсi қолданылмағандықтан, оның конструкторы жоқ. Circle түрiнiң конструкторы туылу блогiне қосалқы жазылған. Басқа жағдай үшiн Ring түрiнде (қосалқы емес) конструктор қарастырылған. Ол "бос " болып табылады. Виртуальды әдiстерi бар әр объектiге оның әдiстерiн қолданбай тұрып, алдын ала оның конструкторiне назар аударылуы керек. Конструкторла виртуалды бола алмайды.
TestRing конструкторiне фигура туылмас бұрын назар аударылған. Өйткенi Ring.Init блогi Circle.Init-ке назар аударады, ал соңында Show блогы орындалып фигура экранға шығады. Бiрақ Show әдiсi виртуальды және алдын ала қосылуы керек. Circle түрiндегi виртуальды әдiстертердiң қосылуы Krug.Init конструкторының бiрiншi әректi болып табылады. Ал Show блогына ол жұмыстың соңында назар аудылады. Ring өзiнiң Hide виртуальды әдiсi жоқ болғандықтан, ататегiнiң әдiсiн қолданған. Виртуальды әдiстер мұра қалдырады.
Виртуальды емес әдiстер қарапайым блоктар сияқты программаны компиляциялаған кезде қосылады (ерте байланысу). Виртуальды әдiстер үшiн әр түрге компилятор олардың адрестерi жазылған ВӘК (виртуальды әдiстер кестесi) кестiн жадыда құрады. ВӘК кестесi орындалу кезiнде қолданылады ("қожайын"-әдiспен кеш байланысу). Конструкторге назар аударған кезде, ол объектiдегi арнайы алаңға осы түрдегi объектiнiң BӘК кетесiне нұсқау жазылады. Fly әдiсi Show және Hide әдiстерiмен ВӘК кестесi арқылы байланысады.
Обектiнi динамикалық жадыда орналастыруға болады. Бұл оларды құруға ыңғайлы жағдай туғызады. Мысалы динамикалық обектiлердi тудыра отырып оларды виртуальды әдiстерiмен де байланысуға болады. Ол үшiн New процедурасының екiншi параметiрiне конструкторге назар аудару жазылады. TestCircle түрiне ^Circle нұсқауын қолданамыз және "ұшатын" дөңгелектiң туылу келесi түрде жазылады:
New(Circle,Init(151,182,30,5)); Cicrle^.Fly(100);
New процедурасының екi параметiрi болған жағдайда керектi алаңдарға жадыдан орын алуды конструктор бiрiншi болып iстейдi. Dispose процедурасы жадыдағы объектiлердi жадыдан босатады. Ол үшiн жадыдағы объектiлердi босататын арнайы процедура блогiн iске қосылады. Объектiдегi мұндай процедура -деструктор деп аталынады. Десторукторды консторуктор сияқты бағдарламашы өзi жазады. Деструктор виртуальды болып келедi , ал конструктор бола алмайды.
Point объектiсiнде үш X,Y, Visable берiлгендер алаңы бар, GetX,GetY функциялары X пен Y-тiң мәндерiн қайтарады. Show процедурасы берiлген координатада нүктенi экранда көрсетедi, ал Hide нѕктенi "сөндiредi". IsVisable функциясы нүктенiң экранда көрiп тұрғанын немесе сөнiп тұрғанын анықтайды. Х нүктесiн (0,0) координатасында көрсету программасының бөлiгi.
Объктiлiердiң ағаш тәрiздi құрылымын құрғанда, бағынышты объектiде, оның тегi болатын объектiсiндегi берiлгендердi, олардың қасиеттерiнiң өзгеру немесе өзгермеуiне тәуелсiз, қайта сипаттауға болмайтындығын ескеру керек. Ал әдiстердi қайта анықтауға болады. Егер бiр-бiрiне байланысқан объектiлердiң аттары бiрдей әртүрлi әдiстерi болса, онда оларды қандай объектiмен жұмыс iстеуiне байланысты шақырылады.

1.3 Әдістер
Әдіс - объектінің қасиеттерін өзгертуге арналған процедуралар мен функциялар. Операция - бұл әдістің сипаттамасы, ал әдіс операцияны жүзеге асыру болып табылады. Логикалық жағынан қарағанда әдістер бірдей операцияларды орындайды, бірақ әртүрлі кодтың фрагменттерімен жүзеге асырылады. Әрбір операцияда анықталмаған аргумент болады, ол сол операция қолданатын объект, бірақ басқа да аргументтер болуы мүмкін, ол оны параметрлейтін параметрлер. Әдіс тек класс пен объектіге қатысты.
Объектінің кейбір атрибуттарының мағынасы тек сол объектінің оперциясына ғана қатысты бола алады. Ондай атрибуттар жабық атрибуттар деп аталады. Объектілерде жабық операцияларды да анықтауға болады.
Осылайша класс тапсырмасы үшін сол кластың аты көрсетілуі керек, одан кейін оның атрибуттары мен операциялары ( әдістері) көрсетіледі. Жалпыламалау және мұрагерлік объектілер классификациясының көп сатылы екендігін және объектінің әртүрлі кластарының арасындағы ұқсастықтарды анықтауға мүмкіндік береді.Мысал ретінде көптеген геоматриялық фигураларды келтіруге болады.
Жалпыламалау мыналарды анықтауға мүмкіндік береді:
Класс "бір өлшемді фигуралар", "түзу" және "доға " кластары "бір өлшемді фигуралар" кластарының ішкі класы болып есептеледіб ал бір өлшемді фигуралар класы түзу және доға класының суперкласы болып табылады. Егер осындай келісушілікте қарайтын болсақ, суперклассоперациясы мен атрибуттары сол ішкі класқа сәйкес болады ( сол атрибуттар мен операциялар ішкі кластарға мұрагер бола алады), онда доға және түзу кластарының ( ішкі кластар) атрибуттарымен операциялары бір өлшемді фигуралар класына ( суперкласс) көшіріле алады. Әр супер кластың атрибуттары мен оперциялары ішкі кластың барлық сатысындағы мұрагері болып табылады және бұл кластарды сипаттауды жеңілдетеді және қысқардады.
Кейде белгілі бір суперкластағы ішкі кластың операциясын қайта анықтау қажет болады. Ол үшін мұрагерлік нәтижесінде суперкластан алынған операция қолданылады. Егер жаңа операция мұрагерлік операциясын кеңейтетін болса, онда қайта анықтау қолданыдады. Төмендегі суретте үш өлшемді нукте класының және екі өлшемді нүкте класының атрибуттары мен операцияларының мұрагерлеу схемасы көрсетілген. Екі өлшемді нүктенің координаталары берілген. Ол оның атрибуттары, ал екі өлшемді нүкте объектілерінің орындайтын операциясы Х, У координаталарын және нүктенің арақашықтығын анықтау. Үш өлшемді нүкте класы ( ішкі класс) өзінің екі өлшемді нүкте суперкласының Х,У координатасын мұрагерлікке алады және өзіне тағы бір атрибут- Z координасын қосып алады. Х,У координатасын анықтау операциясы да мұрагерлікке алынады. Одан басқа Z координатасын анықтау операциясы қосылады және келесі үш өлшемді нүкте арасындағы арақашықтықты анықтау операциясын қайта орындайәды. Үш өлшемді нүкте арақашықтығын есептеу формуласының екі өлшемді нұсқадан айырмашылығы болады.
Түбірлік объект
Түбірлік объект
Екі өлшемді нүкте
Х координатасы
У координатасы
Х координатасын анықтау
У координатасын анықтау
Келесі нүктеге дейінгі арақашықты анықтау

Атрибуттар

Операциялар

¯
Туынды объект
Үш өлшемді нүкте
Х координатасы
У координатасы
Z координатасы
Х координатасын анықтау
У координатасын анықтау
Z координатасын анықтау
Келесі нүктеге дейінгі арақашықтықты анықтау

Turbo Pascal программалау тiлiнде әдiстердiң статикалық және виртуальды деген екi түрi бар. Статикалық әдiстер онша күрделi емес, жадыдан аз орын алады және тез орындалады, бiрақ ОБП барлық артықшылығын толығымен көрсете алмайды. Жоғарыдағы программада пайдаланылған әдiстер - статикалық әдiстер болып табылады, яғни, егер әдiстiң түрi , онда ол статикалық болып табылады.

1.4 Виртуалды әдістер.
Виртуалды әдістермен оларды шақыратын процедуралар арасындағы байланыс программаны орындау барысында орнатылады. Бұл соңғы байланыс деп аталады. Оның алғашқы байланыстан айырмашылығы ол компеляция кезінде орнатылады. Виртуалды объектіні сипаттауда әдістің атынан кейін резервтегі virtual сөзі қолданылады. Туынды мен түбірлік объектінің виртуалды әдістерінің аттары бір- біріне сәйкес келуі керек. Виртуалды әдістері бар объектінің экземплярын инициализациялау арнайы әдіс - конструктордың көмегімен орындалады. Конструктор объект өрісіне алғашқы белгілерді иелендіреді және объектіні инициялизациялау кезіндегі керекті іс-әрекеттерді орындайды. Әдіс- конструктор атында procedure сөзі constructor сөзімен алмасады. Конструктор іс-әрекетіне қарама- қарсы іс- әрекет тағы да бір арнайы әдіс деструкторды орындайды. Ол destructor сөзімен сипатталады.
Конструктор виртуалды әдістер таблицасына нұсқағыш жасайды және ол таблицаны іздеу үшін пайдаланылады. Таблицаға виртуалды әдістер объектісінің балық адрестері кіреді. Виртуалды әдістерді шақыру кезінде оның аты бойынша адресі анықталады. Одан кейін сол адрес бойынша басқару беріледі. Әр объект типінің өзіне тән виртуалды әдістерінің таблицасы болады. Бұл операцияға әр түрлі процедураларды шақыру мүмкіндігін береді. Егер бір типті объектінің бірнеше экземпляры болса, онда конструктор әр экземпляр үшін шақырылуы керек. Ондай болмаған жағдайда программа жұмысы бірден тоқтатылады. Конструтор мен деструктор бос болуы мүмкін, яғни, оперциялар болмайды. Бұл жағдайда барлық керекті код конструктор және деструктор сөздерін трансляциялау кезінде құрылады.
Статикалық әдiс - дегеніміз статикалық айнымалыларда программаның немесе процедураның іске қосылып жұмыс істегеннен бастап жадыдан адресі анықталып, программа немесе процедура жұмысын аяқтағанша айнымалы тек сол адресте сақталуды айтамыз. Мысалы: var бөліміне жазылған айнымалыларды статикалық айнымалыларға жатқызамыз.
1.5 Кластар құру
Айналаға қарап, өмірдің көптеген заттарын байқауға болады. Мысалы, ит, үстел, теледидар, автомобиль. Мұнда кейбір геометриялық фигураларды да жатқызуға болады. Мысалы, шеңбер, тіктөртбұрыш және т.б. Қоршаған ортаның объектілерін екі типке бөлуге болады: олардың бәрініңқалпы және мінез - құлқы болады. Мысалы, автомобильдің қалпы бар (түсі, жүру жылдамдығы, типі және дөңгелек көлемі) және мінез - құлқы (тежеуі, жылдамдатуы). Шеңбердің өзіне тән қасиеттері бар. Мысалы, орталық координаттары, радиусы, түсі. Және де өзіне тән мінез - құлқы (салу, орын алмастыру, түсін өзгерту).

1.1. сурет. Жалпы белгіленген объектінің программалық бейнесі.
программалық объектілер, қоршаған орта объектілеріне тән өзіндік қасиеттері де бар. программалық объектілер өзінің қалпын өзінің қасиетінде сақтайды. Қасиеті - идентификаторы бар, белгілі бір мән. программалық объектілердің мінез - құлқын әдіс арқылы іске асырады. Әдіс - бұл объектімен байланысқан астыртын программа (процедура). Сонымен, объект дегеніміз - бұл құрамында әдіс пен қасиеті бар программалық бірлік (1.1 сурет).
ООП-да класс үшін мұрагерлік, инкапсуляция және полиморфизм принциптері енгізілгек.
Жоғарыда айтылып өткен мәселе жайында мысалы келтірейік:
Мысалы ретінде кез келген программа құру қажет дейік, ол программа шеңберді салып оны кез келген түске бояуы тиіс делік. Бұл үшін оған радиус, орталық координат және де ол шеңбер боялатын түс қажет. Егер стандартты түрде даярлайтын болсақ, онда бізге келесі мәндер керек болады:
R - шеңбер радиусы;
X, Y - шеңбер орталығының координаттары;
Color - шеңбер түсі.
Бұл шеңберді салу үшін бізге процедура қажет, демек оны Draw деп атайық. Ол R, X, Y, Color координаталы шеңберді бейнелеп тұрады.
Стандартты даярлаудың кемшілігі бұл параметрлердің бір - бірімен байланыссыз болуы. Мысалы, бір емес үш шеңбер салу керек (мысалы аққала). Стандартты программалау жағдайында бізге екі амалдың бірін таңдау қажет болады. Біріншісі - шеңбер үшін R, X, Y, Color, онан соң осы шеңбердің әрқайсысы үшін Draw командасын шақыру қажет. Бұл тәсілдің кемшілігі егер көп шеңбер салу керек болса, онда бізге көптеген ауыспалы мәндер қажет болады. Бұл программаның үлкен размерділі болуына әкеліп соғады. Екінші тәсіл - әрбір шеңбер үшін R, X, У, Color, бірақ екінші шеңбер салу барысында, алғашқы шеңбердің мәні жоғала береді. Бұл тәсілдің кемшілігі соңғы шеңберден басқа барлық шеңберлердің мәнін жоғалтып аламыз.
Егер бұл суретте тек аққала салумен шектеле қойсақ, онда кемшілігі көрінбей қалады. Көлемі жағынан үлкен программа құратын болсақ, онда бізге программаға елеулі өзгерістер енгізу қажет болады. Аққаламен қарастырылған мысалда бірнеше өзгеріс болады.
Аққаланың экран бетінде жүруі үшін Move процедурасы қолданылады. Аққаланы баратын жеріне жеткізу үшін программистке аққаланың баратын жерінің координаттары қажет емес (анығырақ айтсақ, әрбір баратын нүктесінің координаталарын). Сондықтан Move процедурасының параметрлері барлық мәні емес, тек жанама мәндерін ғана білуі тиіс. Демек, аққала өзінің бастапқы нүктесінен бастап жүруі тиіс.
Аққаланың барлық түстерін өзгерту үшін ChangeColor процедурасы қолданылады. Ол процедура орындалу үшін екі параметр қажет. Өзгертілетін объектінің атымен өзгертілетін түсі. Егер екінші тәсілді пайдаланатын болсақ (ауыспалы мәні аз), онда біздің процедура аса қиынға түседі. Мұның себебі, аққала құрылатын шеңберлердің (соңғысынан басқа) мәндерінің болмауы. Себебі, Draw процедурасы шақырылған сайын ол мәндерді білуі тиіс. Демек, аққала салынған жағдайда ауыспалы R, X, Y, Color мәні тек соңғы объект үшін ғана берілген болады. Ал, қалғандарының мәні жоғалған болып табылады. Сондықтан шеңберлердің бәрінің орнын ауыстыру үшін, екінші тәсіл қолайсыз болып табылады.
Бірінші тәсілді қолдану барысында, өте үлкен тәсілді, барлық өзгертулерді енгізуге болады. Бірақ жаңадан енгізілген мәндер үшін бір процедураны үш реттен шақыруға тура келеді. Егер тағы да бірнеше аққала салатын болсақ, онда біздің программамыздың оқылуы өте баяу болғандығынан басқа, стандартты жолмен жазу өте қиын, әрі оқылмай қалу мүмкінділігі басым болады. Енді аталған мәселе объектті - ориентирлік программалау жағынан қарастырайық. Мұнда бірнеше ауыспалылардың орнына, бірнеше объекті пайда болады. Басында барлық шеңберлерді бірдей элементтер, бірақ әртүрлі құрылымнан тұрады деп есептейміз. Олар бір - бірінен тек параметрлерімен ерекшеленеді деп алайық. Draw, Move и ChangeColor процедураларының орындалуы бәрі үшін жалпы бірдей болады. Демек, әрбір шеңбер өзге шеңберге ұқсас тек өзінің параметрлерімен (радиусымен, орталық координатасымен, түсімен) ерекшеленетін, бірақ бірдей іс - қимыл әрекетін жасайтын деп есептеледі. Ары қарай қарастырылып отырған мәселе ОБП терминдерін қолдану арқылы жазылады.
Әрбір элемент өз бетінше объект ретінде қарастырылып ортақ бір процедураны орындайды. Ол әрбір элемент (экземпляр) белгілі бір классқа жатады. Объектінің параметрі (радиусы, түсі және т.б.) оныңқасиеті деп аталады. Ал оның жасайтын іс - әрекеті (түсін өзгертуі, орын алмастыруы) әдіс деп аталады. Әдіс әрбір сұранысқа жауап беретін болса, онда оның класы анықталады, объектінің экземплярын анықтайды. Және керісінше.
Енді аталған мәселелерді мысалда қолданып көрейік. Барлық шеңберлер Round класына жатады деп алайық (5.2. сурет).
Round класының қасиеттері болып, төмендегілер есептеледі:
■ R - шеңбер радиусы;
■ X, Y - шеңбердің орталық координатасы;
■ Color - шеңбер түсі. Round класының әдістері:
Draw - берілген параметрлер бойынша шеңбер салады;
Move - таңдалған бағытта шеңберлердің бәрін біркелкі қозғалтады;
ChangeColor - шеңбердің түсін өзгертеді.

1.2 сурет. Round класындағы бейнелер.
Аққаланы салу үшін, үш шеңбер қажет. Оның үстіңгісін Head, ортаңғысын Body, ал астынғысын Foot деп атауға болады. Демек, олардың барлығы бірдей қасиетке ие болады (R, X, Y, Color) және бірдей әдістерді шақырады (Draw, Move, ChangeColor).
ООП тәсілінде, қарапайым тәсілде қанша сақтау құрылғысы қолданылса, сонша сақтау құрылғысы қолданылады. Бірақ мұнда кішкене болса да есептеуге ыңғайлы болады. Тәуелсіз блоктардан құралып, құру және қазіргі заман талабына сай болады. Программаны қолдану тәсілінің оңай болу себебі, ол әртүрлі блоктан құралып, басқа программаларда қолдануға мүмкіншілік береді. Бірнеше жаңа блоктарға қосуға мүмкіншілік береді.
Мұраға алу. Аталған мысалға қайта оралайық. Аққалаға көз салу керек делік, уақыт өткен сайын, ол көзін ашып жауып тұруы тиіс. Round объектілері секілді бұларда сол типке жатуы тиіс. Аққаланың көздері аққаламен бірге экран бетімен жылжып отыруы тиіс және түсін өзгерту мүмкіншілігін сақтауы керек. Көздер үшін тағы бір класс құруға болады. Ол Eyes (көз) деп аталады. Онда Round әдісінің қасиеттері мен амалдары толық сақталуы және Blink (ашу - жұму) әдісі қосылуы тиіс.
Ол үшін ООП - да мұраға алу механизмі қарастырылған. Бұл механизм иерархиялық құрылымнан тұрады. Алдымен Round класы құрылады, сонан соң Eyes класы құрылады да Round класының қасиетіне ие болады. Eyes класына Blink әдісі қоладанылады (1.3 сурет).
Round класы ата - анасы, ал Eyes класы баласы, яғни мұраға алушы болып табылады.
Яғни, мұраға алу дегеніміз - мұрагерлік қасиетке ие болатын класстың ата - анасының қасиетіне және әдісіне ие болуы.

1.3 сурет. Eyes класының Round класының қасиеттері мен әдістеріне мұрасына ие болуы.
Демек, ООП- ны қолдану программаның көлемін қысқартып, оның тез істеуін қамтамасыз етеді.
Инкапсуляция -- кластын берілгендері мен әдістерін біріктіріп, біртұтас түрінде қарастыру мүмкіндігі және оны басқа кластардың пайдалана алмауы. Мұндай класпен жүмыс істеу операторлары Visual Basic'тe Private кілттік сөзі арқылы жазылған процедураға енгізіледі (инкапсуляция -- қорап ішінде).
Полиморфизм. Полиморфизм термині гректің екі сөзінен шыққан: poly (көп) и morphos (форма). Демек полиморфизм дегеніміз көп форма деген мағынаны білдіреді. Бұл типтің ерекшелігі бұл тип кез келген әртүрлі типтегі мәндерге ие бола алады. Полиморфты параметрлері бар процедуралар (функциялар) полиморфты деп аталады. Ары қарай полиморфты ООП да қолданылуы қарастырылады.
Шеңберлермен мысалдарға қайта оралайық, мысалы экранда тек шеңбер емес, басқа да геометриялық денелерді салу керек делік. Олармен де жоғарыда келтірілген параметрлермен қимылдар жасауы керек делік. Оны салу үшін біз оның биіктігі мен енін және ұзындығын білуіміз керек.
Аталған параметрлерді енгізу үшін біз класс құруымыз керек. Ол классты Rect (rectangle - тіктөртбұрыш), ол Round класының мұрагері болуы керек.
Round класын универсалды ету үшін, оның қасиеттерін өзгерту керек.оның радиусымен орталық координатасына орнына төмендегідей мәндерді енгізу керек:
Тор - фигураның жоғарғы жағының координатасы;
Left - фигураның сол жағының координатасы;
Height - фигураның биіктігінің координатасы;
Width - фигураның енінің координатасы.
Осы қасиеттер бойынша фигураға жетпей координаттарды оңай анықтауға болады. Мысалы, тіктөртбұрышты (квадратты) бейнелеу үшін сол жақ координатасына енін қосу керек, ал төбесі жағынан биіктігін алып тастау керек. Делік,
Тор =80, Left =20, Height =40, Width =60.
Онда оң жағы мына мәнге ие болады: Left + Width =80,
Ал төменгісі мынаған: Тор - Height =40.
Демек, аталған тіктөртбұрыш келесідей координаттарға ие болады (оң координата - горизонталь ось үшін, екінші мәні - вертикаль ось үшін): А (20,80), В (80,80), аталған тіктөртбұрыш 13.4 суретте қарастырылған.
Round тегі негізінен жоғарыда аталған қасиеттерге сүйене отырып, Rect ұрпағын құруға болады. Яғни бұл ұрпақты тіктөртбұрыш салу барысында қолдануға болады. Демек, бұл сурет бейнелеу шеңберлерді бейнелеуден әлдеқайда бөлектеніп тұруы тиіс. Сонымен, Rect Draw әдісін өзіне тән етуі тиіс, ата - анасынан бөлектенуі тиіс. Өзге жағдайларда Rect әдісіне жататын Draw программасын шақыртқан уақытта экранда тіктөртбұрыш емес, шеңбер бейнеленіп тұрады. Мұндай оқиға болмау үшін, Rect әдісіне Draw әдісінің қасиеттерін сипаттау қажет. Сонда Round әдісіне жататын объектілер үшін Draw мәні шеңбер болады да, Rect әдісі үшін, Draw мәні тіктөртбұрышты бейнелейді. Draw атымен аталған әдістер әртүрлі қимылдар үшін жауап береді. Ол қай кластағы суретті бейнелеуге байланысты болады. Аталған жағдай ООП - да полиформизм деп аталады. Аталған полиформизмнің ООП - да графикалық интерпретациясы 13.5 суретте келтірілген.

1.4 сурет. Берілген биіктік, ені мен ұзындығына байланысты тіктөрт бұрыш салу әдісі.

1.5 сурет. Round және Rect класс объектілері үшін Draw әдісін шақыртқан кездегі полиформизм.

Проектте өзіндік класс құру үшін, менюде Project - Add Class Module (Класс модульін қосу) командасын таңдау қажет. Нәтижесінде диалогтық терезе бейнеленеді. Бұл терезеде Class Module пунктін таңдауға болады. Құрылып жатқан класс үшін берілгендер мәнін осы терезеде енгізуге болады. Бірақ, Visual Basic класы арқылы VB Class Builder (VB класс құрғыш) пунктін таңдау арқылы салған жөн болады.

1.6 сурет. Класс модулін құру диалогтық терезесі.

1.7 сурет. Класс құрғыш терезесі.
Өзіндік класстар құру үшін Visual Basic- те, Class Builder (VB класс құрғыш) әдейі құру амалы қарастырылған. жоғарыда аталған Round класын осы амал арқылы құру әдісін қарастырайық.
VB Class Builder пунктін таңдағаннан кейін, класс құрғыш терезесі пайда болады. Бұл терезенің сол жақ шетінде аталған проектінің өзінің проектілері бейнеленеді. Егер класстар құрылмаған болса, онда Project 1 пункті ғана бейнеленеді.
Жаңа класстар құру. Жаңа классты құру үшін мына командалар қолданылады (13.8. сурет): File \ New ... жалғасы
Ұқсас жұмыстар
Delphi объектілі бағдарлы бағдарламалау тілінің мүмкіндіктері
Объектілі бағытталған бағдарламалау түсінігі
Обьектілі - бағытталған программалау негіздері
Бағдарлы оқытуды ұйымдастырудың негіздері
Windows объектілі-бағытталған платформасы
С++(объектілі-бағытталған программалау)
Объектті бағдарлы программалау түсінігі
Сызықтық программалаудың негізгі есебі
Объектілі-бағытталған бағдарламалаудың математикалық негіздері
Delphi7 объектілі бағытталған программалау ортасы
Пәндер
Stud.kz
Арайлым
Біз міндетті түрде жауап береміз!
Мы обязательно ответим!
Жіберу / Отправить

Рақмет!
Хабарлама жіберілді. / Сообщение отправлено.

Email: info@stud.kz

Жабу / Закрыть