Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

21-AMELIY

.pdf
Скачиваний:
0
Добавлен:
05.11.2025
Размер:
285.5 Кб
Скачать

21-ámeliy. Obyektler massivi. Klaslar arasındaǵı qatnaslar.

Jumıstıń maqseti: C++ tilinde bir klass tiykarında birneshe obyektlerdi saqlaw ushın obyektler massivin jaratıwdı hám olar menen islewdi úyreniw. Sonday-aq, real dúnya sistemasın anıǵıraq modellestiriw ushın bir klastıń ishinde basqa klastıń obyektin paydalanıw arqalı klaslar arasındaǵı "bar bolıw" (has-a) qatnasın (Kompoziciya) ámelge asırıwdı meńgeriw.

Teoriyalıq maǵlıwmatlar:

1. Obyektler massivi (Array of Objects):

oBiz int, double yamasa string sıyaqlı tiykarǵı maǵlıwmat tiplerinen massiv jarata alatuǵınımız sıyaqlı, ózimiz jaratqan klaslarımızdan da

massiv jarata alamız. Bul bir tiptegi birneshe obyektlerdi bir at penen saqlaw hám olarǵa ańsat erisiw imkaniyatın beredi.

o Járiyalaw sintaksisi: KlassAtı massivAtı[elementler_sanı];

oÁhmiyetli eskertpe: Obyektler massivin jaratqanda, komplyator hár bir element ushın klastıń úndemew boyınsha (parametri) konstruktorın shaqıradı. Eger klasta tek ǵana parametrli konstruktor bolsa hám parametri konstruktor bolmasa, obyektler massivin jaratıwda qáte júz beredi.

2.Klaslar arasındaǵı qatnaslar (Relationships Between Classes):

oProgrammalarda klaslar jeke túrde islemeydi, olar kóbinese bir-biri menen baylanısta boladı. Eń kóp tarqalǵan qatnaslardan biri - bul

Kompoziciya (Composition) yamasa Agregaciya (Aggregation).

o Kompoziciya ("has-a" qatnası): Bul bir obyekt basqa bir obyektlerdiń bólimi bolǵanda júz beredi. Yaǵnıy, bir klass (konteyner) basqa bir klastıń obyektin óziniń aǵza-ózgeriwshisi retinde saqlaydı.

oMısal: Avtomobil klası Dvigatel klasınıń obyektine iye (Avtomobil has a Dvigatel). Bul jerde Dvigatel obyekti Avtomobil obyektiniń ajıralmas bólegi bolıp tabıladı. Bunday qatnaslar quramalı sistemalardı kishi, basqarıwǵa ańsat bólimlerge ajıratıwǵa járdem beredi.

Ámeliy bólim:

1-Mısal: Obyektler massivi (Xızmetker klası)

Bul mısalda biz bir mekemedegi birneshe xızmetkerdiń maǵlıwmatların saqlaw ushın Xızmetker klasınan massiv jaratamız.

#include <iostream> #include <string>

using namespace std;

class Xızmetker { private:

string atı_familıyası; string lawazımı; double is_haqı;

public:

//Obyektler massivi ushın ÚNDEMEW BOYÍNSHA (parametrli) KONSTRUKTOR

kerek!

Xızmetker() {

atı_familiyası = "Belgisiz"; lawazımı = "Belgisiz"; is_haqı = 0.0;

}

//Maǵlıwmatlardı ornatıw ushın metod

void setData(string at, string lawazım, double haqı) { atı_familıyası = at;

lawazımı = lawazım; is_haqı = haqı;

}

void showInfo() {

cout << "Xızmetker: " << atı_familıyası << ", Lawazımı: " << lawazımı << ", Is haqı: " << is_haqı << " som" << endl;

}

};

int main() {

const int XÍZMETKERLER_SANI = 3;

// 1. Xızmetker klasınan 3 elementli massiv jaratıw Xızmetker bólim[XÍZMETKERLER_SANI];

cout << "--- Xızmetkerlerdiń maǵlıwmatların kirgiziń ---" << endl;

// 2. Massiv elementlerin (obyektlerin) maǵlıwmatlar menen toltırıw bólim[0].setData("Alimov Murat", "Buxgalter", 5000000); bólim[1].setData("Sadıqova Ziyada", "Menendjer", 6500000); bólim[2].setData("Qayıpnazarov Azamat", "Programmist", 10000000);

cout << "\n--- Bólimdegi barlıq xızmetkerler dizimi ---" << endl;

// 3. Cikl arqalı massivtiń hár bir obyektiniń metodın shaqırıw for (int i = 0; i < XÍZMETKERLER_SANÍ; i++) {

bólim[i].showInfo();

}

