Guruh talabasi Bazarbayev Jamshid



Download 28,61 Kb.
Sana27.01.2023
Hajmi28,61 Kb.
#903455
Bog'liq
2 5233564688381381229


911-20 guruh talabasi
Bazarbayev Jamshid
Dasturlash fanidan
Laboratoriya №2.
Ikapsulyatsiya
Inkapsulyatsiya - bu ma'lumotlar va ushbu ma'lumotlarni boshqaradigan kodni birlashtiruvchi va ikkalasini ham tashqi buzilish yoki noto'g'ri foydalanishdan himoya qiluvchi mexanizm. Ob'ektga yo'naltirilgan dasturlashda kod va ma'lumotlar birlashtirilishi mumkin; bu holatda "qora quti" deb ataladigan narsa yaratilayotgani aytiladi. Kodlar va ma'lumotlar shu tarzda birlashtirilganda ob'ekt yaratiladi. Boshqacha qilib aytganda, ob'ekt - bu kapsulani qo'llab-quvvatlovchi narsa.
Enkapsulyatsiyani amalga oshirish.C ++ da inkapsulatsiya ma'lumotlar va ushbu ma'lumotlar bilan ishlaydigan funktsiyalarni birlashtirgan sinf sifatida amalga oshiriladi. Ma'lumotlar asosan shaxsiy deb e'lon qilinadi, shuning uchun ularga sinfdan tashqarida kirish mumkin emas. Usullar yoki funktsiyalar ommaviy deb e'lon qilinadi va ularga sinf ob'ekti yordamida kirish mumkin.Biroq, biz to'g'ridan-to'g'ri shaxsiy a'zolarga kira olmaymiz va bu ma'lumotlarni yashirish deb ataladi. Bu amalga oshirilgandan so'ng ma'lumotlar himoyalanadi va ularga faqat ma'lumotlar e'lon qilingan ma'lum sinf funktsiyalari orqali kirish mumkin.
// Namuna dasturi
#iostream> ni o'z ichiga oladi
#include
std nomidan foydalanish;
// kapsulani namoyish qilish uchun misol sinf
class sampleData {
int num;
char ch;
jamoat:
// ma'lumotlar qiymatlarini o'qish uchun getter usullari
int getInt () const {
qaytish raqami;
}
char getCh () const {
qaytish ch;
}
// ma'lumotlar qiymatlarini o'rnatish uchun setter usullari
bekor setInt (int num) {
this-> num = num;
}
bekor setCh (char ch) {
bu-> ch = ch; }};
int main () {
sampleData s;
s.setInt (100);
s.setCh ('Z');
cout << "num =" << s.getInt () << endl;
cout << "ch =" << s.getCh ();
qaytish 0;
}
Chiqish:
raqam = 100
ch = Z

Yuqoridagi dasturda biz ikkita a'zoning o'zgaruvchisini getter va setter usullari bilan bir qatorda birlashtirdik. va bu kapsulaga misol.Biz ikkita o'zgaruvchini e'lon qildik, ya'ni. tashqi va tashqi ko'rinishga ega bo'lmasliklari uchun num va ch xususiy o'zgaruvchilar sifatida. Ular faqat biz hammaga ochiq deb e'lon qilgan xususiyatlar uchun mavjud. Shu tarzda biz maxfiy ma'lumotlar a'zolarini sinfdagi shaxsiy o'zgaruvchilar sifatida yashaymiz.


