Sunteți pe pagina 1din 58

Zoltan Hascsi

Programare orientat pe obiecte - J ava


cursul 5
Tablouri de obiecte
Programare Orientat pe Obiecte cursul 5 2 Zoltan Hascsi
Tablou de obiecte
Grupuri de obiecte de acelai fel.
Exemple:
vector de numere
ir de caractere
grup de studeni
teanc de CV-uri, unele mai scurte, altele mai lungi
Obiectele dintr-un tablou de obiecte sunt ordonate i
fiecare obiect are un numr de ordine, numit index.
Accesul unui obiect din tablou se face pe baza acestui
index.
Indexul este un numr natural, ntre 0 i n-1, unde n este
numrul obiectelor tabloului (lungimea tabloului).
tablou = vector = matrice = arie = colecie
Programare Orientat pe Obiecte cursul 5 3 Zoltan Hascsi
Tablou de obiecte. Exemple
vector de numere. Primele 10 numere prime:
ir de caractere. Iniialele zilelor sptmnii:

2 3 5 7 11 13 17 19 23 29
0 9
index
1 2 3 4 5 6 7 8

L M M J V S D
0
index
1 2 3 4 5 6
Programare Orientat pe Obiecte cursul 5 4 Zoltan Hascsi
Tablou de obiecte. Exemple
grup de 3 studeni.

n_POO
n_DCE
10
10
n_POO
n_DCE
7
10
n_POO
n_DCE
10
7
st udent [ 0] st udent [ 1] st udent [ 2]
Programare Orientat pe Obiecte cursul 5 5 Zoltan Hascsi
Tablou de obiecte. Exemple
tabel de nume i prenume:
Observaie: J ava permite construirea tablourilor
multidimensionale neregulate.

Li vi u
0
index
rnd
Rebr eanu
Cami l Pet r escu
Hor t ensi a Papadat Bengescu
1
2
Mi r cea El i ade
3
0 1 2
index coloan
Programare Orientat pe Obiecte cursul 5 6 Zoltan Hascsi
Tabloul este un obiect
Obiectul tablou ncapsuleaz un vector unidimensional
de variabile:
un vector de variabile de tip primitiv n cazul tabloului de tip
primitiv;
un vector de variabile referin n cazul tabloului de obiecte;
Tipul tabloului este tipul elementelor tabloului.
Numele tabloului este o referin la obiectul tablou.
ncapsularea permite controlul accesului elementelor
tabloului. Orice ncercare de acces dincolo de limitele
tabloului se soldeaz cu un eec (excepie).
Programare Orientat pe Obiecte cursul 5 7 Zoltan Hascsi
Tabloul este un obiect
Obiectul tablou ncapsuleaz elementele tabloului i un
parametru care indic numrul de elemente, lungimea
tabloului (l engt h).
Numele tabloului este o variabil referin la tabloul
propriu-zis.

10
l engt h
0

1

9

