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


Maslahat. Agar a’zo funksiya ma’lumotlar maydonini o`zgartirmasligi kerak bo`lsa, uni const



Yüklə 2,27 Mb.
səhifə14/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

    Bu səhifədəki naviqasiya:
  • include
Maslahat. Agar a’zo funksiya ma’lumotlar maydonini o`zgartirmasligi kerak bo`lsa, uni const funksiya sifatida aniqlang. BMI dagi barcha a’zo funksiyalar const funksiyalar.

Faraz qilaylik, BMI sinf yaratilgan. 3.12-kodli ro`yxat bu sinfni sinovdan o`tkazuvchi dastur vazifasini bajarib beradi.


3.12-kodli ro`yxat. UseBMIClass.cpp
1 #include
2 #include "BMI.h"
3 using namespace std;
4
5 int main()
6 {
7 BMI bmi1("John Doe", 18, 145, 70);
8 cout <<"The BMI for "<< bmi1.getName() <<" is "
9 <" " << bmi1.getStatus() << endl;
10
11 BMI bmi2("Susan King", 215, 70);
12 cout <<"The BMI for "<< bmi2.getName() <<" is "
13 <" " + bmi2.getStatus() << endl;
14
15 return 0;
16 }

7-qator Jon Dou uchun bmi1 ob’yektni, 11-qator Syuzan King uchunbmi2 ob’yektni hosil qiladi. BMI ob’yektidan vazn ko`rsatkichi to`g`risidagi ma’lumotni olish uchun getName(), getBMI() vagetStatus() – nusxa funksiyalaridan foydalanishimiz mumkin.


BMI sinfi 3.13-kodli ro`yxatdagi singari tadbiq qilinishi mumkin.
3.13-kodli ro`yxat. BMI.cpp
1 #include
2 #include "BMI.h"
3 using namespace std;
4
5 BMI::BMI(const string& newName, int newAge,
6 double newWeight, double newHeight)
7 {
8 name = newName;
9 age = newAge;
10 weight = newWeight;
11 height = newHeight;
12 }
13
14 BMI::BMI(const string& newName, double newWeight, double newHeight)
15 {
16 name = newName;
17 age = 20;
18 weight = newWeight;
19 height = newHeight;
20 }
21
22 double BMI::getBMI() const
23 {
24 const double KILOGRAMS_PER_POUND = 0.45359237;
25 const double METERS_PER_INCH = 0.0254;
26 double bmi = weight * KILOGRAMS_PER_POUND /
27 ((height * METERS_PER_INCH) * (height * METERS_PER_INCH));
28 return bmi;
29 }
30
31 string BMI::getStatus() const
32 {
33 double bmi = getBMI();
34 if (bmi <18.5)
35 return "Underweight";
36 else if (bmi <25)
37 return "Normal";
38 else if (bmi <30)
39 return "Overweight";
40 else
41 return "Obese";
42 }
43
44 string BMI::getName() const
45 {
46 return name;
47 }
48
49 int BMI::getAge() const
50 {
51 return age;
52 }
53
54 double BMI::getWeight() const
55 {
56 return weight;
57 }
58
59 double BMI::getHeight() const
60 {
61 return height;
62 }

Tana vazn ko`rsatkichi (TVK)ni hisoblashning matematik formulasi TVK ni hisoblash masalasida keltirilgan. getBMI() nusxa funksiyasi TVK (BMI)ni qaytaradi. Shu boisdan, vazn va bo`y ob’yekt tarkibida nusxa ma’lumotlar maydoni sanaladi va getBMI() funksiya TVK ni hisoblash uchun bu xususiyatlardan foydalanishi mumkin. getStatus() nusxa funksiyasi BMI ni tavsiflovchi satrni qaytaradi.


Bu misol ob’yektga yo`naltirilgan dasturlashning protsedurali dasturlashga nisbatan foydali jixatlarini ko`rsatib beradi. Protsedurali paradigma funksiyalarni loyihalashga qaratilgan. Ob’yektga yo`naltirilgan paradigma ob’yektlarga ma’lumotlarni va funksiyalarni bog`laydi. Ob’yektga yo`naltirilgan paradigmadan foydalangan holda dasturiy ta’minotni loyihalash ob’yektlar va ob’yektlar ustida amallar bajarishga qaratilgan. Ob’yektga yo`naltirilgan yondashuv protsedurali paradigma kuchini ob’yektda ma’lumotlarni operatsiyalar bilan bog`lovchi qo`shimcha o`lchovlar bilan o`ziga birlashtiradi.
Protsedurali dasturlashda ma’lumotlar va ular ustida amallar alohida ajratilgan hisoblanadi va bu uslubiyat ma’lumotlarni funksiyalarga yuborishni talab etadi. Ob’yektga yo`naltirilgan dasturlash ma’lumotlarni vaob’yekt deb ataluvchi yagona muhit ichida unga taalluqli bo`lgan amallarni joylashtiradi; bunday yondashuv protsedurali dasturlashdagi tabiiy mavjud bo`lgan ko`pgina masalalarga yechim topadi. Ob’yektga yo`naltirilgan yondashuv barcha ob’yektlari atributlar va harakatlarning har ikkalasi bilan ham bog`langan haqiqiy real olamni tasvirlovchi dasturlarni yaratadi. Ob’yektlardan foydalanish dasturdan ko`p sonli foydalanish imkoniyatlarini kengaytiradi hamda dastur ishlab chiqish va unga xizmat ko`rsatishni yengillashtiradi.



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