Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2-semestr / 1-ameliy_jif

.pdf
Скачиваний:
0
Добавлен:
20.09.2026
Размер:
222 Кб
Скачать
☆
1-ámeliy. Inkapsulyaciya hám miyrasxorlıq. Polimorfizm. Tiykar
klass aǵzalarına baylanıslardı basqarıw.
Jumıstıń maqseti: Obyektke Baǵdarlanǵan Programmalastırıwdıń (OBP)
úsh tiykarǵı principi: Inkapsulyaciya, Miyrasxorlıq (Inheritance) hám Polimorfizmdi ámeliyatta qollanıwdı úyreniw. C++ tilinde klasslar arasındaǵı
qatnasıqlardı (ata-ana hám bala klass), ruqsat modifikatorların (public,
protected, private) hám virtual funkciyalardı durıs paydalanıw kónlikpelerin qáliplestiriw. Kodtıń qayta qollanılıwın (reusability) hám keńeytiwsheńligin
(extensibility) arttırıw usılların ózlestiriw.
1. Inkapsulyaciya: Maǵlıwmatlardı (atributlardı) jasırıw hám olarǵa tek
metodlar (Getter/Setter) arqalı ruqsat beriw. Maqset – qáwipsizlik.
2. Miyrasxorlıq: Bir klastıń (Tiykar klass) qásiyetlerin ekinshi klastıń
(Tuwındı klass) ózine alıwı. "IS-A" (bolıp tabıladı) qatnası.
3. Polimorfizm: Bir interfeystiń (metod atınıń) hár túrli obyektlerde hár
qıylı islew qábileti (Virtual funkciyalar arqalı).
4. Ruqsat modifikatorları:
private: Tek klastıń ishinde. protected: Klass hám onıń miyrasxorlarında. public: Hámme jerde.
ÁMELIY BÓLIM:
C++ tilinde OBP principlerin basqıshpa-basqısh qollanamız. 1-mısal: Inkapsulyaciya (Bank Esabı) Kod:
#include <iostream>
using namespace std;
class BankAccount {
private:
double balance; // Jasırın maǵlıwmat
public:
BankAccount(double b) {
if (b >= 0) balance = b;
else balance = 0;
}
// Getter (Oqıw ushın)
double getBalance() {
return balance;
}
// Setter (Jazıw ushın - tekseriw menen)
void deposit(double amount) {
if (amount > 0) {
balance += amount;
cout << "Depozit: " << amount << endl;
} else {
cout << "Qáte summa!" << endl;
}
}
};
int main() {
BankAccount acc(100);
// acc.balance = 1000; // Qáte! Private.
acc.deposit(50);
cout << "Balans: " << acc.getBalance() << endl; // 150
return 0;
}
Túsindirme: Inkapsulyaciya – bul qáwipsizlik. Biz `balance` (aqsha) ózgeriwshisin `private` (jasırın) etip qoydıq. Sebebi, eger ol `public` (ashıq) bolsa, qálegen adam `acc.balance = -500;` dep jazıp, bankti bankrot etiwi múmkin. Biz bunıń aldın alıw ushın `deposit` (aqsha salıw) metodın jarattıq. Bul
metod dáslep "summa oń ba?" dep tekseredi, keyin ǵana balanstı ózgertedi. Paydalanıwshı balanstı tek `getBalance()` arqalı kóre aladı, biraq tikkeley
ózgerte almaydı.
2-mısal: Miyrasxorlıq (Transport) Kod:
class Vehicle {
protected: // Miyrasxorlar kóre aladı
int speed;
public:
Vehicle() : speed(0) {}
void move() { cout << "Hákeketlenip atır. Tezlik: " << speed << endl; }
};
// Tuwındı klass
class Car : public Vehicle {
public:
void setSpeed(int s) { speed = s; } // Protected-ke ruqsat bar
void honk() { cout << "Signal: Bip-bip!" << endl; }
};
int main() {
Car myCar;
myCar.setSpeed(60);
myCar.move(); // Ata-anadan kelgen metod
myCar.honk(); // Óziniń metodı
return 0;
}
Túsindirme: Miyrasxorlıq – bul kodtı qayta jazbaw ushın kerek. Bizde
`Vehicle` (Transport) degen ulıwma klass bar. Onda `speed` (tezlik) hám `move()` (júriw) bar. Biz `Car` (Avtomobil) klasın jaratqanda, oǵan qaytadan
`speed` hám `move` jazıwdıń keregi joq, sebebi Avtomobil – bul Transport (`:
public Vehicle`). Biz tek `Car` ǵa tán bolǵan `honk()` (signal beriw) metodın
qosamız. Sonday-aq, `speed` ózgeriwshisi `protected` bolǵanı ushın, `Car` onı kóre aladı (eger `private` bolǵanda kóre almas edi).
3-mısal: Polimorfizm (Shape) Kod:
class Shape {
public:
// Virtual funkciya - polimorfizm ushın shárt
virtual void draw() {
cout << "Figura sızıldı." << endl;
}
};
class Circle : public Shape {
public:
void draw() override { // Qayta anıqlaw
cout << "Dóńgelek sızıldı." << endl;
}
};
class Rectangle : public Shape {
public:
void draw() override {
cout << "Tórtmúyeshlik sızıldı." << endl;
}
};
int main() {
Shape* s1 = new Circle();
Shape* s2 = new Rectangle();
s1->draw(); // Dóńgelek sızıldı (Polimorfizm)
s2->draw(); // Tórtmúyeshlik sızıldı
delete s1; delete s2;
return 0;
}
Túsindirme: Polimorfizm – bul "kóp formalıq". Bizde `Shape` (Figura) degen ulıwma túsinik bar. Dóńgelek te, Tórtmúyeshlik te – figura. Biraq olardıń sızılıwı (`draw`) hár qıylı. Biz `Shape` klasında `virtual void draw()` dep
jazamız. Yaǵnıy: "Meniń balalarım bul metodtı ózinshe ózgertedi (override)". `main` funkciyasında biz `Shape*` (Figura kórsetkishi) arqalı `Circle` hám
`Rectangle` obyektlerin saqlaymız. `s1->draw()` degenimizde, kompyuter `s1`
diń haqıyqıy tipi Dóńgelek ekenin bilip, Dóńgelektiń `draw` metodın shaqıradı.
Bul bir ǵana buyrıq penen hár qıylı háreket orınlawǵa imkaniyat beredi.
ÁMELIY TAPSÍRMALAR
1. `Person` klasın (atı, jası) jaratıń. Atributlar `private`, metodlar `public`
bolsın.
2. `Animal` klasın hám onnan `Cat` klasın miyras alıń. `Cat` klasında
`meow()` metodı bolsın.
3. `Rectangle` klasın jaratıń (uzınlıq, eni). `getArea()` metodı maydandı
qaytarsın.
4. `Student` klasın jaratıń. Konstruktor arqalı atın hám bahaların kirgiziń.
5. `Counter` klasın jaratıń. `increment()` metodı sanna 1 qossın, `getValue()`
kórsetsin.
6. `Car` klasın jaratıń. `speed` atributı bolsın. `accelerate(int)` metodı tezlikti
asırsın.
7. `Book` klasın jaratıń (atı, avtorı). `display()` metodı maǵlıwmattı
shıǵarsın.
8. `Shape` klasında `virtual void area()` metodın jaratıń. `Circle` klasında
onı realizaciya etiń.
9. Ortasha tapsırmalar:
10. `BankAccount` klasına `withdraw(amount)` metodın qosıń. Balans
jetkiliksiz bolsa qáte shıǵarsın.
11. `Employee` (Xızmetker) klasın jaratıń. `Manager` klası onnan miyras alıp,
`bonus` qossın.
12. `Vehicle` klasınan `Car` hám `Bike` klassların alıń. `move()` metodın
hárqaysısı ózinshe jazsın (Polimorfizm).
13. `LoginSystem` klasın jaratıń. `password` atributı `private` bolsın.
`checkPassword(string)` metodı durıslıǵın teksersin.
14. `SmartPhone` klasın jaratıń. `Battery` klasınan kompoziciya (ishki
obyekt) retinde paydalanıń.
15. `Temperature` klasın jaratıń. Celciyden Farengeytke ótkiziwshi metod
jazıń.
16. `Library` klasın jaratıń. Ishinde `Book` obyektleriniń massivi bolsın.
Kitap qosıw hám kórsetiw metodların jazıń.
Соседние файлы в папке 2-semestr