private
:
tip_1 dey_1;
tip_2 dey_2;
.
.
.
tip_n dey_n;
};
8.6 Yaradıcı
8.6.1 Sinif Yaradıcısı
Yaradıcı (eng. consturctor) sinfin d yiş n h ddl rin başlanğıc qiym tl r m nims tm k
ə
ə
ə
ə ə
ə ə
ə
ə ə
üçün istifad olunur. Sinin tipind n d yiş n elan ed rk n yaradıcı funksiya avtomatik
ə
ə
ə
ə
ə ə
çağırılır v ilkin qiym tl ndirm ni yerin yetirir. Yaradıcı elan etm k üçün sinfin daxilind
ə
ə ə
ə
ə
ə
ə
sinfin tipinin adı il eyni adlı funksiya elan etm k lazımdır.
ə
ə
Çalışma 5. Çalışma 1-d elan olunmuş duzbucaqli sinfinin yaradıcısını t rtib edin.
ə
ə
H lli.
ə Sinfin tipinin adı duzbucaqli olduğundan yaradıcı elan etm k üçün sinfin daxilind
ə
ə
duzbucali funksiya h ddi elan etm liyik, aşağıdakı kimi:
ə
ə
class
duzbucaqli {
public
:
duzbucaqli();
int
en;
int
uz;
int
sahe (
int
,
int
);
};
8.6.2 Yaradıcının proqram kodu
Yaradıcının proqram kodunu sinfin dig r funksiya h ddl ri kimi t rtib ed bil rik. Yegan
ə
ə
ə
ə
ə
ə
ə
f rq odur ki, yaradıcını t rtib ed rk n n tic tipi göst rilmir.
ə
ə
ə ə
ə ə
ə
Çalışma 6. Çalışma 1-d elan olunmuş duzbucaqli sinfinin yaradıcısının proqram kodunu
ə
t rtib edin. Yaradıcı sinfin en v uz h ddl rin uyğun olaraq 20 v 30 qiym tl ri
ə
ə
ə
ə ə
ə
ə ə
m nims tm lidir.
ə
ə ə
H lli.
ə Sinfin funksiya h ddl rinin proqram kodunun t rtibi sintaksisin n z r salaq:
ə
ə
ə
ə ə ə
nəticə_tipi sinfin_adı::funksiyanın_adı (parametrlər) {
proqram kodu;
}
sinfin_adı duzbucaqli, funksiyanın adı h mçinin duzbucaqli (bir daha yada salaq ki,
ə
yaradıcının adı sinfin tipinin adı il adlandırılır), n tic nin_tipi göst rilm diyind n
ə
ə ə
ə
ə
ə
duzbucali sinfinin yaradıcısının proqram kodunu aşağıdakı kimi t rtib ed bil rik:
ə
ə
ə
duzbucaqli::duzbucali(){
en =
20
;
uz =
30
;
}
Çalışma 7. Çalışma 1 -d elan olunan duzbcaqli sinfind n istifad ed r k proqram kodu
ə
ə
ə
ə ə
t rtib edin.
ə
H lli.
ə
Nümun proqram kodu aşağıdakı kimi olar:
ə
#include
class
duzbucaqli {
public
:
duzbucaqli();
int
sahe (
int
,
int
);
int
en;
int
uz;
};
duzbucaqli::duzbucali(){
en =
20
;
uz =
30
;
}
int
duzbucaqli::sahe (
int
x,
int
y){
return
x*y;
}
int
main(){
duzbucaqli duzb;
std::cout<<
"duzbucaqlinin sahesi = "
<"
\n
"
;
}
Izahı. Proqramda vv l duzbucaqli sinfi elan olunur, daha sonra onun yaradıcısı v sahe
ə ə
ə
funksiyalarının proqram kodları t rtib olunur. Proqramın sas funksiyasında duzbucali
ə
ə
sinfind n duzb adlı d yiş n elan olunur. Bu zaman yaradıcı funksiya avtomatik çağırılır v
ə
ə
ə
ə
duzb obyektinin en v uz h ddl rin müvafiq olaraq 20 v 30 qiym tl ri m nims dir.
ə
ə
ə ə
ə
ə ə
ə
ə
8.7 N silverm
ə
ə
N silverm h r-hansı mövcud sinif tipind n istifad ed r k bir q d r f rqli yeni sinif
ə
ə ə
ə
ə
ə ə
ə ə ə
tipinin yaradılmasına deyilir. Bu zaman yeni yaradılan tip varis, başlanğıc tip is cdad
ə ə
sinif adlanır. Yeni sinif tipi yaradark n istifad olunan başlanğıc tip lav d yiş n v ya
ə
ə
ə ə
ə ə
ə
ə
funksiya h ddl ri artırıla bil r, h mçinin mövcud funksiya h ddl ri d yişdiril bil r.
ə
ə
ə
ə
ə
ə
ə
ə
ə
8.7.1 N silverm il yeni sinfin yaradılması
ə
ə ə
H r-hansı mövcud A sinfind n n silverm il yeni B sinfini yaratmaq üçün aşağıdakı
ə
ə
ə
ə ə
sintaksisd n istifad olunur:
ə
ə
class
B : puclic
class
A {
};
Bu zaman B sinfi öz cdadı sayılan A sinfinin bütün funksiya v d yiş n h ddl rin sahib
ə
ə ə
ə
ə
ə ə
olur.
Çalışma 8. N silverm yolu il
ə
ə
ə Çalışma 1 -d elan olunmuş duzbucaqli sinfind n yeni
ə
ə
paralelpiped sinfi yaradın.
H lli. N silverm sintaksisin sas n t l b olunan sinfi aşağıdakı kimi yarada bil rik:
ə
ə
ə
ə ə
ə ə ə
ə
class
paralelpiped :
public
class
duzbucaqli {
};
8.7.2 Varis tip yeni h ddl rin artırılması
ə
ə
ə
N silverm yolu il yaradılan tip öz cdadının bütün h ddl rin sahib olur. g r h r-
ə
ə
ə
ə
ə
ə ə
Ə ə ə
hansı yeni h dd artırma t l b olunsa onu sinfi elan ed rk n { v } möt riz l ri arasında
ə
ə ə
ə ə
ə
ə ə ə
qeyd etm k lazımdır, aşağıdakı kimi:
ə
class
B : puclic
class
A {
yeni həddlər
};
Çalışma 9. Çalışma 8 -d elan olunmuş paralelpiped sinfin yeni int tipli hündürlük
ə
ə
d yiş n h ddi v int ( void ) tipli hecm funksiya h ddi artırın.
ə
ə
ə
ə
ə
H lli.
ə Proqram kodu aşağıdakı kimi olar:
class
paralelpiped :
public
class
duzbucaqli {
public
:
int
hundurluk
int
hecm(
void
);
};
int
paralelpiped::hecm(){
return
en*uz*hundurluk;
}
8.7.3 cdad sinfin funksiyalarının d yişdirilm si
Ə
ə
ə
cdad sinfin h r-hansı funksiya h ddini d yişdirm k üçün h min funksiyanı yenid n
Ə
ə
ə
ə
ə
ə
ə
proqram kodunu yenid n t rtib etm liyik v bu zaman sinif_adı yerin varis sinfin adını
ə ə
ə
ə
ə
yazmalıyıq .
Çalışma 10. Çalışma 8 -d elan olunmuş paralelpiped sinfinin n silverm il ld etdiyi
ə
ə
ə ə ə ə
sah funksiyasının proqra kodunu el d yişin ki, n tic olaraq paralelpipedin sah sini
ə
ə ə
ə ə
ə
qaytarsın. Paralelpipedin sah si 2*(en*uzunluq+en*hündürlük+uzunluq*hündürlük)
ə
düsturu il hesablanır.
ə
H lli.
ə
Proqram kodu aşağıdakı kimi olar.
int
paralelpiped::sahe (){
return
2
*(en*uz + en*hudurluk + uz*hundurluk);
}
Çalışma 11. Çalışma 8-d elan olunmuş paralelpiped sinfind n parp adlı obyekt elan
ə
ə
edin. parp -ın h cmini v sah sini çap ed n proqram t rtib edin.
ə
ə
ə
ə
ə
H lli.
ə Proqram kodu aşağıdakı kimi olar:
#include
//duzbucaqli sinfi elan edirik
class
duzbucaqli {
public
:
duzbucaqli();
int
sahe (
int
,
int
);
int
en;
int
uz;
};
duzbucaqli::duzbucali(){
en =
20
;
uz =
30
;
}
int
duzbucaqli::sahe (
int
x,
int
y){
return
x*y;
}
//nesilverme ile duzbucaqli sinfinden
//paralelpiped sinfi yaradiriq
class
paralelpiped :
public
class
duzbucaqli {
public
:
paralelpiped();
int
hundurluk
int
hecm(
void
);
};
// paralelpiped sinfinin yaradicisini yenileyirik
// ki, hundurluk heddine 25 qiymeti menimsetsin
paralelpiped::paralelpiped(){
hundurluk =
25
;
}
int
paralelpiped::hecm(){
return
en*uz*hundurluk;
}
int
paralelpiped::sahe (){
return
2
*(en*uz + en*hudurluk + uz*hundurluk);
}
int
main(){
// paralelpiped sinfinden parp adli obyekt
// yaradaq
paralelpiped parp;
std::cout<<
"parp obyektinin sahesi = "
<
"
\n
"
<<
"parp obyektinin hecmi = "
<
"
\n
"
;
}
$9 Göst ricil r.
ə
ə
Bu paraqrafda biz proqramlaşdırmanın n vacib v ç tin hiss l rind n biri sayılan
ə
ə ə
ə ə
ə
göst ricil rl tanış olacayıq. Göst ricil rl iş t crüb t l b edir v bu paraqrafda biz
ə
ə ə
ə
ə ə
ə
ə ə ə
ə
göst ricil rl bağlı n sas m s l l ri izah etm y çalışmışıq.
ə
ə ə
ə ə
ə ə ə ə
ə ə
Bu paraqrafda göst ricil rl bağlı aşağıdakı m s l l r toxunulur : d yiş nin ünvanı,
ə
ə ə
ə ə ə ə ə
ə
ə
göst ricil rin elanı, unvana gör ötürülm , göst rici il c rg l rin laq si, göst ricil r
ə
ə
ə
ə
ə
ə ə ə ə
ə
ə
ə
ə
üz rind hesab m ll ri, göst rici tipli obyektl r, dinamik yaradılma v silinm .
ə
ə
ə ə ə
ə
ə
ə
ə
9.1 Ünvan
9.1.1 Ünvan anlayışı
Sistem proqramlaşdırmada b lk d n mühüm m s l ünvan m s l sidir. H r-hansı
ə ə ə ə
ə ə ə
ə ə ə
ə
m lumata müraci t etm k üçün prosessor onun yaddaşdakı ünvanını mütl q bilm lidir.
ə
ə
ə
ə
ə
Bizim proqramda d yiş nl r verdiyimiz adlar kompilyasiya zamanı müvafiq yaddaş
ə
ə ə ə
ünvanları il v zl nir.
ə ə ə ə
Ünvan m lumatın v ya proqram kodunun yaddaşdakı yerini göst rir.
ə
ə
ə
Bütün bunlar sistem proqramlaşdırmanın mövzusu olsa da, istifad çi proqramlaşdırma da
ə
unvanlardan geniş istifad olunur.
ə
9.1.2 D yiş nin ünvanı
ə
ə
D yiş nin ünvanının örg nm k üçün ünvan operatorundan istifad olunur. Ünvan
ə
ə
ə
ə
ə
operatoru '&' kimi işar olunur. H r-hansı d yiş nin unvanın ld etm k üçün onun
ə
ə
ə
ə
ə ə
ə
adının vv lin ünvan operatoru artırılır, aşağıdakı kimi:
ə ə ə
&dəyişən;
Çalışma 1. int tipli x adlı d yiş n elan edin. Onun ünvanın ekranda çap edin.
ə
ə
H lli.
ə Proqram kodu aşağıdakı kimi olar:
#include
int
main(){
int
x;
std::cout<<
"x deyisheninin unvani = "
<< &x
<<
"
\n
"
;
}
9.2 Göst rici
ə
S tirl rl , c rg l rl , funksiyaya ötürül n parametrl , m lumat struktları il (növb , stek,
ə ə ə ə ə ə ə
ə
ə
ə
ə
ə
siyahı, ağac), dinamik obyektl rl işl y rk n ünvan m liyyatları zamanı göst ricil rd n
ə ə
ə ə ə
ə ə
ə
ə ə
istifad olunur.
ə
Göst rici
ə
özünd qiym t olaraq
ə
ə
ÜNVAN yadda saxlayan d yiş ndir.
ə
ə
Göst riciy ist nil n d yiş nin ünvanın m nims d bil rik, n tic d göst rici h min
ə
ə
ə ə
ə
ə
ə
ə ə
ə
ə ə ə
ə
ə
d yiş nin yaddaşdakı yerini bildir c k, istinad ed c k , başqa sözl h min d yiş ni
ə
ə
ə ə
ə ə
ə ə
ə
ə
GÖST R C K. g r göst ricinin qim tini d yişib ona başqa ÜNVAN m nims ts k,
Ə Ə Ə
Ə ə
ə
ə
ə
ə
ə ə
onda göst rici müvafiq ünvandakı m lumata istinad ed c k (göst r c k).
ə
ə
ə ə
ə ə ə
9.2.1 Göst ricinin elanı
ə
Göst rici elan etm k üçün aşağıdakı sintaksisd n istifad olunur:
ə
ə
ə
ə
tip *göstərici_dəyişənin_adı;
Sintaksisd n göründüyü kimi göst rici elan ed rk n adi d yiş nl rin elanı qaydasından
ə
ə
ə ə
ə
ə ə
istifad olunur (tip ad;). F rq yalnız göst ricinin adından vv l ulduz - '*' işar sinin
ə
ə
ə
ə ə
ə
olmasıdır. Eyni s tird h m adi, h m d göst rici d yiş nl r elan ed bil rik.
ə
ə ə
ə
ə
ə
ə
ə ə
ə
ə
Çalışma 2. int tipind n olan y adlı göst rici elan edin.
ə
ə
H lli.
ə Göst ricil rin elanı qaydasından istifad ed r k int tipind n olan y adlı göst ricini
ə
ə
ə
ə ə
ə
ə
aşağıdakı kimi elan ed bil rik:
ə
ə
int
*y;
9.2.2 Göst riciy qiym t m nims dilm si
ə
ə
ə
ə
ə
ə
Assembler proqramlaşdırma kursunda fiziki yaddaşın strukturu, prosessorun yaddaşa
müraci t imkanları mövzuları zamanı fiziki ünvanın 0-dan böyük - b rab r d d olduğu
ə
ə
ə ə ə
qeyd olunur. Yüks k s viyy li dill rd unvanların d di qiym tl rind n el d geniş
ə
ə
ə
ə ə
ə ə
ə ə
ə
ə ə
istifad olunmur, sad c hesab m ll ri zamanı istifad olunur. Bununla biz ir lid ki
ə
ə ə
ə ə ə
ə
ə ə
mövzularda m şğul olacayıq. H l lik is göst ricil r qiym t m nims d rk n unvan
ə
ə ə
ə
ə
ə ə
ə
ə
ə ə ə
operatorundan istifad etm kl hansısa d yiş nin ünvanın v ya başqa bir göst ricinin
ə
ə ə
ə
ə
ə
ə
qiym tin m nims d bil rik.
ə
ə
ə ə
ə
Çalışa 3. int tipli adi x v göst rici y d yiş ni elan edin. Ünvan operatorundan istifad
ə
ə
ə
ə
ə
etm kl x d yiş ninin ünvanını y - m nims din.
ə ə
ə
ə
ə ə
ə
H lli
ə . Proqram kodu aşağıdakı kimi olar:
int
x, *y;
y = &x;
Çalışma 4. int tipli adi x d yiş ni, y v z göst ricil ri elan edin. Ünvan operatorundan
ə
ə
ə
ə
ə
istifad etm kl x d yiş ninin ünvanını y - m nims din. y-in qiym tini (x -in ünvanını) z
ə
ə ə
ə
ə
ə ə
ə
ə
-t m nims din.
ə ə
ə
H lli.
ə
int
x, *y, *z;
y = &x;
z = y;
9.2.3 Göst ricinin istinad etdiyi d yiş n müraci t
ə
ə
ə ə
ə
Göst riciy h r-hansı ünvanı m nims tdikd n sonra h min unvanda yerl ş n m lumatı
ə
ə ə
ə
ə
ə
ə
ə ə
ə
asanlıqla oxuyub, d yişdirm k olar. Bunun üçün göst ricinin adının vv lin ulduz - '*'
ə
ə
ə
ə ə ə
simvolunu artırmaq t l b olunur.
ə ə
Çalışma 5. int tipli x d yiş ni v y göst ricisi elan edin. x -in ünvanın y- m nims din.
ə
ə
ə
ə
ə ə
ə
Göst ricinin istinad etdiyi sah d ki m lumatı çap edin.
ə
ə ə
ə
H ll.
ə int ipli x d yiş ni v y göst ricisi elanı üçün int x, *y ; kodundan istifad ed k. x -
ə
ə
ə
ə
ə
ə
ə
25 qiym ti m nims d k, x = 25; . y = &x; kodu il x -in ünvanın y - m nims d k. y-in
ə
ə
ə ə
ə
ə ə
ə ə
istinad etdiyi m lumatı çap etm k üçün cout<< *y ; kodundan istifad ed bil rik. Yekun
ə
ə
ə
ə
ə
proqram kodu aşağıdakı kimi olar:
#include
int
main(){
int
x, *y;
x =
25
;
y = &x;
std::cout<< *y ;
}
Çalışma 6. int tipli x d yiş ni v y göst ricisi elan edin. x -in ünvanın y- m nims din.
ə
ə
ə
ə
ə ə
ə
Göst ricinin istinad etdiyi sah d ki m lumatı d yişdirin. D yişikliyi yoxlayın.
ə
ə ə
ə
ə
ə
H lli.
ə Yenı Çalıma 5 -d ki kimi y - x -in ünvanın m nims d k. vv lc x- 25 qiym ti
ə
ə
ə
ə ə Ə ə ə ə
ə
m nims d k. Daha sonra * simvolundan istifad etm kl y-in istinad etdiyi sah y h r-
ə
ə ə
ə
ə ə
ə ə ə
hansı qimy t yazaq, misal üçün 40, aşağıdakı kimi *y = 40;. y göst ricisi x - istinad
ə
ə
ə
etdiyind n bu zaman x -in 40 olar. Bunu yoxlamaq üçün *y = 40; m liyyatından vv l v
ə
ə ə
ə ə ə
sonra x -in qiym tini çap ed k. Proqram kodu aşağıdakı kimi olar.
ə
ə
#include
int
main(){
int
x, *y;
x =
25
;
y = &x;
std::cout<<
" *y = 40; -dan evvel x = "
<< x ;
*y =
40
;
std::cout<<
" *y = 40; -dan sonra x = "
<< x ;
}
9.3 Göst ricil r il C rg l rin laq si
ə
ə
ə ə ə ə
ə
ə
C rg l r göst ricil rin xüsusi bir formasıdır. C rg l r d göst ricil r kimi yaddaşda
ə ə ə
ə
ə
ə ə ə ə
ə
ə
mü yy n bir sah y istinad edir. F rq yalnız ondadır ki, göst ricini ist nil n ünvana
ə ə
ə ə
ə
ə
ə ə
yönl ndirm k olar, c rg l r is proqramın icrası boyu yalnız bir unvana - elementl r
ə
ə
ə ə ə
ə
ə
yerl şdiyi sah nin başlanğıcına (c rg nin ilk elementin ) istniad edirl r. Başqa sözl
ə
ə
ə ə
ə
ə
ə
c rg nin adı c rg nin ilk elementin istinad ed n v qiym ti d yişdiril bilm y n
ə ə
ə ə
ə
ə
ə
ə
ə
ə
ə ə
(constant) göst ricidir.
ə
Dostları ilə paylaş: |