numele
tabloului
obiectul tablou
referina la
obiectul tablou
elementele
tabloului
indecii
elementelor tabloului
Programare Orientat pe Obiecte cursul 5 8 Zoltan Hascsi
Declararea unui tablou de tip primitiv
Se specific tipul elementelor i numele tabloului:
Tip [ ] numeTablou;
Parantezele ptrate indic faptul c este vorba de o
declaraie de obiect tablou i nu o declaraie de variabil
de tip primitiv.
Exemple:
int [ ] a;
int [ ] al t Tabl ouDeI nt r egi ;
char[ ] t abl ouDeCar act er e;
ntre parantezele ptrate nu se scrie nimic:
int [ 3] a; / / er oar e l a compi l ar e!
Programare Orientat pe Obiecte cursul 5 9 Zoltan Hascsi
Crearea tabloului de variabile de tip primitiv
Ca orice alt obiect din J ava un tablou de variabile este
creat (instaniat) cu ajutorul instruciunii new :
numeTablou = new Tip [ nrElemente] ;
Specificarea numrului de elemente este obligatorie.
Numrul de elemente (lungimea tabloului) este un cmp
al obiectului tablou, numit l engt h, care este iniializat la
instanierea obiectului tablou i care nu poate fi
modificat.
Cmpul l engt h este accesibil ca orice cmp public al
unui obiect oarecare:
numeTablou.l engt h
dar numai pentru citire!
Programare Orientat pe Obiecte cursul 5 10 Zoltan Hascsi
Crearea tabloului de variabile de tip primitiv
La instanierea unui tablou de variabile de tip primitiv
elementele tabloului, variabilele de tip primitiv, sunt
iniializate implicit n:
0 pentru variabilele de tip ntreg (byte, short, int, long);
0. 0 pentru variabilele de tip real (float, double);
caracterul nul (neprintabil), ' \ 0' , pentru variabilele de tip char;
false pentru variabilele de tip boolean;
Programare Orientat pe Obiecte cursul 5 11 Zoltan Hascsi
Accesul la elementele tabloului
Dup instaniere elementele tabloului pot fi accesate
folosind sintaxa clasic de acces pe baza indexului care
indic poziia elementului:
numeTablou[ indexElement]
Indexul primului element este 0.
Pentru un tablou de lungime n indexul ultimului element
este n-1.
0

1

2
indexul primului
element
indexul ultimului
element
tablou
cu
3
elemente
Programare Orientat pe Obiecte cursul 5 12 Zoltan Hascsi
Accesul la elementele tabloului
indexElement este fie o constant ntreag pozitiv, fie o
variabil de tip int, fie o expresie al crei rezultat este
de tip int.
numeTablou[ indexElement]
Exemple:
a[ 5]
a[ i ]
a[ 100 + i + j ]
a[ ( int) ( Math. r andom( ) *a. l engt h) ]
unde i i j sunt variabile de tip int, iar expresia
Math. r andom( ) *a. l engt h ntoarce un rezultat de tip
double care trebuie convertit n tipul int (are loc i o
trunchiere).
Programare Orientat pe Obiecte cursul 5 13 Zoltan Hascsi
Exemplu: un tablou simplu de ntregi
int[ ] a; // declararea tabloului

null a
Programare Orientat pe Obiecte cursul 5 14 Zoltan Hascsi
Exemplu: un tablou simplu de ntregi
int[ ] a; / / decl ar ar ea t abl oul ui
new int[ 3] ; // crearea obiectului tablou

3
l engt h
0 0
0
1
0
2
nul l a
Programare Orientat pe Obiecte cursul 5 15 Zoltan Hascsi
Exemplu: un tablou simplu de ntregi
int[ ] a; / / decl ar ar ea t abl oul ui
a = new int[ 3] ; // crearea obiectului tablou

3
l engt h
0 0
0
1
0
2
a
Programare Orientat pe Obiecte cursul 5 16 Zoltan Hascsi
Exemplu: un tablou simplu de ntregi
int[ ] a; / / decl ar ar ea t abl oul ui
a = new int[ 3] ; / / cr ear ea obi ect ul ui t abl ou
a[ 0] = 10; // accesul unui element al tabloului

3
l engt h
10
0
0
1
0
2
a
Programare Orientat pe Obiecte cursul 5 17 Zoltan Hascsi
Exemplu: un tablou simplu de ntregi
int[ ] a; / / decl ar ar ea t abl oul ui
a = new int[ 3] ; / / cr ear ea obi ect ul ui t abl ou
a[ 0] = 10; / / accesul unui el ement al t abl oul ui
a[ 3] = 9; // acces nepermis
Except i on i n t hr ead . . .
j ava. l ang. ArrayIndexOutOfBoundsException: 3

