Сайфиев ж. Ф. С++ тилига кириш услубий қўлланма


void SomeFunction() const


Download 3.45 Mb.
bet43/79
Sana18.10.2023
Hajmi3.45 Mb.
#1707139
1   ...   39   40   41   42   43   44   45   46   ...   79
Bog'liq
cpp buxoro


void SomeFunction() const;


Синф аъзо – ўзгарувчиларига мурожаат қилувчи кўпгина функциялар худди шундай const калит сўзи орқали ифодаланиши лозим. Масалан, Mushuk синфида аъзо – ўзгарувчиларга мурожаат қилувчи иккита функция бор.


void SetYosh( int yosh );
int GetYosh ( );

SetYosh() функциясини эълон қилишда const спецификаторини ишлатиш мумкин эмас, чунки бу функция объект аъзо–ўзгарувчиси қийматини ўзгартиради. Лекин GetYosh() функциясини эълон қилишда албатта, const калитли сўзини ишлатишимиз лозим, чунки бу функция объектнинг ўзгарувчи аъзосининг қийматини ўзгартирмайди. Демак, Mushuk синфининг аъзо функцияларини қуйидагича эълон қилиш керак экан:


void SetYosh (int yosh);

int GetYosh() const;


Синфларни бошқа синфлардан ташкил топиши


Мураккаб синфларни ҳосил қилишда олдин уни ташкил этувчи оддийроқ синфларни эълон қилиб, кейин эса уларни бирлаштириш орқали синфни ҳосил қилиш мақсадга мувофиқдир. Масалан, ғилдирак синфи, мотор синфи, узатиш коробкаси синфи ва бошқа синфларни ҳосил қилиб, кейин эса уларни бирлаштириш орқали автомобил синфини қуриш олдимизга турган масалани ечишни анча осонлаштиради.
Иккинчи мисолни кўриб чиқамиз. Тўғри тўртбурчак чизиқлардан ташкил топган. Чизиқ эса икки нуқта орқали аниқланади. Ҳар бир нуқта х ва у координаталар ёрдамида аниқланади. 6.8. – листингда Turtburchak синфи кўрсатилган. Тўғри тўртбурчак тўртта нуқтани бирлаштирувчи тўртта чизиқ ёрдамида аниқланади. Бунда ҳар бир нуқта графикда координаталарга эга бўлади. Шунинг учун олдин ҳар бир нуқтанинг х, у координаталарини сақлаш учун Nuqta синфи эълон қилинган. 6.9.–листингда иккала синфнинг эълон қилиниши кўрсатилган.
6.8. – листинг. Нуқта ва тўғритўртбурчакнинг эълон қилиниши
#include
class Nuqta
{
public:
void SetX(int x) {itsX = x; }
void SetY(int y) {itsY = y; }
int GetX() const {return itsX}
int GetY() const {return itsY }
private:
int itsX;
int itsY;
}

class Turtburchak


{
public:
Turtburchak(int Yuqori,int Chap,int Quyi,int Ung) ;
~Turtburchak() { }
int GetYuqori() const {return itsYuqori; }
int GetChap() const {return itsChap; }
int GetQuyi() const {return itsQuyi;}
int GetUng() const {return itsUng;}
Nuqta GetYuqoriChap() const{return itsYuqoriChap;}
Nuqta GetQuyiChap() const {return itsQuyiChap;}
Nuqta GetYuqoriUng() const {return itsYuqoriUng; }
Nuqta GetQuyiUng ( ) const { return itsQuyiUng;}

void SetYuqoriChap(Nuqta Urni)


{
itsYuqoriChap= Urni;
}

void SetQuyiChap (Nuqta Urni)


{
itsQuyiChap= Urni;
}

void SetYuqoriUng(Nuqta Urni)


{
itsYuqoriUng= Urni;
}
void SetQuyiUng(Nuqta Urni)
{
itsQuyiUng= Urni;
}

void SetYuqori(int yuqori){ itsYuqori = yuqori;}


void SetChap (int chap) {itsChap = chap;}
void SetQuyi ( int quyi) { itsQuyi = quyi;}
void SetUng ( int ung) { itsUng = ung;}
int GetMaydon ( ) const;
private:
Nuqta itsYuqoriChap;
Nuqta itsYuqoriUng;
Nuqta itsQuyiChap;
Nuqta itsQuyiUng;
int itsYuqori;
int itsChap;
int itsQuyi;
int itsUng;
}
6.9. – листинг. Rect. сpp файли мазмуни
# include “rect.hpp”
Turtburchak::Turtburchak(int yuqori,
int chap, int quyi, int ung)
{
itsYuqori = yuqori;
itsChap = chap ;
itsQuyi = quyi;
itsUng = ung;

itsYuqoriChap.SetX(chap);


itsYuqoriChap.SetY(yuqori);

itsYuqoriUng.SetX (ung);


itsYuqoriUng.SetY (yuqori );

itsQuyiUng.SetX (ung);


itsQuyiUng.SetY (quyi );

itsQuyiChap.SetX ( chap );


itsQuyiChap.SetY ( Quyi );
}
// Тўгритўртбурчакни юзасини хисобловчи
// функцияни аниклаймиз
int Turtburchak :: GetMaydon ( ) const
{
int Eni = itsUng – itsChap;
int Buyi = itsYuqori – itsQuyi;
return (Eni * Buyi);
}
int main()
{
Turtburchak=YTurtburchak (100, 20, 50, 80)
int Maydon=YTurtburchak.GetMaydon();
cout << “Maydoni:” << Maydon << “\n”;
cout << “Yuqori chap x ning koordinatasi:”;
cout<< YTurtburchak.GetYuqoriChap().GetX();
return 0;
}

НАТИЖА:
Maydoni : 3000


Yuqori chap x ninig koordinatasi: 20

САВОЛЛАР




  • Очиқ (public) ва ёпиқ (private) ўзгарувчи – аъзолар орасида қандай фарқ бор?

  • Синфнинг функция аъзолари қачон ёпиқ бўлиши лозим?

  • Синфнинг функция аъзолари қачон очиқ бўлиши лозим?

  • Агарда Mushuk синфининг иккита объектини эълон қилсак, уларнинг ItsYosh ўзгарувчи аъзолари қиймати турлича бўлиши мумкинми?

  • Синф объектини ҳосил қилишда қандай функция чақирилади?

  • Синф объекти учун ажратилган хотира майдонини тозалашда қандай функция чақирилади.

ТАЯНЧ ИБОРАЛАР


синф, объект, синф аъзоси, аъзо ўзгарувчи, аъзо функция, синфни эълон қилиш, объектни эълон қилиш, очиқ ва ёпиқ аъзо ўзгарувчилар, конструктор, деструктор, методларни аниқлашда const калит сўзи



Download 3.45 Mb.

Do'stlaringiz bilan baham:
1   ...   39   40   41   42   43   44   45   46   ...   79




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