Percursos
/
Wren
Wren
/
Exercícios
/
Conta bancária
Conta bancária

Conta bancária

Fácil

Introdução

Depois de anos a preencher formulários e à espera, conseguiste finalmente a tua licença bancária. Isto significa que tens agora oficialmente o direito de abrir o teu próprio banco, viva!

A tua primeira prioridade é pôr os sistemas informáticos a funcionar. Depois de um dia de trabalho árduo, já consegues abrir e fechar contas, e ainda tratar de levantamentos e depósitos.

Como não te apetecia escrever testes, convidas uns amigos para ajudar a testar o sistema. No entanto, ao fim de apenas cinco minutos, um dos teus amigos afirma ter perdido dinheiro! Embora tenhas a certeza de que o teu code está livre de bugs, começas a percorrer os registos para investigar.

Ah, pois, exatamente como suspeitavas, a culpa é do teu amigo! Partilhou as credenciais de teste com outro amigo e, juntos, conspiraram para fazer depósitos e levantamentos na mesma conta em paralelo. Quem faria uma coisa dessas?

Enquanto argumentas que é fisicamente impossível que alguém aceda à sua conta em paralelo, o teu amigo avisa-te, com um ar presunçoso, de que as regras bancárias exigem que dês apoio a isso. Ou seja: sem suporte para operações bancárias em paralelo, não há sinal de lançamento. Suspiras e fazes uma nota mental para tratar disto amanhã. Isto vai adiar a tua data de lançamento em pelo menos mais um dia, mas enfim...

Instruções

A tua tarefa é implementar contas bancárias que suportem a abertura e o fecho, levantamentos e depósitos de dinheiro.

Como as contas bancárias podem ser acedidas de muitas formas diferentes (internet, telemóveis, cobranças automáticas), o teu software bancário tem de permitir que se aceda às contas em segurança a partir de múltiplas threads/processos (a terminologia depende da tua linguagem de programação) em paralelo. Por exemplo, pode haver muitos depósitos e levantamentos a acontecer em paralelo; tens de garantir que não existem condições de corrida entre o momento em que lês o saldo da conta e o momento em que defines o novo saldo.

Deve ser possível fechar uma conta; as operações sobre uma conta fechada têm de falhar.

Instruções específicas do Wren

Não há testes para paralelismo (ou concorrência) no percurso do Wren. Não tens de te preocupar com condições de corrida.

Editar via GitHub A ligação abre numa nova janela ou separador
Wren Exercism

Estás pronto para começar Conta bancária?

Inscreve-te no Exercism para aprenderes e dominares Wren com 117 exercícios, e mentoria humana real, tudo grátis.