3
l engt h
10 0
0
1
0
2
a
Programare Orientat pe Obiecte cursul 5 18 Zoltan Hascsi
Iniializarea tabloului de tip primitiv
Declararea tabloului poate fi combinat cu o iniializare
folosind sintaxa:
Tip [ ] numeTablou = {el ement 0, el ement 1, . . . };
Lungimea tabloului va fi fixat de numrul de termeni
dintre acolade.
Fiecare termen dintre acolade poate fi:
constant
expresie
care are ns neaprat tipul corespunztor declaraiei
tabloului.
Programare Orientat pe Obiecte cursul 5 19 Zoltan Hascsi
Iniializarea tabloului de tip primitiv
Exemple:
/ / t abl ou de 10 i nt r egi
int[ ] pr i m= {2, 3, 5, 7, 11, 13, 17, 19, 23, 29};
/ / t abl ou de 7 car act er e
char[ ] zi = {' L' , ' M' , ' M' , ' J ' , ' V' , ' S' , ' D' };
/ / t abl ou de 2 i nt r egi
int g1 = 421;
int g2 = 422;
int [ ] gr upeExamen = {g1, g2 + 2};
expresie care ntoarce
un tip int
Programare Orientat pe Obiecte cursul 5 20 Zoltan Hascsi
Declararea unui tablou de obiecte
Se specific tipul elementelor i numele tabloului:
NumeClas [ ] numeTablou;
Elementele tabloului sunt referine la obiecte de tipul
clasei declarate.
Tabloul de obiecte este de fapt un tablou de variabile
referin la obiect.
Exemple:
Student[ ] gr upa421F;
Student[ ] gascaDeRevel i on;
String [ ] numeZi ;
ntre parantezele ptrate nu se scrie nimic:
Student[ 30] gr upa421F; / / er oar e l a compi l ar e!
Programare Orientat pe Obiecte cursul 5 21 Zoltan Hascsi
Crearea tabloului de obiecte
Ca orice alt obiect din J ava un tablou de obiecte este
creat (instaniat) cu ajutorul instruciunii new :
numeTablou = new NumeClas [ nrElemente] ;
Specificarea numrului de elemente este obligatorie.
Numrul de elemente (lungimea tabloului) este un cmp
al obiectului tablou, numit l engt h, care este iniializat la
instanierea obiectului tablou i care nu poate fi
modificat.
Cmpul l engt h este accesibil ca orice cmp public al
unui obiect oarecare:
numeTablou.l engt h
dar numai pentru citire!
Programare Orientat pe Obiecte cursul 5 22 Zoltan Hascsi
Crearea tabloului de obiecte
La instanierea unui tablou de obiecte, elementele
tabloului, variabile referin la obiect, sunt iniializate n
null.
Dup instanierea tabloului, elementele lui nu pot fi
accesate dect dup ce referinelor li se atribuie o
adres valid, fie prin instanierea unui obiect
corespunztor, fie prin copierea unei referine la un
obiect de tipul declarat.
Programare Orientat pe Obiecte cursul 5 23 Zoltan Hascsi
Accesul unui obiect dintr-un tablou de obiecte
Accesul unui element al unui tablou de obiecte este
accesul la obiectul la care face referire elementul
propriu-zis al tabloului. Obiectul este identificat prin
numele tabloului i indexul la care se afl:
numeTablou[ indexElement]
Indexul are aceleai constrngeri ca n cazul tablourilor
de variabile de tip primitiv.
Accesul membrilor (cmpuri sau metode) obiectului se
face folosind sintaxa clasic de acces a obiectelor:
numeTablou[ indexElement] . numeCmp
sau
numeTablou[ indexElement] . numeMetod
Programare Orientat pe Obiecte cursul 5 24 Zoltan Hascsi
Exemplu: un tablou de obiecte
Student[ ] gr upa; // declararea tabloului

null

gr upa
Programare Orientat pe Obiecte cursul 5 25 Zoltan Hascsi
Exemplu: un tablou de obiecte
Student[ ] gr upa; / / decl ar ar ea t abl oul ui
new Student[ 3] ; // crearea tabloului

3
l engt h
null
0
null
1
null
2
nul l
gr upa

Programare Orientat pe Obiecte cursul 5 26 Zoltan Hascsi
Exemplu: un tablou de obiecte
Student[ ] gr upa; / / decl ar ar ea t abl oul ui
gr upa = new Student[ 3] ; // crearea tabloului

