Muhammad al-Xorazmiy nomidagi TATU Samarqand filiali LABORATORIYA MASHG‘ULOTLARI FAN HAFTA RAQAMI MASHG‘ULO T MAZMUNI MAQSAD: DASTURLASh (C++) 2 SINF A’ZOLARI (A’ZO FUNKSIYA VA O‘ZGARUVCHILAR) DAN FOYDALANIB DASTUR TUZISH. 1. Sinf a’zolarini o‘rganish; 2. Sinf va dasturning ishlab chiqish implementatsiyasini o‘rganish; 3. Sinf a’zolarini qo‘llagan holda dasturlar tuzish. jarayonini Sinf tanasining implementatsiyasi. C++ da sinf tanasini implementatsiya qilish imkoni mavjud, Sinfni e’lon qilishda faqatgina sinfdagi ma’lumotlar maydonini, konstruktorlarni, funksiyalarning prototiplarini ko‘rsatib o‘tish hisoblanadi, sinfning realizatsiyasi esa konstruktor va funksiyalarni to‘liq ko‘rsatadi. Sinfni e’lon qilish va realizatsiya qilish ikkita har xil fayllarda yozilishi mumkin. Faqat har ikkala fayl ham bir xil nomalanishi zarur. Sinfni e’lon qilish faylining kengaytmasi .h (h sarlavha degani) bo‘ladi, realizatsiyaning kengaytmasi esa .cpp bo‘ladi. 1-Mashq. Ekranda doira yuzasini chop etadigan dasturni Sinf tanasini implementatsiya qilish orqali tuzilsin. Bu yerda Circle sinfi e’lon qilinishi Circle.h faylida sinf a’zolari esa Circle.cpp faylida yozilishi dasturning kliyent qismi esa main.cpp faylida yozilsin. Dastur kodi: Listing 2.1 Circle.h 1. class Circle 2. { 3. public: ДАСТУРЛАШ (С++) фанидан 2.1-лаборатория машғулотлари 4. // Radius kruga 5. double radius; 6. 7. // konstruktor po umolchaniyu 8. Circle(); 9. 10. // konstruktor s parametrom 11. Circle(double); 12. 13. // Vozvrasheniye ploshadi kruga 14. double getArea(); 15. }; Listing 2.2 Circle.cpp 1. #include "Circle.h" 2. 3. // Construct a default circle object 4. Circle::Circle() 5. { 6. radius = 1; 7. } 8. 9. // Construct a circle object 10. Circle::Circle(double newRadius) 11. { 12. radius = newRadius; 13. } 14. 15. // Return the area of this circle 16. double Circle::getArea() 17. { 18. return radius * radius * 3.14159; 19. } Simvol :: - operator bo‘lib, sinf a’zolarini sinfda ko‘rsatish uchun qo‘llaniladi. Bu yerda Circle:: har bir konstruktor va funksiyaning Circle sinfiga mansubligi, kompilyatorga mazkur konstruktorlar va funksiyalar Circle sinfida e’lon qilinganligini ko‘rsatadi. 2.3 listingda Circle sinfining realizatsiyasi ko‘rsatilgan. Listing 2.3 main.cpp 1. 2. 3. 4. 5. 6. 7. 8. #include <iostream> #include "Circle.h" using namespace std; int main() { Circle circle1; Circle circle2(5.0); ДАСТУРЛАШ (С++) фанидан 2.1-лаборатория машғулотлари 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. cout << << cout << << "Ploshad kruga circle1.radius "Ploshad kruga circle2.radius pri radiuse " << " ravna " << circle1.getArea() << endl; pri radiuse " << " ravna " << circle2.getArea() << endl; // Izmenennoye radius circle2.radius = 100; cout << "Ploshad kruga pri radiuse " << circle2.radius << " ravna " << circle2.getArea() << endl; return 0; } Rezultat: Ploshad kruga pri radiuse 1 ravna 3.14159 Ploshad kruga pri radiuse 5 ravna 78.5397 Ploshad kruga pri radiuse 100 ravna 31415.9 ДАСТУРЛАШ (С++) фанидан 2.1-лаборатория машғулотлари