Parcours
/
MoonScript
MoonScript
/
Exercices
/
Compte bancaire
Compte bancaire

Compte bancaire

Facile

Introduction

Après des années à remplir des formulaires et à attendre, tu as enfin obtenu ta licence bancaire. Cela signifie que tu es désormais officiellement autorisé à ouvrir ta propre banque, hourra !

Ta première priorité est de mettre les systèmes informatiques en marche. Après une journée de dur labeur, tu peux déjà ouvrir et fermer des comptes, ainsi que gérer les retraits et les dépôts.

Comme tu n'avais pas envie de te fatiguer à écrire des tests, tu invites quelques amis à venir tester le système. Mais au bout de cinq minutes à peine, l'un de tes amis affirme avoir perdu de l'argent ! Même si tu es convaincu que ton code ne contient aucun bug, tu commences à parcourir les logs pour enquêter.

Ah oui, comme tu le soupçonnais, c'est ton ami qui est en tort ! Il a partagé ses identifiants de test avec un autre ami, et ensemble ils ont conspiré pour faire des dépôts et des retraits sur le même compte en parallèle. Qui ferait une chose pareille ?

Alors que tu soutiens qu'il est physiquement impossible d'accéder à son compte en parallèle, ton ami te fait remarquer d'un air suffisant que les règles bancaires exigent que tu prennes cela en charge. Donc, pas de prise en charge bancaire en parallèle, pas de feu vert pour la mise en production. Avec un soupir, tu prends mentalement note de t'y pencher demain. Cela repoussera ta date de lancement d'au moins un jour de plus, mais bon...

Instructions

Ta tâche consiste à implémenter des comptes bancaires qui prennent en charge l'ouverture et la fermeture, les retraits et les dépôts d'argent.

Comme on peut accéder aux comptes bancaires de bien des manières (internet, téléphones mobiles, prélèvements automatiques), ton logiciel bancaire doit permettre d'accéder aux comptes en toute sécurité depuis plusieurs threads/processus (la terminologie dépend de ton langage de programmation) en parallèle. Par exemple, il peut y avoir de nombreux dépôts et retraits en parallèle ; tu dois t'assurer qu'il n'y a pas de conditions de concurrence entre le moment où tu lis le solde du compte et celui où tu définis le nouveau solde.

Il doit être possible de fermer un compte ; les opérations sur un compte fermé doivent échouer.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
MoonScript Exercism

Prêt à commencer Compte bancaire ?

Inscris-toi sur Exercism pour apprendre et maîtriser MoonScript avec 126 exercices, et un vrai mentorat humain, le tout gratuitement.