3
l engt h
nul l
0
nul l
1
nul l
2

gr upa

Programare Orientat pe Obiecte cursul 5 27 Zoltan Hascsi
Exemplu: un tablou de obiecte
Student[ ] gr upa; / / decl ar ar ea t abl oul ui
gr upa = new Student[ 3] ; / / cr ear ea t abl oul ui
new Student( ) ; / / i nst ant i er ea unui
obi ect St udent

3
l engt h
nul l
0
nul l
1
nul l
2


0
gr upa
obiect
St udent
Programare Orientat pe Obiecte cursul 5 28 Zoltan Hascsi
Exemplu: un tablou de obiecte
Student[ ] gr upa; / / decl ar ar ea t abl oul ui
gr upa = new Student[ 3] ; / / cr ear ea t abl oul ui
gr upa[ 0] new Student( ) ; / / i nst ant i er ea unui
obi ect St udent

3
l engt h
nul l 0
nul l
1
nul l
2


0
gr upa
obiect
St udent
Programare Orientat pe Obiecte cursul 5 29 Zoltan Hascsi
Exemplu: un tablou de obiecte
Student[ ] gr upa; / / decl ar ar ea t abl oul ui
gr upa = new Student[ 3] ; / / cr ear ea t abl oul ui
gr upa[ 0] = new Student( ) ; / / i nst ant i er ea unui
obi ect St udent care face parte din tablou.

3
l engt h
0
nul l
1
nul l
2
a

0
gr upa
obiect
St udent
Programare Orientat pe Obiecte cursul 5 30 Zoltan Hascsi
Exemplu: un tablou de obiecte
Student[ ] gr upa; / / decl ar ar ea t abl oul ui
gr upa = new Student[ 3] ; / / cr ear ea t abl oul ui
gr upa[ 0] = new Student( ) ; / / i nst ant i er ea unui
obi ect St udent car e f ace par t e di n t abl ou.
gr upa[ 1] = new Student( ) ; // instantierea altui
obiect Student care face parte din tablou.

3
l engt h
0
1
nul l
2
a

0
gr upa

0
Programare Orientat pe Obiecte cursul 5 31 Zoltan Hascsi
Exemplu: un tablou de obiecte
Student[ ] gr upa; / / decl ar ar ea t abl oul ui
gr upa = new Student[ 3] ; / / cr ear ea t abl oul ui
gr upa[ 0] = new Student( ) ; / / i nst ant i er ea unui
obi ect St udent car e f ace par t e di n t abl ou.
gr upa[ 1] = new Student( ) ; / / i nst ant i er ea al t ui
obi ect St udent car e f ace par t e di n t abl ou.
gr upa[ 1] . nr _cr edi t e = 60; // accesul unui element

3
l engt h
0
1
nul l
2
a

0
gr upa