C ++ da inkapsulyatsiyani yaxshiroq tushunish uchun yana bir misolni ko'rib chiqamiz.
#iostream> ni o'z ichiga oladi
#include
std nomidan foydalanish;
// Sinf hisoblari: ma'lum bir xodimning ish haqi to'g'risidagi ma'lumotlarni o'z ichiga oladi.
sinf hisoblari {
int empId;
ikki martalik ish haqi, asosiy, nafaqalar, ajratmalar;
jamoat:
Hisoblar (int empId): empId (empId) {}
// ish haqi to'g'risidagi ma'lumotni o'qing
void readEmployeeInfo (int empId) {
cout << "Vvedite bazovuyu sotrudnika" << empId << ":"; cin >> asosiy;
cout << "nadbavok:"; cin >> nafaqalar;
cout << "uderjaniy:"; cin >> ajratmalar;
}
// ish haqini hisoblash
double calcSalary () {
ish haqi = asosiy + nafaqalar - ajratmalar;
ish haqini qaytarish;
}
// tafsilotlarni ko'rsatish
bo'sh ekran () {
ish haqi = hisoblashSalary ();
cout << "Sotrudnik:" << empId << endl;
cout << "Zarplata:" << ish haqi;
}
};
int main ()
{
Hisob qaydnomalari (1);
acc.readEmployeeInfo (1);
acc.display ();
}
Chiqish:
1: 10000 xodim uchun bazani kiriting
nafaqalar: 4324.43
ajratmalar: 1000
Xodim: 1
Ish haqi: 13324.4
Bu kapsulaning yana bir misoli. Yuqorida ko'rsatilgandek, bizda hisob ma'lumotlari va ushbu ma'lumotlar bilan ishlaydigan barcha funktsiyalarni bitta Hisob sinfiga birlashtirgan Hisoblar klassi mavjud. Asosiy funktsiyada biz ushbu sinfning ob'ektini yaratib, kerakli ma'lumotlarni olish uchun funktsiyalarga kirishimiz mumkin.Endi, agar ba'zi boshqa sinflar xodimlarning ma'lumotlari hisob ma'lumotlariga kirishni xohlasa, ular buni to'g'ridan-to'g'ri qila olmaydi. U "Hisob qaydnomasi" sinfining ob'ektini yaratishi kerak bo'ladi va u faqat ochiq bo'lgan elementlarga kirish imkoniyatiga ega bo'ladi. Shunday qilib, inkapsulyatsiya yordamida biz ma'lumotlarga kirishni boshqarishni kafolatlaymiz, shuningdek ma'lumotlar yaxlitligini kafolatlaymiz.
Enkapsulyatsiya va abstraktsiya o'rtasidagi farq
Abstraktsiya va inkapsulyatsiya bir-biri bilan chambarchas bog'liqdir. Inkapsulyatsiya ushbu ma'lumotlar bilan ishlaydigan ma'lumotlar va usullarni birlashtirib, abstraktsiyaga yordam beradi.
Inkapsulyatsiya mavhumligi
Ma'lumotlarni yashiradi Amalga oshirishni yashiradiMa'lumotlar va usullarni birgalikda birlashtiradi Foydalanuvchiga abstrakt interfeysni taqdim etadi, u faqat kerakli narsalarni aks ettiradiAbstraktsiyaga yordam kodni qayta ishlatishda va xavfsizlikda yordam beradi.Ma'lumotlar a'zolari va usullariga kirishni aniqlaydigan kirish spetsifikatorlari bo'lgan sinf sifatida amalga oshiriladi. Mavzu qilib bo'lmaydigan mavhum sinf va interfeyslar sifatida amalga oshiriladi.
Xulosa.Inkapsulyatsiya - bu OOPning eng muhim xususiyatlaridan biri, chunki bu bizga ma'lumotlarni yashirish imkoniyatini beradi. Bu, o'z navbatida, ma'lumotlarni xavfsizroq qiladi va zararli foydalanishdan himoya qiladi.Inkapsulyatsiya abstraktsiyaga yordam beradi, shunda biz oxirgi foydalanuvchini faqat kerakli interfeys bilan ta'minlay olamiz va shunga muvofiq boshqa tafsilotlarni yashiramiz. Ushbu o'quv qo'llanmada biz abstraktsiya va inkapsulyatsiya tushunchalarini ko'rib chiqdik

#include


#include
using namespace std;
class talaba {
protected:
char * name;
int age;
public:
talaba (char * n, int a): name(n), age(a) { }
virtual void Show() = 0; };
class student: public talaba {
public:
student(char * n, int a): talaba(n,a) { }
void Show() {
cout << "Kim: " << name<<"Yoshi: "<class Erkinov: public talaba
{
public:
Erkinov (char * n, int a): talaba(n,a) { }
void Show()
{
cout << " Jamshid Bazarbayev (yonalishi): " << name << age << endl; } };
class qayerdan: public talaba
{
public:
qayerdan(char * n, int a): talaba(n,a) { }
void Show()
{
cout << "Qayerdan (xorazm): " << name << age << endl; } };
class qayerdaoqiydi: public talaba
{
public:
qayerdaoqiydi (char * n, int a): talaba(n,a) { }
void Show()
{
cout << "Qayerda o'qiydi:" << name << age << endl;
}
};
int main()
{
talaba *w[3];
w[0] = new student("Jamshid Bazarbayev ", 19);
w[1] = new Erkinov ("Komputer Injineringi ", 2020);
w[2] = new qayerdan("Gurlan ",2002);
w[3] = new qayerdaoqiydi("TATUUF ", 2020);
w[0]->Show();
w[1]->Show();
w[2]->Show();
w[3]->Show();
delete w[0];
delete w[1];
delete w[2];
delete w[3];
return 0;
}


Download 28,61 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