Skip to content

Commit 37a9703

Browse files
committed
Exercitiu Clase: Tip de Date 'Special'
1 parent 18669e1 commit 37a9703

File tree

2 files changed

+110
-0
lines changed

2 files changed

+110
-0
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
4+
<head>
5+
<meta charset="UTF-8" />
6+
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
7+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
8+
<title>
9+
Exercitiu Clase: Tip de Date 'Special'
10+
</title>
11+
</head>
12+
13+
<body>
14+
<h1>Exercitiu Clase: Tip de Date 'Special'</h1>
15+
16+
<!-- IMPORT FISIER EXTERN JS -->
17+
<script src="js/clase/ex__clase___stiva_(tip_de_date_special).js"></script>
18+
</body>
19+
20+
</html>
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
/* ===============================================================
2+
EXERCITIU CLASE ES6 (ECMASCRIPT6)::
3+
'STIVA' (STACK) - TIP DE DATE 'SPECIAL'
4+
=================================================================*/
5+
6+
/*
7+
(#) Este un Tip de Date 'Special'.
8+
9+
(#) Stiva are urmatoarele Operatiuni esentiale:
10+
[1] 'PUSH()' -> pt. 'Adaugarea' unui 'Obiect' in 'Cutie'.
11+
12+
[2] 'POP()' -> pt. 'Sterrgerea' unui 'Obiect' din 'Cutie'.
13+
14+
[3] 'PEEK()' -> pt. 'Ridicare in Sus' a unui 'Obiect' din 'Cutie'
15+
fara a-l 'Sterge' din 'Cutie'.
16+
17+
18+
(NB!) INTR-O 'STIVA'
19+
=> NU TREBUIE SA AVEM ACCES LA MODIFICAREA OBIECTELOR
20+
=> UTILIZAN 'INDEXUL' ACESTORA.
21+
*/
22+
23+
24+
//=================================================================
25+
// (0) DEF. 'PROP. PRIVATA' -> PRIN 'WEEKMAP()':
26+
//=================================================================
27+
const _elemente = new WeakMap();
28+
29+
30+
//=================================================================
31+
// (1) CLASA 'STIVA':
32+
//=================================================================
33+
class Stiva {
34+
35+
// CONSTRUCTORUL:
36+
constructor() {
37+
38+
// MATRICEA (PT. 'STOCAREA OBIECTELOR' IN 'STIVA')
39+
// PRIN 'PROP. PRIVATA' & MET. 'SET(CHEIE,)':
40+
_elemente.set(this, []);
41+
}
42+
43+
44+
// MET. 'PUSH()' (PT. 'ADAUGAREA OBIECTELOR' IN 'MATRICEA GOALA')
45+
push(obiect) {
46+
// ACCESAREA 'MATRICEI'
47+
// PRIN 'PROP. PRIVATA' & MET. 'GET(CHEIE)'
48+
// & MET. 'PUSH(PARAMETRU)':
49+
_elemente.get(this).push(obiect);
50+
}
51+
52+
// MET. 'POP()' (PT. 'STERGEREA OBIECTELOR' DIN 'MATRICE')
53+
pop(obiect) {
54+
55+
// 'STOCAREA MATRICEI' INTR-O 'CONSTANTA':
56+
const elemente = _elemente.get(this);
57+
58+
// VERIFICAM - DACA 'MATRICEA' ESTE 'GOALA' SAU NU:
59+
if (elemente.length === 0)
60+
// ARUNCAM EROAREA:
61+
throw new Error('Stiva este Goala!');
62+
63+
// IN CAZ 'CONTRAR' -> 'STERGEM OBIECTUL' DIN 'VARFUL STIVEI'
64+
// (PRIN APELAREA METODEI 'POP()'):
65+
return elemente.pop();
66+
}
67+
68+
69+
// MET. 'PEEK' (PT. 'RIDICAREA OBIECTULUI' -> IN 'VARFUL STIVEI')
70+
peek() {
71+
72+
// 'STOCAREA MATRICEI' INTR-O 'CONSTANTA':
73+
const elemente = _elemente.get(this);
74+
75+
// VERIFICAM - DACA 'MATRICEA' ESTE 'GOALA' SAU NU:
76+
if (elemente.length === 0)
77+
// ARUNCAM EROAREA:
78+
throw new Error('Stiva este Goala!');
79+
80+
// IN CAZ 'CONTRAR' -> 'RIDICAM OBIECTUL' IN 'VARFUL STIVEI'
81+
return elemente[elemente.length - 1];
82+
}
83+
84+
85+
// 'GETTER' - MET 'COUNT()':
86+
get count() {
87+
// RETURNAM 'LUNGIMEA MATRICEI':
88+
return _elemente.get(this).length;
89+
}
90+
}

0 commit comments

Comments
 (0)