60
Programare Orientat pe Obiecte cursul 5 32 Zoltan Hascsi
Iniializarea tablourilor de obiecte
Declaraia unui tablou de obiecte poate fi combinat cu o
iniializare folosind sintaxa cu paranteze acolade:
NumeClas [ ] numeTablou = {el ement 0, el ement 1, . . . };
Lungimea tabloului va fi fixat de numrul de termeni
dintre acolade.
Fiecare termen dintre acolade poate fi:
referin
instaniere
care are ns neaprat clasa corespunztoare declaraiei
tabloului.
Programare Orientat pe Obiecte cursul 5 33 Zoltan Hascsi
Iniializarea tablourilor de obiecte
Exemplu de iniializare prin referine:
Student s_a = new Student( ) ;
Student s_b = new Student( ) ;
Student s_c = new Student( ) ;
Student [ ] gr upPr oi ect = {s_a, s_b, s_c};
Exemplu de iniializare prin prin instaniere:
Student [ ] gr upPr oi ect = {new Student( ) ,
new Student( ) , new Student( ) };
Programare Orientat pe Obiecte cursul 5 34 Zoltan Hascsi
Tablou bidimensional
Tablourile fiind obiecte pot fi la rndul lor grupate n
tablouri de obiecte.
Tabloul bidimensional este un tablou de obiecte tablou.
Tabloul de pe primul nivel este un tablou de referine la
tablourile de pe al doilea nivel.
Tablourile de pe ultimul nivel pot fi tablouri de variabile
de tip primitiv sau tablouri de obiecte (de referine la
obiecte).
Toate tablourile de pe ultimul nivel au elemente de
acelai tip, tipul din declaraia tabloului bidimensional.
Tablourile de pe ultimul nivel pot fi de lungimi diferite.
Programare Orientat pe Obiecte cursul 5 35 Zoltan Hascsi
Tablou bidimensional: declarare
Analog declarrii tabloului simplu, singura diferen fiind
prezena a dou perechi de paranteze ptrate:
Tip [ ] [ ] numeTablou;
ntre parantezele ptrate nu se scrie nimic.
Exemple:
int[ ] [ ] a;
String [ ] [ ] r omanci er i I nt er bel i ci ;
Programare Orientat pe Obiecte cursul 5 36 Zoltan Hascsi
Tablou bidimensional: instaniere complet
Analog instanierii obiectelor obinuite, folosete
instruciunea new:
numeTablou = new Tip[ nr_rnduri] [ nr_coloane] ;
Se specific lungimea pe fiecare dimensiune.
Permite doar instanierea tablourilor dreptunghiulare.
Lungimile pot fi constante de tip int, variabile de tip int
sau expresii al cror rezultat este de tip int.
Exemple:
int[ ] [ ] a = new int[ 2] [ 3] ;
int[ ] [ ] a = new int[ i ] [ i +1] ;
Programare Orientat pe Obiecte cursul 5 37 Zoltan Hascsi
Tablou bidimensional: instaniere complet
Exemplu:
int[ ] [ ] a = new int[ 2] [ 3] ;
Toate tablourile de pe ultimul nivel au aceeasi lungime.

2
l engt h
0
1
a
3
l engt h
0
0
0
1
0
2
3
l engt h
0
0
0 1
0
2
Programare Orientat pe Obiecte cursul 5 38 Zoltan Hascsi
Tablou bidimensional: instaniere parial
Se instaniaz doar obiectul tablou de pe primul nivel:
numeTablou = new Tip [ nr_rnduri] [ ] ;
Se specific doar lungimea tabloului de pe primul nivel
(numrul de rnduri).
Permite construirea tablourilor neregulate, cu tablouri pe
nivelul inferior de lungimi diferite.
Exemple:
int[ ] [ ] a = new int[ 2] [ ] ;
int[ ] [ ] a = new int[ i ] [ ] ;
Dup instanierea parial pot fi accesate numai
elementele de pe primul nivel:
numeTablou[ index_rnd]
Programare Orientat pe Obiecte cursul 5 39 Zoltan Hascsi
Exemplu: un tablou bidimensional
int[ ] [ ] a; // declararea tabloului

null a
Programare Orientat pe Obiecte cursul 5 40 Zoltan Hascsi
Exemplu: un tablou bidimensional
int[ ] [ ] a; / / decl ar ar ea t abl oul ui
a = new int[ 2] [ ] ; // instantierea primului nivel

2
l engt h
null
0
null
1
a
Programare Orientat pe Obiecte cursul 5 41 Zoltan Hascsi
Exemplu: un tablou bidimensional
int[ ] [ ] a; / / decl ar ar ea t abl oul ui
a = new int[ 2] [ ] ; / / i nst ant i er ea pr i mul ui ni vel
a[ 0] = new int[ 2] ; // instantiere pe ultimul nivel

2
l engt h
0
nul l
1
a
2
l engt h
0 0
0
1
Programare Orientat pe Obiecte cursul 5 42 Zoltan Hascsi
Exemplu: un tablou bidimensional
int[ ] [ ] a; / / decl ar ar ea t abl oul ui
a = new int[ 2] [ ] ; / / i nst ant i er ea pr i mul ui ni vel
a[ 0] = new int[ 2] ; / / i nst ant i er e pe ul t i mul ni vel
a[ 1] = new int[ 3] ; // instantiere pe ultimul nivel

