Dasturlash II 3-hafta mavzu: Ob’yektga yo‘naltirilgan fikrlash uslubi



Yüklə 2,27 Mb.
səhifə16/18
tarix11.11.2023
ölçüsü2,27 Mb.
#132197
1   ...   10   11   12   13   14   15   16   17   18
D2 maruza-3 Ob’ektga yo‘naltirilgan fikrlash. String sinfi, ob’yektlar massivi

classPerson
{
private:
Person supervisor; //The type for the data is the class itself
...
}
Agar, 3.14-rasmda ko`rsatilganidek, insonda bir nechta rahbar mavjud bo`lsa, rahbarlarni saqlash uchun massivdan foydalanishimiz mumkin (masalan, 10 ta rahbar).

3.14-rasm. Insonning bir nechta rahbari bo`lishi mumkin.


Eslatma. Shu o`rinda jamlanishlar va kompozitsiyalar sinflardan foydalangan holda, bir xil ko`rinishda taqdim etiladi, biz ularni farqlamaymiz, ularning har ikkalasini ham kompozitsiya deb ataymiz.


3.9. Amaliy qism: StackOfIntegers sinfi
Key Point. Bu qismda steklarni modellashtiruvchi sinf loyihalashtiriladi.
O`z tarkibida “oxiri kelgan birinchi chiqadi” qabilida ma’lumotlarni saqlovchi, ma’lumotlar tuzilmasi – stekka qayta murojaat qilamiz (3.15-rasm).

3.15-rasm. Stek o`zida “oxiri kelgan birinchi chiqadi” qabilida ma’lumotlarni saqlaydi
Steklar ko`pgina dasturlarga ega. Masalan, kompilyator funksiyalarni chaqirish jarayonlarini amalga oshirish uchun stekdan foydalanadi. Funksiya chaqirilganda, uning parametrlari va lokal o`zgaruvchilari stekka ko`chiruvchi faol yozuv maydoniga joylashtiriladi. Funksiya boshqa bir funksiyani chaqirganida esa, yangi funksiyaning parametrlari va lokal o`zgaruvchilari stekka ko`chiruvchi yangi faol yozuv maydoniga joylashtiriladi. Funksiya o`z ishini tugatib, chaqiruvchiga qiymatni yuborganidan so`ng, u joylashgan faol yozuv maydoni stekdanolinadi.
Biz steklarni modellashtiruvchi sinf yaratishimiz mumkin. Soddaroq qilib olish uchun, faraz qilaylik, stek o`zida int qiymatlarni saqlaydi. Shunday qilib, stek sinfining nomini StackOfIntegersdeb olamiz. Sinf uchun UML diagramma 3.16-rasmda keltirilgan.


3.16-rasm.StackOfIntegers sinfi stekda saqlanuvchilarni inkapsulyatsiyalaydi va steklarni boshqarish operatsiyalarini taqdim etadi.
Faraz qilaylik, 3.14-kodli ro`yxatda ko`rsatilgani kabi sinf mavjud. Keling, 3.15-kodli ro`yxatda sinfdan foydalanib (7-qator) tarkibida o`nta butun sonlar (0, 1, 2, … 9)ni saqlovchi stekni ishlatuvchi (9-10-qatorlar) va ularni teskari tartibda ko`rsatuvchi (12-13-qatorlar) testlash dasturini tuzamiz.
3.14-kodli ro`yxat. StackOfIntegers.h
1 #ifndef STACK_H
2 #define STACK_H
3
4class StackOfIntegers
5 {
6public:
7 StackOfIntegers();
8 bool isEmpty() const;
9 int peek() const;
10 void push(int value);
11 int pop();
12 int getSize() const;
13
14private:
15 int elements[100];
16 intsize;
17 };
18
19 #endif
3.15-kodli ro`yxat. TestStackOfIntegers.cpp
1 #include
2 #include "StackOfIntegers.h"
3 using namespace std;
4
5 int main()
6 {
7 StackOfIntegers stack;
8
9 for (int i = 0; i <10; i++)
10 stack.push(i);
11
12 while (!stack.isEmpty())
13 cout <" ";
14
15 return 0;
16 }



Xo`sh, StackOfIntegers sinfini qanday tadbiq qilamiz? Stek elementlari elements deb nomlangan massivda saqlanadi. Biz stek hosil qilganimizda massiv ham hosil qilinadi. Parametrsiz no-arg konstruktor sizeni0 teng qiymat bilan yuklaydi. size o`zgaruvchisi stekdagi elementlar sonini hisoblaydi va size-1 stekning yuqori elementi indeksi sanaladi (3.17-rasm). size 0 ga teng bo`lgan bo`sh stek uchun.



3.17-rasm. StackOfIntegers sinfi stek tarkibini inkapsulyatsiyalaydi va steklarni boshqarish operatsiyalarini taqdim etadi.
StackOfIntegers sinfi 3.16-kodli ro`yxatda tadbiq etilgan.
3.16-kodli ro`yxat. StackOfIntegers.cpp
1 #include "StackOfIntegers.h"
2
3 StackOfIntegers::StackOfIntegers()
4 {
5 size = 0;
6 }
7
8 bool StackOfIntegers::isEmpty() const
9 {
10 return size == 0;
11 }
12
13 int StackOfIntegers::peek() const
14 {
15 return elements[size - 1];
16 }
17
18 void StackOfIntegers::push(int value)
19 {
20 elements[size++] = value;
21 }
22
23 int StackOfIntegers::pop()
24 {
25 return elements[--size];
26 }
27
28 int StackOfIntegers::getSize() const
29 {
30return size;
31 }



Yüklə 2,27 Mb.

Dostları ilə paylaş:
1   ...   10   11   12   13   14   15   16   17   18




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin