Скачиваний:
0
Добавлен:
20.09.2026
Размер:
304 Кб
Скачать
☆
14-lekciya. Obyektke baǵdarlanǵan programmalastırıw tiykarları. Klass hám obyekt
túsinikleri. Konstrukturlar hám destruktorlar.
OBP — bul programmalıq támiynattı proektlestiriwdiń bir usılı bolıp, onda tiykarǵı itibar
maǵlıwmatlarǵa emes, al sol maǵlıwmatlardı qayta isleytuǵın "obyektlerge" qaratıladı. Bul usıl bizge real dúnyadaǵı obyektlerdi (mısalı, avtomobil, insan, kitap) programmada modellestiriwge múmkinshilik beredi.
OBPnıń tiykarǵı principleri tómendegiler:
Inkapsulyaciya: Bul maǵlıwmatlardı hám olar menen isleytuǵın metodlardı
Miyrasxorlıq: Bul bir klastıń qásiyetlerin hám metodların basqa klasqa miyras etip
qaldırıw múmkinshiligi. Bul kodtı qayta paydalanıwǵa hám ierarxiyalıq strukturalar dúziwge járdem beredi.
Polimorfizm: Bul bir atama astında hár qıylı máselelerdi orınlaw qábileti. Bul kodtıń
iykemliligin asıradı.
Abstrakciya: Bul obyektlerdiń áhmiyetli táreplerin kórsetip, quramalı detalların jasırıw.
Bul programmanıń ulıwma strukturasın ańsatlastıradı.
Klass hám Obyekt túsinikleri
OBP-daǵı eń tiykarǵı túsinikler — bul klass hám obyekt.
Klass
Klass — bul obyektlerdi jaratıw ushın qollanılatuǵın sızılma yamasa úlgi. Ol obyekt iye bolıwı
kerek bolǵan qásiyetlerdi (aǵza ózgeriwshiler) hám is-háreketlerdi (aǵza funkciyalar yamasa metodlar) anıqlaydı. Basqasha aytqanda, klass — bul paydalanıwshı tárepinen anıqlanatuǵın jańa maǵlıwmat tipi.
C++ tilinde klass class gilt sózi járdeminde járiyalanadı.
Sintaksisi:
class KlassAtı { private: // Jeke aǵza ózgeriwshiler hám funkciyalar // Bul aǵzalarǵa tek klass ishinen ruqsat etiledi
public: // Ashıq aǵza ózgeriwshiler hám funkciyalar // Bul aǵzalarǵa programmanıń hár qanday jerinen ruqsat etiledi
protected: // Qorǵalǵan aǵza ózgeriwshiler hám funkciyalar // Bul aǵzalarǵa klass ishinen hám onıń miyrasxorlarınan ruqsat etiledi };
Kiriw modifikatorları (private, public, protected):
private: Ádepki boyınsha klass aǵzaları jeke bolıp tabıladı. Bul olarǵa tek klass ishindegi
funkciyalar arqalı ruqsat etiliwin bildiredi. Bul inkapsulyaciyanıń tiykarǵı quralı.
public: Bul aǵzalarǵa programmanıń hár qanday noqatınan tuwrıdan-tuwrı ruqsat etiw
múmkin.
protected: Bul private-qa uqsas, biraq miyrasxor klaslar ushın da ruqsat etiledi.
Mısal: Keliń, Student degen klass jaratayıq.
#include <iostream> #include <string>
class Student { private: std::string atı; int jas;
public: void maǵlıwmatlardıKirit(std::string a, int j) { atı = a; jas = j; }
void maǵlıwmatlardıShıǵar() { std::cout << "Atı: " << atı << std::endl; std::cout << "Jas: " << jas << std::endl; } };
Bul jerde Student klassı atı hám jas degen jeke (private) ózgeriwshilerge hám maǵlıwmatlardıKirit, maǵlıwmatlardıShıǵar degen ashıq (public) funkciyalarǵa iye.
Obyekt
Obyekt — bul klastıń anıq bir nusqası. Eger klass sızılma bolsa, obyekt sol sızılma tiykarında
qurılǵan anıq imaratqa uqsaydı. Bir klastan bir neshe obyektler jaratıw múmkin.
Obyekt jaratıw:
int main() { // Student klasınan student1 degen obyekt jaratıw Student student1;
// student1 obyektiniń metodların shaqırıw student1.maǵlıwmatlardıKirit("Alisher", 20); student1.maǵlıwmatlardıShıǵar();
// Student klasınan student2 degen basqa obyekt jaratıw Student student2; student2.maǵlıwmatlardıKirit("Gúlnaz", 19); student2.maǵlıwmatlardıShıǵar();
return 0; }
Bul mısalda student1 hám student2 — Student klasınıń obyektleri. Hárbir obyekt óziniń atı hám jas maǵlıwmatların saqlaydı.
Jáne de keńirek qarastırsaq:
C++ tilinde hámme nárse klasslar hám obyektler menen baylanıslı, olardıń atributları hám metodları menen birge. Mısalı: haqıyqıy ómirde, mashina - bul obyekt. Mashinanıń salmaǵı hám reńi sıyaqlı atributları, júriw hám tormozlaw sıyaqlı metodları bar.
Atributlar hám metodlar tiykarınan klassqa tiyisli ózgeriwshiler hám funkciyalar bolıp tabıladı.
Olar kóbinese "klass aǵzaları" dep ataladı.
Klass - bul biziń programmamızda qollanıwımız múmkin bolǵan paydalanıwshı tárepinen
anıqlanǵan maǵlıwmat túri, hám ol obyekt dúziwshi yamasa obyektlerdi jaratıw ushın "sızılma" sıpatında isleydi.
Klass jaratıw
Klass jaratıw ushın class gilt sózin qollanıń:
Mısal
"MyClass" dep atalatuǵın klass jaratıń: class MyClass { // Klass public: // Kiriw specifikatorı int myNum; // Atribut (int ózgeriwshi) string myString; // Atribut (string ózgeriwshi) };
Mısaldıń túsindirmesi
• MyClass dep atalatuǵın klass jaratıw ushın class gilt sózi qollanıladı.
• public gilt sózi - bul kiriw specifikatorı, ol klasstıń aǵzalarına (atributlar hám metodlar) klasstıń sırtınan kiriwge bolatuǵının kórsetedi. Kiriw specifikatorları haqqında keyinirek kóbirek bilip alasız.
• Klasstıń ishinde myNum degen pútin san ózgeriwshisi hám myString degen qatar ózgeriwshisi bar. Ózgeriwshiler klass ishinde járiyalanǵanda, olar atributlar dep ataladı.
• Aqırında, klass anıqlamasın útirli noqat (;) penen juwmaqlań.
Obyekt jaratıw
C++ tilinde obyekt klasstan jaratıladı. Biz álleqashan MyClass dep atalatuǵın klass jarattıq, endi bunı obyektler jaratıw ushın qollana alamız.
MyClass obyektin jaratıw ushın, klass atın kórsetiń, keyin obyekt atın jazıń.
Klass atributlarına (myNum hám myString) kiriw ushın, obyektte noqat sintaksisin (.) qollanıń:
Mısal
"myObj" dep atalatuǵın obyekt jaratıń hám atributlarǵa kiriń:
class MyClass { // Klass public: // Kiriw specifikatorı int myNum; // Atribut (pútin san ózgeriwshisi) string myString; // Atribut (qatar ózgeriwshisi) };
int main() { MyClass myObj; // MyClass obyektin jaratıw
// Atributlarǵa kiriw hám mánislerdi ornatıw myObj.myNum = 15; myObj.myString = "Bir tekst";
// Atribut mánislerin shıǵarıw cout << myObj.myNum << "\n"; cout << myObj.myString; return 0; }
Kóp obyektler
Bir klasstıń birneshe obyektin jarata alasız:
Mısal
// Bir neshe atributları bar Car klassın jaratıw class Car { public: string brand; string model; int year; };
int main() { // Car obyektin jaratıw Car carObj1; carObj1.brand = "BMW"; carObj1.model = "X5"; carObj1.year = 1999;
// Car klassınıń basqa obyektin jaratıw
Car carObj2; carObj2.brand = "Ford"; carObj2.model = "Mustang"; carObj2.year = 1969;
// Atribut mánislerin shıǵarıw cout << carObj1.brand << " " << carObj1.model << " " << carObj1.year << "\n"; cout << carObj2.brand << " " << carObj2.model << " " << carObj2.year << "\n"; return 0; }
Mısal:
#include <iostream> #include <string> using namespace std;
// Student klassın anıqlaw class Student { public: string atı; int jası; string fakulteti; };
int main() { // Birinshi student obyektin jaratıw Student student1; student1.atı = "Ámet"; student1.jası = 20; student1.fakulteti = "Informatika";
// Ekinshi student obyektin jaratıw Student student2; student2.atı = "Gúlnara"; student2.jası = 19; student2.fakulteti = "Ekonomika";
// Studentler haqqında maǵlıwmatlardı shıǵarıw cout << "1-student: " << student1.atı << ", " << student1.jası << " jas, " << student1.fakulteti << " fakulteti" << endl; cout << "2-student: " << student2.atı << ", " << student2.jası << " jas, " << student2.fakulteti << " fakulteti" << endl;
return 0; }
Bul mısalda:
1. Biz "Student" degen klass jarattıq, onıń úsh atributı bar: atı, jası hám fakulteti.
2. `main()` funkciyasında biz usı klasstıń eki obyektin jarattıq: student1 hám student2.
3. Hár bir obyekt ushın biz atributlarǵa mánis berdik.
4. Aqırında, biz hár bir student haqqındaǵı maǵlıwmatlardı ekranǵa shıǵardıq.
Bul mısal C++ tilinde klasslar hám obyektlerdi qalay paydalanıwdı kórsetedi. Ol ápiwayı, biraq klasslardıń tiykarǵı koncepciyasın túsiniwge járdem beredi.
Konstruktorlar hám Destruktorlar
Konstruktor — bul obyekt jaratılǵan waqıtta avtomat túrde shaqırılatuǵın arnawlı aǵza
funkciya. Onıń tiykarǵı wazıypası — klastıń aǵza ózgeriwshilerin baslanǵısh mánisler menen támiyinlew.
Konstruktordıń qásiyetleri:
Onıń atı klass atı menen birdey bolıwı kerek. Onıń qaytaratuǵın tipi bolmaydı (hátte void ta emes). Obyekt jaratılǵanda avtomat túrde iske túsedi.
Mısal: Student klassına konstruktor qosayıq.
class Student { private: std::string atı; int jas;
public: // Ádepki konstruktor Student() { atı = "Belgisiz"; jas = 0; std::cout << "Ádepki konstruktor isledi!" << std::endl; }
// Parametrli konstruktor Student(std::string a, int j) { atı = a; jas = j; std::cout << "Parametrli konstruktor isledi!" << std::endl; }
void maǵlıwmatlardıShıǵar() { std::cout << "Atı: " << atı << std::endl; std::cout << "Jas: " << jas << std::endl; } };
int main() { // Ádepki konstruktor shaqırıladı Student student1; student1.maǵlıwmatlardıShıǵar();
std::cout << "--------------------" << std::endl;
// Parametrli konstruktor shaqırıladı Student student2("Azamat", 21); student2.maǵlıwmatlardıShıǵar();
return 0; }
Bul jerde biz eki túrli konstruktor anıqladıq: parametrsiz (ádepki) hám parametrli. Obyekt jaratıw usılına baylanıslı sáykes konstruktor shaqırıladı.
Destruktor — bul obyekt óz ómirin juwmaqlap, yadtan óshiriliwinen aldın avtomat túrde shaqırılatuǵın arnawlı aǵza funkciya. Onıń tiykarǵı wazıypası — obyekt tárepinen iyelengen resurslardı (mısalı, dinamikalıq esapta ajıratılǵan yad) bosatıw.
Destruktordıń qásiyetleri:
Onıń atı klass atı menen birdey bolıp, aldında tilda (~) belgisi boladı. Onıń parametrleri hám qaytaratuǵın tipi bolmaydı. Bir klasta tek bir destruktor bolıwı múmkin.
Mısal: Student klassına destruktor qosayıq.
#include <iostream> #include <string>
class Student { private: std::string atı; int jas;
public: // Parametrli konstruktor Student(std::string a, int j) { atı = a; jas = j; std::cout << atı << " obyekti jaratıldı." << std::endl; }
// Destruktor ~Student() { std::cout << atı << " obyekti óshirildi." << std::endl; }
void maǵlıwmatlardıShıǵar() { std::cout << "Atı: " << atı << std::endl; std::cout << "Jas: " << jas << std::endl; } };
int main() { { Student student1("Azamat", 21); student1.maǵlıwmatlardıShıǵar(); } // student1 obyekti bul jerde kórinisiw aymaǵınan shıǵadı hám destruktor shaqırıladı
std::cout << "main funkciyası juwmaqlanbaqta." << std::endl; return 0; }
Programmanı iske túsirsek, main funkciyası juwmaqlanǵannan keyin, student1 obyekti ushın destruktor avtomat túrde shaqırılǵanın kóremiz.
Bul lekciyada biz C++ tilindegi OBPnıń tiykarǵı elementleri menen tanısıp shıqtıq:
Klass — bul obyektlerdiń úlgisi, qásiyetleri (ózgeriwshiler) hám is-háreketlerin
(funkciyalar) birlestiredi.
Obyekt — bul klastıń anıq bir nusqası. Konstruktor — obyekt jaratılǵanda onı baslanǵısh mánisler menen támiyinleytuǵın
arnawlı funkciya.
Destruktor — obyekt joq etiliwinen aldın resurslardı bosatatuǵın arnawlı funkciya.
Bul túsinikler programmalardı strukturalı hám basqarıwǵa ańsat etedi, sonıń menen birge, kodtı qayta paydalanıwǵa hám keńeytiwge keń múmkinshilikler jaratadı. OBP principlerin tereńirek úyreniw hám ámeliyatta qollanıw C++ programmalastırıw tilin tolıq iyelewdiń gilti bolıp tabıladı.
Соседние файлы в папке 1-semestr