2
l engt h
0
1
a
3
l engt h
0 0
0
1
0
2
2
l engt h
0 0
0
1
Programare Orientat pe Obiecte cursul 5 43 Zoltan Hascsi
Exemplu: un tablou bidimensional
int[ ] [ ] a; / / decl ar ar ea t abl oul ui
a = new int[ 2] [ ] ; / / i nst ant i er ea pr i mul ui ni vel
a[ 0] = new int[ 2] ; / / i nst ant i er e pe ul t i mul ni vel
a[ 1] = new int[ 3] ; / / i nst ant i er e pe ul t i mul ni vel
a[ 1] [ 2] = 2007; // acces
2
l engt h
0
1
a
3
l engt h
0 0
0
1
2007
2
2
l engt h
0 0
0
1
Programare Orientat pe Obiecte cursul 5 44 Zoltan Hascsi
Tablou bidimensional: iniializare complet
int[ ] [ ] a = {{11, 13}, {17, 19, 21}};
Lungimea fiecrui tablou este dat de numrul de
elemente dintre parantezele acolade corespunztoare.

2
l engt h
0
1
a
3
l engt h
17 0
19
1
21
2
2
l engt h
11 0
13
1
Programare Orientat pe Obiecte cursul 5 45 Zoltan Hascsi
Tablou bidimensional: iniializare complet
int[ ] [ ] a = {{11, 13}, {17, 19, 21}};
a. l engt h este lungimea tabloului de pe primul nivel.
a[ 1] . l engt h este lungimea tabloului la care face referire
elementul a[ 1] al tabloului de pe primul nivel.
2 elemente nivelul 1
3 elemente
2 elemente nivelul 0
Programare Orientat pe Obiecte cursul 5 46 Zoltan Hascsi
Tablou bidimensional: iniializare cu referine
int[ ] b = new int [ 2] ;
int[ ] c = new int [ 3] ;


3
l engt h
0 0
0
1
0
2
2
l engt h
0 0
0
1
b
c
Programare Orientat pe Obiecte cursul 5 47 Zoltan Hascsi
Tablou bidimensional: iniializare cu referine
int[ ] b = new int [ 2] ;
int[ ] c = new int [ 3] ;
{ , }

2
l engt h
0
1

3
l engt h
0 0
0
1
0
2
2
l engt h
0 0
0
1
b
c
Programare Orientat pe Obiecte cursul 5 48 Zoltan Hascsi
Tablou bidimensional: iniializare cu referine
int[ ] b = new int [ 2] ;
int[ ] c = new int [ 3] ;
{b, c}

2
l engt h
0
1

3
l engt h
0 0
0
1
0
2
2
l engt h
0 0
0
1
b
c
Programare Orientat pe Obiecte cursul 5 49 Zoltan Hascsi
Tablou bidimensional: iniializare cu referine
int[ ] b = new int [ 2] ;
int[ ] c = new int [ 3] ;
{b, c}

2
l engt h
0
1

3
l engt h
0 0
0
1
0
2
2
l engt h
0 0
0
1
b
c
Programare Orientat pe Obiecte cursul 5 50 Zoltan Hascsi
Tablou bidimensional: iniializare cu referine
int[ ] b = new int [ 2] ;
int[ ] c = new int [ 3] ;
int[ ] [ ] a {b, c}

2
l engt h
0
1
a
3
l engt h
0 0
0
1
0
2
2
l engt h
0 0
0
1
b
c
Programare Orientat pe Obiecte cursul 5 51 Zoltan Hascsi
Tablou bidimensional: iniializare cu referine
int[ ] b = new int [ 2] ;
int[ ] c = new int [ 3] ;
int[ ] [ ] a = {b, c};

