Муҳаммад ал-Хоразмий номидаги тату самарқанд филиали



Download 218,04 Kb.
Sana02.06.2022
Hajmi218,04 Kb.
#629960
Bog'liq
Дастурлаш 2.2 машгулот


Муҳаммад ал-Хоразмий номидаги ТАТУ Самарқанд филиали
Лаборатория машғулотлари

ФАН





ДАСТУРЛАШ (С++)

Ҳафта рақами





2

Машғулот мазмуни




Инкапсуляция имкониятларини кўрсатадиган дастур тузиш.

Мақсад:




  1. Инкапсуляция тўғрисида маълумотга эга бўлиш;


  2. Маълумотлар майдонини инкапсуляциясини ўрганиш;

  3. Маълумотлар майдони инкапсуляциясини қўллаган ҳолда дастурлар тузиш.

Маълумотларт майдонининг инкапсуляцияси.
Синф хусусиятлари (маълумотлар майдони)ни тўғридан-тўғри алмаштирилишини олдини олиш учун, мазкур майдонларни ёпиқ ҳолатда эълон қилиш мақсадга мувофиқ бўлади, буни эса С++ нинг калит сўзи private ёрдамида амалга оширилади. Бу ўз навбатида маълумотлар майдонининг инкапсуляцияси ҳисобланади. Circle синфидаги radius маълумот майдонини хусусий ҳолатда эълон қилган ҳолда синфни қуйидагича эълон қилиш мумкин:


class Circle
{
public:
Circle();
Circle(double);
double getArea();
private:
double radius;
};

Хусусий ҳолатдаги маълумотлар майдонига синф ташқарисидан тўғридан-тўғри мурожаат қилиш мумкин эмас, лекин кўп ҳолатларда мазкур маълумотларни ўзгартириш керак бўлади. Хусусий маълумотларни намойиш этиш учун get функциясини қўллаб маълумотларни олиш имконини яратинг, ҳамда маълумотлар майдонини ўзгартириш учун set функциясини қўллаш мақсадга мувофиқ бўлади.


get функцияси қуйидагича синтаксисга эга:
returnType getPropertyName()

Агарда returnType - bool, бўлса get у ҳолда функция қуйидагича эълон қилинади:


bool isPropertyName()

set функцияси қуйидагича синтаксисга эга:


void setPropertyName(dataType propertyValue)


1-Машқ. Радиуси хусусий бўлган синф яратган ҳолда мазкур маълумотлар майдонига аксессор ва мутатор функциялар ёрдамида уланиб маълумотларни ўзгартирадиган дастур яратинг.


UML диаграммаси:





Дастур коди:

Листинг 1 CircleWithPrivateDataFields.h


1 #ifndef CIRCLE_H
2 #define CIRCLE_H
3
4 class Circle
5 {
6 public:
7 Circle();
8 Circle(double);
9 double getArea();
10 double getRadius();
11 void setRadius(double);
12
13 private:
14 double radius;
15 };
16
17 #endif
Листинг 2 CircleWithPrivateDataFields.cpp

1 #include "CircleWithPrivateDataFields.h"


2
3 // Konstruktor obyekta Circle
4 Circle::Circle()
5 {
6 radius = 1;
7 }
8
9 // Konstruktor s parametrom
10 Circle::Circle(double newRadius)
11 {
12 radius = newRadius;
13 }
14
15 // Vozvrasheniye ploshadi kruga
16 double Circle::getArea()
17 {
18 return radius * radius * 3.14159;
19 }
20
21 // Vozvrasheniye radiusa kruga
22 double Circle::getRadius()
23 {
24 return radius;
25 }
26
27 // Izmeneniye radiusa kruga
28 void Circle::setRadius(double newRadius)
29 {
30 radius = (newRadius >= 0) ? newRadius : 0;
31 }

getRadius() функцияси (22–25 сатрлар) радиусни қайтаради, setRadius(newRadius) (строки 28–31) функцияси эса радиус қийматини ўзгартиради.


Листинг 3 TestCircleWithPrivateDataFields.cpp


1 #include


2 #include "CircleWithPrivateDataFields.h"
3 using namespace std;
4
5 int main()
6 {
7 Circle circle1;
8 Circle circle2(5.0);
9
10 cout << "Ploshad kruga s radiusom "
11 << circle1.getRadius()<<" = "<12 cout << " Ploshad kruga s radiusom "
13 <" = "<< circle2.getArea()<14
15 // Modify circle radius
16 circle2.setRadius(100);
17 cout << " Ploshad kruga s radiusom "
18 <" = "<< circle2.getArea()<19
20 return 0;
21 }


Натижа:

Ploshad kruga s radiusom 1 = 3.14159


Ploshad kruga s radiusom 5 = 78.5397
Ploshad kruga s radiusom 100 = 31415.9



ДАСТУРЛАШ (С++) фанидан 2.2-лаборатория машғулотлари

Download 218,04 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish