-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path08-desafio-final.js
More file actions
85 lines (66 loc) · 2.49 KB
/
08-desafio-final.js
File metadata and controls
85 lines (66 loc) · 2.49 KB
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/*************************************************************
🧠 Desafio Final: Sistema Bancário com JavaScript POO
**************************************************************/
/*
🎯 Objetivo:
Criar um sistema bancário simples utilizando apenas JavaScript puro
(sem bibliotecas externas), aplicando os pilares da Programação
Orientada a Objetos (POO).
*/
/*************************************************************
🏦 Requisitos do Sistema
**************************************************************/
/*
1. Classe (ou função construtora) Account - Classe base
--------------------------------------------------------
🔹 Propriedades:
- owner: titular da conta
- balance: saldo da conta (valor padrão: 0)
- #password: senha da conta (privado, com encapsulamento real)
🔹 Métodos:
- deposit(amount): adiciona valor ao saldo
- withdraw(amount): remove valor do saldo (com validações)
- get balance: getter para retornar saldo atual
- set password: setter que verifica se a senha tem pelo menos 6 caracteres
*/
/*
2. SavingsAccount - Conta Poupança
----------------------------------
🔹 Herda de: Account
🔹 Propriedade extra:
- interestRate: taxa de juros
🔹 Método adicional:
- applyInterest(): aplica a taxa de juros ao saldo
*/
/*
3. CurrentAccount - Conta Corrente
----------------------------------
🔹 Herda de: Account
🔹 Propriedade extra:
- overdraftLimit: limite do cheque especial
🔹 Sobrescrita de método:
- withdraw(): permite saldo negativo até o limite de cheque especial
*/
/*
4. Classe Bank
--------------
🔹 Propriedade:
- accounts: lista de contas registradas no banco
🔹 Métodos:
- addAccount(account): adiciona uma conta à lista
- findAccountByOwner(name): busca uma conta pelo nome do titular
- transfer(from, to, amount): transfere saldo entre contas
🔹 Método estático:
- static bankInfo(): retorna nome fictício do banco e ano de fundação
*/
/*************************************************************
💡 Extras (desafio opcional para elevar a complexidade)
**************************************************************/
/*
- Criar uma classe Transaction para registrar o histórico de transações
- Método getStatement() que exibe o extrato de movimentações da conta
- Implementar bloqueio de conta após 3 tentativas de senha errada
- Usar encapsulamento real com # ou Symbol para atributos privados
- Utilizar Object.defineProperty para personalizar getters/setters
- Usar Object.freeze() para proteger objetos contra modificações
*/