-
Notifications
You must be signed in to change notification settings - Fork 0
/
protected.ts
52 lines (43 loc) · 1.27 KB
/
protected.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
export class Empresa {
readonly nome: string
protected readonly colaboradores: Colaborador[] = []
private readonly cnpj: string
constructor(nome: string, cnpj: string) {
this.nome = nome
this.cnpj = cnpj
}
adicionaColaborador(colaborador: Colaborador): void {
this.colaboradores.push(colaborador)
}
mostrarColaboradores(): void {
for (const colaborador of this.colaboradores) {
console.log(colaborador)
}
}
}
export class Colaborador {
constructor(
public readonly nome: string,
public readonly sobrenome: string,
) {}
}
export class Qualquer_Empresa extends Empresa {
constructor() {
super('Nome da Empresa', '11.111.111/0001-11')
}
popColaborador(): Colaborador | null {
const colaborador = this.colaboradores.pop()
if (colaborador) return colaborador
return null
}
}
const empresa1 = new Qualquer_Empresa()
const colaborador1 = new Colaborador('José', 'Miranda')
const colaborador2 = new Colaborador('Maria', 'Souza')
const colaborador3 = new Colaborador('Lucia', 'Lima')
empresa1.adicionaColaborador(colaborador1)
empresa1.adicionaColaborador(colaborador2)
empresa1.adicionaColaborador(colaborador3)
const colaboradorRemovido = empresa1.popColaborador()
console.log(colaboradorRemovido)
console.log(empresa1)