14-lekciya_paradigma_qq
.pdf14-lekciya. Obyektke baǵdarlanǵan programmalastırıw. Klasslar hám obyektler.
Jobası:
1.Obyektke baǵdarlanǵan programmalastırıw (OBP) paradigmasınıń mánisi hám proceduralıq usıldan ózgesheligi.
2."Klass" hám "Obyekt" túsinikleri: Abstrakt sızılma hám real nusqa.
3.Klasstıń ishki dúzilisi: Atributlar (qásiyetler) hám Metodlar (is-háreketler).
4.Obyektti jaratıw procesi (Instanciya) hám konstruktorlardıń roli.
OBP paradigması hám onıń tiykarǵı filosofiyası
Obyektke baǵdarlanǵan programmalastırıw (OBP) – bul zamanagóy programmalastırıwdıń eń keń tarqalǵan paradigması bolıp, ol real dúnyadaǵı obyektlerdi hám qubılıslardı kompyuter kodında modellestiriwge tiykarlanǵan. Eger proceduralıq programmalastırıwda (mısalı, C yamasa Pascal) programma funkciyalar (háreketler) hám olarǵa baylanısı joq maǵlıwmatlar jıyındısı dep qaralsa, OBP-da programma bir-biri menen óz-ara baylanısatuǵın "Obyektler" jıyındısı retinde súwretlenedi. Bul paradigmada maǵlıwmatlar (data) hám sol maǵlıwmatlardı qayta isleytuǵın kod (code) bir pútin "kapsula"nıń ishine biriktiriledi. Bul usıl baǵdarlamashıǵa quramalı sistemalardı adam túsiniwine ańsat formada proektlestiriwge imkaniyat beredi. OBPnıń eń tiykarǵı túsinigi – bul "Obyekt". Obyekt – bul ózine tán "Halatqa" (State) hám "Minez-qulıqqa" (Behavior) iye bolǵan programmalıq birlik. Ápiwayı turmıstan mısal keltirsek, "Avtomobil" – bul obyekt. Onıń halatı: reńi, markası, tezligi, janılǵı muǵdarı. Onıń minez-qulqı (háreketleri): qotlanıw, júriw, toqtaw, burılıw. Programmalastırıwda da tap sonday, hárbir obyekt óziniń ishki ózgeriwshilerine (halatı) hám funkciyalarına (minez-qulqı) iye boladı. Obyektler passiv maǵlıwmat saqlawshılar emes, olar aktiv túrde basqa obyektler menen "xabar almasıw" arqalı baylanısadı.
Bul paradigmadaǵı ekinshi eń áhmiyetli túsinik – bul "Klass" (Class). Klass
– bul obyektlerdiń qanday bolıwı kerekligin súwretleytuǵın "úlgisi", "qálibi" yamasa "sızılması" (blueprint). Klass óz-ózinen maǵlıwmat saqlamaydı hám yadtı iyelemeydi (kod retinde júklengennen tısqarı), ol tek strukturanı belgileydi. Al Obyekt bolsa – sol klastıń tiykarında jaratılǵan anıq nusqası. Mısalı, "Insan" degen klass bolıwı múmkin (bunda ulıwma adamzatqa tán qásiyetler jazıladı), al "Azamat", "Gúlparshın", "Timur" degenler – sol klastan jaratılǵan anıq obyektler bolıp tabıladı.
Klass hám obyekt arasındaǵı baylanıstı qurılıs penen salıstırıwǵa boladı. Klass – bul imarattıń arxitekturalıq sızılması. Sızılmanıń ishinde imarattıń qansha bólmesi bar ekeni, diywalları ne menen oralatuǵını jazılǵan, biraq onıń ishinde jasaw múmkin emes. Obyekt – bul sol sızılma tiykarında qurılǵan haqıyqıy úy. Bir sızılmadan (klasstan) paydalanıp, biz qálegenimizshe birdey úylerdi (obyektlerdi) qura alamız. Hárbir úydiń (obyekttiń) adresi hám ishki mebelleri (maǵlıwmatları) hár túrli bolıwı múmkin, biraq olar birdey proektke (klassqa) tiykarlanǵan.
Klastıń ishki strukturası hám komponentleri
Programmalastırıw tillerinde (Java, C++, Python, C#) klass eki tiykarǵı komponentten turadı: "Atributlar" hám "Metodlar". Atributlar (yamasa maydanlar, qásiyetler) – bul klastıń ishinde járiyalanǵan ózgeriwshiler. Olar obyekttiń "Halatın" saqlaw ushın xızmet etedi. Mısalı, Student klassında atı, familiyası, kursı hám bahaları degen atributlar bolıwı múmkin. Hárbir student obyektiniń usı atributlar ushın óziniń jeke mánisleri boladı (birewi 1-kursta, ekinshisi 3-kursta oqıwı múmkin). Atributlar ádette basqa obyektlerden qorǵalǵan (private) boladı, bul OBP-nıń qawipsizlik principlerine kiredi.
Metodlar – bul klastıń ishinde jazılǵan funkciyalar. Olar obyekttiń "Minezqulqın" yamasa is-háreketlerin belgileydi. Metodlar kóbinese obyekttiń atributları (maǵlıwmatları) menen jumıs isleydi. Mısalı, Student klassında imtixan_tapsırıw(), kurs_kóteriliw() yamasa atin_ózgertiw() degen metodlar bolıwı múmkin. Proceduralıq programmalastırıwdan ayırmashılıǵı, metodlar hámme maǵlıwmatlar menen emes, tek ózi tiyisli bolǵan obyekttiń ishki maǵlıwmatları menen isleydi. Metodlar obyekttiń sırtqı dúnya menen baylanısıw interfeysi bolıp tabıladı.
Klass jaratılǵannan keyin, onnan paydalanıw ushın biz oǵan tiyisli obyektlerdi (nusqalardı) jaratıwımız kerek. Bul processti "Instanciya" (Instantiation) dep ataydı. Kóbinese new operatorı arqalı ámelge asırıladı (mısalı, Java-da: Student s1 = new Student();). Bul waqıtta kompyuterdiń operativ yadınan (Heap yadınan) usı obyekt ushın arnawlı orın ajıratıladı. Bul orında obyekttiń barlıq atributlarınıń mánisleri saqlanadı. Bir klastan jaratılǵan eki obyekttiń atributları bir-birine ǵárezsiz boladı; birewiniń ózgeriwi ekinshisine tásir etpeydi.
Obyekt jaratılǵan waqıtta onıń dáslepki halatın ornatıw ushın arnawlı metod
– "Konstruktor" (Constructor) iske túsedi. Konstruktor – bul klass penen birdey atqa iye bolǵan (yamasa Python-da __init__ dep atalatuǵın) metod. Onıń tiykarǵı wazıypası – obyekttiń atributlarına baslanǵısh mánislerdi beriw. Mısalı, biz new Student("Azamat", 2) dep shaqırǵanda, konstruktor iske túsip, ati atributına "Azamat", kurs atributına 2 mánisin jazıp qoyadı. Konstruktor bolmasa, obyekt bos yamasa mánissiz halatta jaratılǵan bolar edi, bul bolsa qátelerge alıp keliwi múmkin.
OBP-nıń ámeliy áhmiyeti hám qollanılıwı
Klasslar hám obyektlerdi qollanıwdıń eń úlken ámeliy paydası – bul kodtıń "Modulliligi" hám "Tártipliligi". Úlken kólemdegi programmalarda (millionlaǵan qatar kod) barlıq funkciyalar menen ózgeriwshilerdi aralastırıp taslaw – xaostı payda etedi. OBP bolsa kodtı logikalıq bóleklerge (klasslarǵa) bóliwdi talap etedi. Mısalı, internet-dúkan sistemasın jaratqanda, biz Paydalanıwshı, Tovar, Buyırtpa, Tólem degen klasslardı jaratamız. Hárbir klass tek ózine tiyisli wazıypanı atqaradı. Eger tólem sistemasında qáte shıqsa, baǵdarlamashı basqa jerlerdi izlep otırmastan, tikkeley Tólem klassın tekseredi.
OBP paradigması "Kodtı qayta qollanıw" (Code Reusability) imkaniyatın eń joqarı dárejege kóteredi. Bir márte durıs jazılǵan hám testlengen klastı basqa
proektlerde de heshqanday ózgerissiz qollanıwǵa boladı. Sonday-aq, klasslar "Miyrasxorlıq" (Inheritance) mexanizmine jol ashıladı (bul haqqında keyingi lekciyalarda tolıq aytıladı). Miyrasxorlıq arqalı biz bar klastıń kodın kóshirip jazbastan, onıń qásiyetlerin jańa klassqa ótkizip alıwımız hám tek kerekli jerlerin ózgertiwimiz múmkin. Bul programmisttiń waqtın hám kúshin ádewir únemleydi. Zamanagóy programmalastırıw tilleriniń derlik barlıǵı (Java, C#, C++, Python, PHP, Swift, Kotlin) OBP paradigmasına tiykarlanǵan yamasa onı tolıq qollapquwatlaydı. Hátte dáslep skriptli til bolǵan JavaScript te ES6 standartınan baslap class gilt sózin kirgizip, OBP usılına ótti. Yaǵnıy – búgingi kúni programmist bolıw ushın klass hám obyekt túsiniklerin tereń biliw shárt. OBP tek sintaksis emes, ol – máseleni sheshiw ushın álemdi modellew usılı.
Juwmaqlap aytqanda, klasslar hám obyektler – OBP qurılıstıń irgetası. Klass
– bul proekt, abstrakt túsinik hám nızam-qaǵıydalar jıyınaǵı bolsa, obyekt – bul sol proekttiń yadtaǵı tiri, jumıs islep turǵan nusqası. Atributlar obyekttiń "kim" ekenin (qásiyetin) kórsetse, metodlar obyekttiń "ne isley alatuǵının" (qábiletin) kórsetedi. Bul túsiniklerdi durıs qollanıw arqalı biz quramalı, isenimli, keńeytiwge ańsat hám turaqlı programmalıq támiynatlardı jarata alamız.
BAQLAW SORAWLARÍ:
1."Klass" hám "Obyekt" túsinikleriniń ayırmashılıǵın ápiwayı turmıslıq mısal (analogiya) menen túsindirip beriń.
2.Klastıń ishindegi "Atributlar" hám "Metodlar" qanday wazıypalardı atqaradı?
3."Instanciya" (Instantiation) procesi degen ne hám ol programmalastırıwda qanday ámelge asırıladı?
4.Konstruktor (Constructor) metodınıń tiykarǵı maqseti ne? Ol qashan iske túsedi?
5.Proceduralıq programmalastırıw menen salıstırǵanda, klasslardan paydalanıwdıń qanday artıqmashılıqları bar?
