19-AMELIY
.pdf19-ámeliy. Obyektke baǵdarlanǵan programmalastırıw tiykarları. Klass túsinigi. Obyekt túsinigi.
Jumıstıń maqseti: Proceduralıq programmalastırıwdan Obyektke baǵdarlanǵan programmalastırıwǵa (OBP) ótiwdiń mánisin túsiniw. C++ tilinde class gilt sózi járdeminde óz maǵlıwmat túrlerimizdi (klasslardı) jaratıwdı úyreniw. Klasslardıń qásiyetlerin (aǵza ózgeriwshiler) hám minez-qulqın (metodlar) anıqlawdı, hám de sol klasslar tiykarında real dúnya obyektleriniń modeli bolǵan obyektlerdi jaratıwdı ámeliyatta qollanıp kóriw.
Teoriyalıq maǵlıwmatlar:
Búginge shekem biz maǵlıwmatlardı (ózgeriwshilerdi) hám olar ústindegi ámellerdi (funkciyalardı) bir-birinen bólek saqlap keldik. OBP bul eki túsinikti bir pútin koncepciyaǵa birlestiredi.
1. |
Klass (Class): |
|
o Ideyası: Klass - bul obyektlerdi jaratıw ushın shablon yamasa proekt. Mısalı, bir |
|
imarattıń sızılmasın (proektin) klass dep esaplasaq boladı. Klass obyekt qanday |
|
qásiyetlerge (aǵza ózgeriwshiler) hám qanday qábiletlerge (metodlar yamasa aǵza |
|
funkciyalar) iye bolıwı kerekligin anıqlaydı. |
|
o Mısal: Avtomobil degen klass bolsa, onıń qásiyetleri reńi, markası, jılı; al |
|
qábiletleri júriw(), toqtaw(), signal beriw() bolıwı múmkin. |
2. |
Obyekt (Object): |
|
o Ideyası: Obyekt - bul klastıń anıq bir nusqası (instance). Eger klass imarattıń |
|
proekti bolsa, sol proekt tiykarında qurılǵan hárbir imarat - obyekt bolıp tabıladı. |
oMısal: Eger Avtomobil degen klassımız bolsa, "qızıl reńli, 2024-jılǵı, Chevrolet Onix" - bul Avtomobil klasınıń anıq bir obyekti boladı. Biz bir klastan sheksiz kóp obyekt jarata alamız.
3.Inkapsulyaciya (Encapsulation):
oBul OBPnıń tiykarǵı principi bolıp, maǵlıwmatlardı (qásiyetlerdi) hám olar menen isleytuǵın metodlardı (qábiletlerdi) bir qabıqqa, yaǵnıy klassqa biriktiriwdi ańlatadı.
oprivate hám public gilt sózleri: Inkapsulyaciya maǵlıwmatlardı sırtqı tásirden qorǵawǵa járdem beredi.
private (jeke): Klass ishinde járiyalanǵan ózgeriwshiler hám metodlar tek ǵana sol klastıń óziniń ishinde qoljetimli boladı. Bul maǵlıwmatlardı qorǵawdıń tiykarǵı usılı.
public (ashıqlıq): Bul jerde járiyalanǵan metodlar hám ózgeriwshiler klass sırtınan da (mısalı, main funkciyasınan) qoljetimli boladı. Bular klastıń sırtqı dúnya menen baylanıs etetuǵın "interfeysi" esaplanadı.
Ámeliy bólim:
1-Mısal: Ápiwayı ÚyHaywanı klasın jaratıw
Bul mısalda biz ÚyHaywanı degen klass jaratamız. Onıń atı hám jası degen jeke (private) qásiyetleri boladı. Bul maǵlıwmatlarǵa mánis beriw hám olardı oqıw ushın ashıq (public) metodlardan paydalanamız.
#include <iostream> #include <string>
using namespace std;
// 1. Klass járiyalaw class UyHaywanı {
private: // Jeke aǵzalar (klass sırtınan kórinbeydi) string atı;
int jası;
public: // Ashıq aǵzalar (klass sırtınan qoljetimli)
// Maǵlıwmatlardı ornatıw ushın metod (setter) void setData(string haywan_atı, int haywan_jası) {
atı = haywan_atı; jası = haywan_jası;
}
// Maǵlıwmatlardı kórsetiw ushın metod (getter/displayer) void showData() {
cout << "Haywannıń atı: " << atı << endl;
cout << "Onıń jası: " << jası << " de" << endl;
}
}; // Klass járiyalaw ; (noqatlı útir) menen tamamlanadı
int main() {
// 2. Klass tiykarında obyektler jaratıw
UyHaywanı iyt; // 'ıyt' - bul UyHaywanı klasınıń bir obyekti UyHaywanı pıshıq; // 'pıshıq' - bul ekinshi obyekt
// 3. Obyektlerdiń ashıq metodlarınan paydalanıw cout << "Birinshi haywan maǵlıwmatları:" << endl; iyt.setData("Aq tós", 3);
iyt.showData();
cout << "\nEkinshi haywan maǵlıwmatları:" << endl; pıshıq.setData("Mısqı", 2);
pıshıq.showData();
//Tómendegi kod qáte beredi, sebebi 'atı' - private!
//pıshıq.atı = "Jańa at"; // QÁTE!
return 0;
}
2-Mısal: Konstruktor járdeminde obyektlerdi tez jaratıw (Student klası)
Konstruktor - bul obyekt jaratılǵan waqıtta avtomat túrde iske túsetuǵın arnawlı metod. Onıń atı klass atı menen birdey boladı hám ol obyekt qásiyetlerin baslanǵısh mánisler menen támiyinlew ushın júdá qolaylı.
#include <iostream> #include <string>
using namespace std;
class Student { private:
string atı_familıyası; int kursı;
public:
//Bul - Konstruktor!
//Obyekt jaratılǵanda oǵan mánislerdi birden berip jiberemiz
Student(string at, int k) {
cout << at << " atlı student obyekti jaratıldı..." << endl; atı_familıyası = at;
kursı = k;
}
void showInfo() {
cout << "Student: " << atı_familiyası << “, Kursı: “ << kursı <<
endl;
}
};
int main() {
// Konstruktorǵa mánisler berip, obyektlerdi birden jaratamız
Student student1(“Alisher Joldasbaev”, 2); Student student2(“Ziyada Qurbanbaeva”, 1);
cout << “\nStudentler dizimi:” << endl; student1.showInfo(); student2.showInfo();
return 0;
}
3-Mısal: Metodlar ishinde logikanı isletiw (Sheńber klası)
Klass metodları tek maǵlıwmatlardı ornatıp yamasa kórsetip qoymastan, olar ústinde esap-kitap jumısların da orınlay aladı.
#include <iostream>
using namespace std;
class Shenber { private:
double radius;
const double PI = 3.14159; // Klass ishindegi konstant
public:
//Konstruktor Shenber(double r) {
radius = r;
}
//Sheńberdiń uzınlıǵın esaplaytuǵın metod double esaplaUzınlıq() {
return 2 * PI * radius;
}
//Sheńberdiń maydanın esaplaytuǵın metod double esaplaMaydan() {
return PI * radius * radius;
}
};
int main() { double r;
cout << "Sheńberdiń radiusın kirgiziń: "; cin >> r;
Shenber s1(r); // Radiusı 'r' ge teń bolǵan sheńber obyekti
cout << "Sheńberdiń uzınlıǵı: " << s1.esaplaUzınlıq() << endl; cout << "Sheńberdiń maydanı: " << s1.esaplaMaydan() << endl;
return 0;
}
Ámeliy tapsırmalar:
1.Telefon klasın jaratıw: markası (string), modeli (string) hám bahası (double) degen private qásiyetleri bar Telefon klasın jaratıń. Obyektti konstruktor arqalı jaratıń. Jáne telefonInfo() degen public metodı bolsın, ol telefonnıń barlıq maǵlıwmatların ekranǵa shıǵarsın. main() funkciyasında usı klastan eki túrli telefon obyekti jaratıp kórsetiń.
2.Kalkulyator klası: Eki private san saqlaytuǵın (san1, san2) ápiwayı Kalkulyator klasın dúziń. Konstruktor arqalı bul sanlarǵa mánis beriń. Keyin, qosıw(), alıw(), kóbeytiw(), bóliw() degen public metodların jaratıń. Hár bir metod sol eki san ústinde sáykes ámeldi orınlap, nátiyjeni qaytarsın. main() funkciyasında bir obyekt jaratıp, barlıq ámellerdiń nátiyjesin ekranǵa shıǵarıń.
3.Sportshı klası: atı, sport_túri hám jetiskenlikleri_sanı degen qásiyetleri bar Sportshı klasın jaratıń. Klass ishinde jetiskenlikQosıw() degen metod bolsın, ol hár shaqırılǵanda sportshınıń jetiskenlikleri sanın birge arttırsın. Jáne, onıń barlıq maǵlıwmatların kórsetetuǵın showInfo() metodı bolsın. main() funkciyasında bir sportshı obyekti jaratıp, onıń jetiskenliklerin birneshe márte arttırıp, nátiyjeni tekserip kóriń.
