УДК 004.056, UDC 004.056
С++ БАFДАРЛАМАЛАУ ТШШЩ НЕГВП ОБЬЕКТIЛЕРIМЕН ЦЫЗМЕТ
МАДАЛИЕВА ГУЛЬНАР УРАЗАЛИЕВНА
АFa окытушы, ж.F.м., Академик ЭДуатбеков aтындaFы Халыктар Досты^ы Университет^ Шымкент каласы, ^азакстан
КОРОКБАЕВ АБДУМАЖИД УРИНБАСАРОВИЧ
АFa окытушы, ж^.м., Академик ЭДуатбеков aтындaFы ХДУ, Шымкент
НАКАЙ АЙНАГУЛ АЙМАХАНОВНА
АFa окытушы, п.F.м., Академик ЭДуатбеков aтындaFы ХДУ, Шымкент
ХАЙДАРОВ АЗИЗХОДЖА САБЫРХАНОВИЧ
АFa окытушы, п^.м., Академик ЭДуатбеков aтындaFы ХДУ, Шымкент
Аннотация: В статье рассматриваются язык программирования Си++-с богатым набором операторов и компактным способом записи выражений. Благодаря гибкости, выразительности и компактности своих конструкций Си++ завоевал наибольшую популярность в среде профессиональных программистов и широко используется при разработке системных и прикладных программ.
Ключевые слова: объектш - багдарлы программалау, класс, объект, оцига, цасиеттер,эдктер, компиляциялау. конструктор, деструктор
Keywords: object-oriented programming, class, object, event, properties, methods, compilation. constructor, destructor.
Операциялык жYЙелерде бaFдaрлaмaлык тшге жылдам орындалатын жеке биттермен операция жасайтын оперaторлaрFa тиiмдi С++ программа. Олар аркылы байланыс порттарын, мaгниттiк дискшерде жинактауыштарды жэне аппараттык к¥ралдарды бaскaрyFa мYмкiндiк жасалды. Ал, aлFaшкы кездерде жеке типт компьютерлердщ аппараттык куралдарына кол жеткiзе алатын машиналык командалармен жумыс iстейтiн тeменгi децгейлi ассемблер тш Faнa болатын [1].
Си тш бiрте-бiрте дамытылып, кaзiргi кезде пайдаланылып келе жаткан, 1983 жылы дYние жYзi елдерi басшылыкка aлFaн ANSI C нускасы да жарыкка шыкты (ANSI -стандарттардыц Америкалык улттык институты). ANSI C тшнщ тYрлi нускаларына енгiзiлген стандартты ютапханалар да бар. Тшдщ кемшiлiгi де жок емес, ол жYЙелiк жэне колданбалы программаларды дaйындayFa бейiм, бiрaк aйнымaлылaрFa руксат етiлмеген кол жетюзу мехaнизмiн камтамасыз етпейдi жэне курылатын класты баска кластыц iшкi класы (мурагер) ретшде жариялау мYмкiн емес. Мундай объектiлi - бaFдaрлы программалау (ОБП) тшдерше енетш ерекшелiктердi ескерш, Borland International Inc фирмасы C тшнщ дамыть!етан жаца Turbo C (Турбо Си) нускасын 1980 жылдардыц басында жарыкка шыFaрды. Kейiннен Turbo C++ 2.0, Turbo C++ 3.0 жэне олардыц кецейтшген Borland C++ нускалары да пайда болды: Borland C++ 2.0, Borland C++ 3.0, Borland C++ 3.1, Borland C++ 4.0 жэне курылымдык жэне aлгоритмдердi басшылыкка алып дaйындaлFaн процедуралык жоFaры децгейлi тiл.
C++ тiлi де процедуралык тш, бiрaк онда ОБП тшнщ ерекшелiктерi кец тYPде кaрaстырылFaн. ОБП тiлiнде колданылатын негiзгi уйымдар: класс, объект, окиFa, касиеттер мен эдютер. Бул уFымдaр:
Тiлде жадпен жумыс iстеyге aрнaлFaн арнайы конструктор, деструктор функциялары да бар. Конструктор класс типт айнымалы Yшiн жадтан арнайы орын бeледi, деструктор белшген жадты тазалайды.
ОФ "Международный научно-исследовательский центр "Endless Light in Science"
Алгашкы рет дайындалган программа мэ^ш Си тшнде бастапкы код деп аталады. Программа компиляцияланган соц, синтаксистiк кателер санын кeрсетiп, косымша с^хбатты; терезе шыгады. [2].
Basic, Pascal, СИ сиякты дэстYрлi программалау тiлдерiнде кYPделi, Yлкен программаларды дайындаудыц кемшiлiгi - ол Yшiн программалаушылар тобыныц кеп ^ш ж^мсауы кажет болатын. Программалауды жещлдету Yшiн 80 - жылдары жаца объект, класс (оbject, class) угымдары енгiзiлiп, объектiлi - багдарлы программалау (ОБП) тэсш негiзге алынды. ОБП - СИ-де колданылатын процедуралык жэне к¥рылымдык программалаудыц жэне модуль к¥рудыц дамытылган тYрi. Ол берiлгендердi белгш бiр абстракциялык децгейде кeрсетiп, модульдш программалауды пайдаланады. Мысалы, Visual С++ программалау жYЙесi объектiлi программалау непзшде визуальды тYPде к¥рылган. С-дш ОБП тэсшн пайдаланып к^рылган жаца нускасы С++ деп аталады. Borland С++ Builder (BCB) осы тшдш непзшде дайындалган. Объектш программалаудыц ыцгайсыздыгы - онда дэстYрлi программалау тэсiлдерi пайдалана берiлмейдi, бiрак ондагы кеп киындыктар арнайы тэсiлдердi пайдалану аркылы тез шешiлген.
ОБП тiлiнiц дэстYрлi программалау тiлдерiнен eзгешiлiгi - типте ерютерге коса, касиеттер жэне эдютер де сипатталады:
eрiстер - CИ-дегi к¥рылым (struct) типiнiц eрiстерi сиякты;
касиеттер - объект сипаттамалары;
эдютер - кластыц eрiстерi мен касиеттерш eцдейтiн процедуралар мен функциялар.
Класс - жогарыда кeрсетiлген к¥рылымды ^рютер, касиеттер жэне эдiстерден т^ратын) тип. Ягни, класс эдеттегi С титнщ кецейтiлген тYрi. Класс типi аркылы сипатталган айнымалы объект (нысан) деп аталады.
ЖYЙе объект Yшiн жадтыц динамикалык облысынан арнайы орын калдырады. Ягни, шын мэнiнде, объект жай айнымалы емес, ол - жадтыц динамикалык облысыныц кездейсок адресiн сактайтын кeрсеткiш. Бiрак программада оган С-де пайданылатын кeрсеткiш белгiсi ( А ) енгiзiлмей жазылады.
Объект к¥рылган кезде автоматты тYPде конструктор (constructor) деп аталатын эдiс ша-кырылып, ол объектiнi динамикалык облыста орналастырады, динамикалык жадтан объектiнi арнайы деструктор (destructor) эдiсi жояды.
Сонымен, ОБП - да пайдаланылатын объект сeзiнiц екi магынасы бар: айнымалы (абстрактты, дерексiз объект) жэне накты объект (мысалы, формада орнатылган компонент, геометриялык дене, т.с.с.). ВСВ - да бiрiншi объект накты класс данасын аныктайды.
Класка иерархиялык (багынышты, жогарыдан тeмен) кластардыц енуi де мYмкiн. Мысалы, геометриялык фигуралар класы жазык фигуралар жэне кецiстiк фигуралары болатын ею iшкi кластык фигураларга бeлiнедi. Ал жазык фигуралар класы тeбелерi бар (Yшб¥рыш, кeпб¥рыш) жэне тeбелерсiз (шецбер, эллипс) болып екi шю класка бeлiнедi. Объектiлi программалауда барлык кластар иерархиялык тYPде негiзгi TObject класынан тарайды (TObject ^ TPersistent ^ TComponent ^ ...). эдетте негiзгi класты аталык, багыныцкы клас-тарды туынды не сэбилiк кластар деп атайды (TObject - барлык кластардыц аргы атасы, TComponent - барлык иерархиялык компоненттердш жогаргысы (компонент деп TComponent класыныц м¥рагерi болатын класс данасын атайды)). эр ¥рпак eзiнiц аталык класыныц мYмкiндiктерiн ^рютершш, касиеттерiнiц, эдiстерiнiц сипаттамаларын) кабылдайды. Мысалы, TObject класыныц &eate (бастапкы мэн меншштеу (инициалдау)) эдiсi барлык туынды кластарга тиiстi (TObject класында конструктор &eate деп аталады). эр ¥рпак eзiне косымша жаца мYмкiндiктер (сипаттамалар) косып, келесi ¥рпактарга беруi мYмкiн.
ВСВ - да класс атауын T эрпiнен бастау келiсiлген. Формага енгiзiлген компонент данасы сандык индекс косылган класс атауын алады.
Туынды кластыц сипатталу тYрi:
type <туынды класс атауы>=class (<негiзгi класс атауы>);
<класс мYшелерiнiц тiзiмi>
ОФ "Международный научно-исследовательский центр "Endless Light in Science"
end;
var <объект> : <класс атауы>;
мундагы класс мYшелерi - epicTep, касиеттер жэне эдiстер. Мысалы,
TForm1 = class (TForm) Button1 : TButton; Label1 : TLabel;
Procedure Button1Click ( Sender : TObject); Form1 : TForm1;
TForml = class (TForm) жазуы TForm класыныц Yлгiciмeн курылатын жаца (туынды) TForml класын аныктайды. Forml : TForml жолындагы Forml айнымалысы - класс данасы.
Программаны дайындау барысында ВСВ модульдщ Interface бeлiмiнe формага eнгiзiлгeн компоненттер мен окигасы тацдалган эдicтepдi сипаттауды автоматты тYPдe ен-гiзeдi, эдicтepдi icкe асыру нускаулары модульдщ implementation бeлiмiнe колдан жазылады.
Жалпы, ВСВ - да класс деп езше уксас даналарды дайындау Yшiн Yлгi тYpiндe алынатын, толык тYPдe дайындалган программа Yзiндiciн де атайды. Программалаушы бурын дайындалган класс данасыныц кeшipмeciн тYpлi программаларга eнгiзiп, программалауды жэне оныц кeлeмiн кеп жещлдетуше болады.
ВСВ курамына жYЗдeгeн дайын кластар енпзшген, эр компонент катац тYPдe тек бip класка гана тшсп. Мысалы,
ВСВ - да форма (TForm) компонент! - Forma класына тшсп, осы типт айнымалы (Form1) - класс объeктici. Класс бeлiгi peтiндe сипатталып, кажет болса, модульдщ Implementation (юке асыру) бeлiгiндe жазылатын сэйкес процедура - эдю. Мысалы, procedure TForm1->Button1Click - эдю.
Форма iшiнe орналастырылган TEdit компонентшщ Edit1 данасын (объeктiciн) eкi рет шерткен кезде пайда болатын окиганы eцдeуiш эдiciнe (процедурасына) мысал: procedure TForm1->Edit1Click(Sender : TObject); begin
Edit1->Text = "Ci3 редакциялау epiciн eкi рет шертпщз"; end;
Программаны icкe косу командасы бepiлгeн соц компилятор автоматты тYPдe нeгiзгi модульге eнгiзiлгeн тeмeндeгi ею эдicтi орындайды: Application->CreateForm(TForm1, Form1); Application->Run;
БYлаpдыц бipiншici жадта Form1 объeктiciн курады (объeктiнi инициалдайды), eкiншici Application объекпсше косымшаныц нeгiзгi формасын icкe косуга нускау бepeдi (Run). Жогарыда жазылган процедураныц орындалу нэтижeciндe форманыц Edit1 epiciнe оныц Text каcиeтiнe меншштелген мэтiн жазылады.
ОБП - да класс Yшiн мурагерлш, инкапсуляция жэне полиморфизм пpинциптepi eнгiзiлгeн.
Мурагерлш - программада непзп класс типiнiц туынды иерархиялык кластарда да сакталуы.
Мысалы, автомобиль жецш жэне жYк машинасы болып бeлiнeдi. Олардыц жумыс icтeу жагдайына байланысты, сипаттамаларына ортак жэне бeлeк epicтep, касиеттер мен эдicтep eнгiзiлуi мYмкiн. Бipак, эр кайсысына жеке - жеке типт толык аньщтау Yнeмдi емес. Бipiнiц типiн аталык eтiп кабылдап, eкiншiciнe косымша каcиeттepдi eнгiзу жeткiлiктi. BCB-ныц барлык кластары TObject класына мрагер.
Инкапсуляция (шшде, бipтутаc) - класс epicтepiн, касиеттерш жэне эдicтepiн бipiктipiп, бipтутаc тYpiндe карастыру мYмкiндiгi. Инкапсуляция класты программаныц калган бeлiктepiнeн бeлiп алып, накты eceптi шеш
у Yшiн пайдалануга мYмкiндiк тугызатын принцип.
ОФ "Международный научно-исследовательский центр "Endless Light in Science"
Мысалы, TForm класы ез бойында Windows - терезеш дайындау Yшiн барлык кажет-тiлердi iшiнде сактайды (езiнде инкапсулдайды).
Полиморфизм (кеп тYрлiлiк) - мурагер кластардыц аталык класка енпзшген эдiс атауы бойынша баска касиеттер енгiзiлген уксас есептi шешуiне болатындыгы, ягни тYрлi кластарда эр тYрлi эрекеттердi орындайтын эдiстерге бiрдей атау беру мYмкiндiгi.
^орытындылай келе С++ тiлiндегi класстар кептеген операцияларды колданушы типтердщ обьектiлерiмен жумыс iстейдi жэне кайта жYктеу мYмкiншiлiгiне ие. М^ндай мYмкiндiктер обьект-кластар Yшiн болады. Операцияныц кайта жYктелуi, кластыц функция-операциясы кемегiмен жYзеге асырылады, оны класс мYшесi немесе достык функциясына айналдыруга немесе жай функцияга айналдыруга болады. Операцияларды кайта жYктеу типт беру, функцияларды жэне бiрнеше конструкторларды к¥руга болады.
Класс обьектюш к¥рран кезде ол Yшiн сэйкес келетiн конструктор автоматты турде шакырылады. Обьекттiк айнымалыларыныц инициализациясы конструктордыц орындалуы сиякты инициализациясы кезiнде де орындалады жэне жадыда динамикалык жадымен жумыс орындалмаса жэне конструктор кажет болмаса, онда Yнсiздiк бойынша кешiрiп алу конструкторын колдану кемегiмен кешiрiп алу конструкторын аныктау керек емес. Осындай кластарда колданылатын багдарламалар д^рыс жумыс iстейдi.
1. Бeрiбаев, Б.Б. Алгоритмдеу жэне программалау тiлдерi : КР Бiлiм жэне гылым мин. бекггкен окулык / Б. Б. Бeрiбаев, А. М. Махметова. - Алматы : ЖШС РПБК Друiр, 2011. -328 с. - (КР бiлiм жрне гылым министр.). - (АВ "КР Жогары оку орындарыныц кауымдастыгы")
2. Смайлова, ¥.М. Программалау: алгоритм К¥Ру технологиялары : оку к¥ралы / ¥. М. Смайлова. - 2^i бас., тольщт. - Алматы : Асыл ютап, 2011. - 168 с.
3. Бeрiбаев, Б. Программалау технологиялары : КР Бiлiм жэне гылым мин. окулык ретiнде бекiткен / Б. Бeрiбаев. - Алматы : ЖШС РПБК Друiр, 2011. - 352 с. - (КР бiлiм жэне гылым министр.). - (АВ "КР Жогары оку орындарыныц кауымдастыгы")
4. Иванова, Г.С. Технология программирования : учебник для студ. вузов, обучающихся по направлению "Информатика и вычислительная техника" / Г. С. Иванова. - М. : КНОРУС, 2011. - 336 с.
5. Смайлова, ¥.М. Программалау: алгоритм к¥ру технологиялары : оку к¥ралы / ¥. М. Смайлова. - 2^i басылым, толыктырылган. - Алматы : Асыл ютап, 2010. - 168 с.
6. Мауленов С.С. Информатика, есептеу техникасы жэне багдарламалау тшдершщ тарихы : оку-эдютемелш к¥рал / С. С. Мауленов, А. А. Миндетбаева. - Шымкент : ИП "Бейсенбекова А.Ж.", 2015. - 200 с
ЭДЕБИЕТТЕР Т1З1М1
ОФ "Международный научно-исследовательский центр "Endless Light in Science"