return 0;

}

2-Mısal: Klaslar arasındaǵı qatnas - Kompoziciya (Avtor hám Kitap klasları)

Bul mısalda biz Kitap hám Avtor arasındaǵı "has-a" qatnasın sáwlelendiremiz. Hár bir Kitap obyekti óz ishinde bir Avtor obyektin saqlaydı.

#include <iostream> #include <string>

using namespace std;

// 1. Birinshi, bólek klass - Avtor class Avtor {

private:

string atı;

int tuwılgan_jılı; public:

Avtor() : atı("Belgisiz"), tuwılgan_jılı(0) {} // Úndemew boyınsha konstruktor

Avtor(string avtor_atı, int jılı) { atı = avtor_atı;

tuwılgan_jılı = jılı;

}

void showAuthorInfo() {

cout << "Avtor: " << atı << " (" << tuwılgan_jılı << "-jıl)" << endl;

}

};

// 2. Ekinshi klass - Kitap, ol óz ishinde Avtor obyektin saqlaydı class Kitap {

private:

string kitap_atı;

Avtor avtorı; // KOMPOZICIYA: Kitap klasında Avtor obyekti bar

public:

// Kitap konstruktorı Avtor obyektin de initializaciya etedi

Kitap(string k_at, Avtor k_avtor) { kitap_atı = k_at;

avtorı = k_avtor;

}

 

 

void showBookInfo() {

 

cout

<< "-------------------------

" << endl;

cout

<< "Kitap atı: \"" << kitap_atı << "\"" << endl;

avtorı.showAuthorInfo(); // Ishki obyekttiń metodın shaqırıw

cout

<< "-------------------------

" << endl;

}

 

 

};

 

 

int main() {

 

 

// Aldın

Avtor obyektlerin jaratıp alamız

Avtor tolepbergen("Tólepbergen Qayıpbergenov", 1929);

Avtor abdulla("Abdulla Qahhor", 1907);

//Endi sol avtorlardı paydalanıp, Kitap obyektlerin jaratamız Kitap qaraqalpaq_qızı("Qaraqalpaq qızı", tolepbergen);

Kitap anor("Anor", abdulla);

//Kitaplar haqqında maǵlıwmat shıǵarıw

qaraqalpaq_qızı.showBookInfo(); anor.showBookInfo();

return 0;

}

Ámeliy tapsırmalar:

1.Tovar obyektleri massivi: atı (string) hám bahası (double) degen qásiyetleri bar Tovar klasın jaratıń. main funkciyasında 4 tovardan ibarat

massiv jaratıń hám onı maǵlıwmatlar menen toltırıń. Keyin, massivti aylanıp shıǵıp, eń qımbat tovardıń atın hám bahasın tabatuǵın programma dúziń.

2. Kompoziciya: Kompyuter hám Processor:

o modeli (string) hám jiyiligi_GHz (double) degen qásiyetleri bar Processor klasın jaratıń.

o markası (string) hám cpu (Processor tipindegi obyekt) degen qásiyetleri bar Kompyuter klasın jaratıń.

oKompyuter klasınıń konstruktorı markasın hám Processor obyektin parametr etip alsın.

omain funkciyasında bir Processor obyekti hám sol processor menen isleytuǵın bir Kompyuter obyekti jaratıp, kompyuterdiń tolıq maǵlıwmatların (markası hám processorınıń kórsetkishlerin) ekranǵa shıǵarıń.

3.Barlıǵın birlestiriw: Student hám Adres:

oqalası (string) hám kóshesi (string) degen qásiyetleri bar Adres klasın jaratıń.

oatı (string) hám jasaw_ornı (Adres tipindegi obyekt) degen qásiyetleri bar Student klasın jaratıń.

omain funkciyasında 3 studentten ibarat obyektler massivin jaratıń. Hárbir student ushın Adres obyekti jaratılıp, olar sáykes student obyektine menshiklensin. Aqırında, barlıq studentlerdiń atın hám tolıq adresin ekranǵa shıǵarıń.

Соседние файлы в предмете Программирование на C++