2
l engt h
0
1
a
3
l engt h
0 0
0
1
0
2
2
l engt h
0 0
0
1
b
c
Programare Orientat pe Obiecte cursul 5 52 Zoltan Hascsi
Tablou bidimensional. Recapitulare
int[ ] [ ] a = new int[ 2] [ ] ;
a[ 0] = new int[ 2] ; a[ 1] = new int[ 3] ;
a[ 0] [ 0] = 11; . . .
int[ ] [ ] a = {new int[ 2] , new int[ 3] };
a[ 0] [ 0] = 11; . . .
int[ ] b = new int[ 2] ; b[ 0] = 11; . . .
int[ ] c = new int[ 3] ; c[ 0] = 17; . . .
int[ ] [ ] a = {b, c};
int[ ] [ ] a = {{11, 13}, {17, 19, 21};
int[ ] b = new int[ 2] ; int[ ] c = new int[ 3] ;
int[ ] [ ] a = {b, c}; a[ 0] [ 0] = 11; . . .
Programare Orientat pe Obiecte cursul 5 53 Zoltan Hascsi
Lungimea pe dimensiuni
a. l engt h este lungimea tabloului de pe primul nivel.

2
l engt h
0
1
a
3
l engt h
17 0
19
1
21
2
2
l engt h
11 0
13
1
Programare Orientat pe Obiecte cursul 5 54 Zoltan Hascsi
Lungimea pe dimensiuni
a[ 1] . l engt h este lungimea tabloului la care face referire
elementul a[ 1] al tabloului de pe primul nivel.

2
l engt h
0
1
a
3
l engt h
17 0
19
1
21
2
2
l engt h
11 0
13
1
Programare Orientat pe Obiecte cursul 5 55 Zoltan Hascsi
Tablou multidimensional
Tabloul multidimensional este o ierarhie de tablouri.
Cu excepia ultimului nivel toate celelalte tablouri sunt
tablouri de referine.
Tablourile de pe ultimul nivel pot fi tablouri de variabile
de tip primitiv sau tablouri de obiecte (de referine la
obiecte).
Tablourile de pe ultimul nivel au elemente de acelai tip,
tipul din declaraia tabloului multidimensional.
Fiecare tablou poate avea orice lungime, dar odat
iniializat lungimea lui nu se poate schimba.
Programare Orientat pe Obiecte cursul 5 56 Zoltan Hascsi
Tablou de obiecte tablou
Orice declaraie de tablou multidimensional poate fi
privit ca o declaraie de tablou de variabile (de tip
primitiv sau referin).
Tip [ ] numeTablou;
Tip este int => tablou de ntregi:
int[ ] numeTablou;
Tip este int[ ] => tablou de tablouri de ntregi:
int[ ] [ ] numeTablou;
Tip este int[ ] [ ] => tablou de tablouri bidimensionale
de ntregi:
int[ ] [ ] [ ] numeTablou;
tipul ariei
Programare Orientat pe Obiecte cursul 5 57 Zoltan Hascsi
Instanieri pariale
Se instaniaz obiectele tablou de pe nivelele
superioare.
Exemple:
int[ ] [ ] [ ] a = new int[ 2] [ ] [ ] ;
int[ ] [ ] [ ] a = new int[ 2] [ 3] [ ] ;
Nu se admit instanieri pariale ncepnd cu nivelele
inferioare, sau care specific lungimile pe srite:
int[ ] [ ] [ ] a = new int[ ] [ 3] [ ] ;
int[ ] [ ] [ ] a = new int[ ] [ 3] [ 4] ;
int[ ] [ ] [ ] a = new int[ 2] [ ] [ 4] ;
Programare Orientat pe Obiecte cursul 5 58 Zoltan Hascsi

2
l engt h
0
1
a
2
l engt h
0
1
2
l engt h
0
1
2
l engt h
0 0
0
1
2
l engt h
0 0
0
1
2
l engt h
0
0
0 1
2
l engt h
2007
0
0 1
[1]
[0]
[0]
Tablou multidimensional
int [ ] [ ] [ ] a = a[ 2] [ 2] [ 2] ;
a[ 1] [ 0] [ 0] = 2007;

S-ar putea să vă placă și