Salut Jocelyn,
Merci de votre intérêt pour le projet "bank_account".
Il s'agit du projet « exemple » construit pour un cours « Application de l'Orienté-Objet avec Eiffel ».
La première chose que j'enseigne, c'est l'abstraction. C'est-à-dire de raisonner sur les choses et pas sur leur représentation.
Créer BANK_ACCOUNT_NUMBER est intéressant parce que cela met en valeur la notion-même de numéro de compte bancaire.
Comme premier jet on enrobe juste un string. Cela ne mange pas de pain.
D'autre part cela met en valeur le fait que le numéro associé à un compte n'est pas juste un entier ou une chaîne de caractères et qu'il y a des contraintes et une sémantique à respecter. Enfin, cela décomplexe le développeur débutant qui a « peur » de créer une classe, mais est à l'aise d'utiliser ce qui existe déjà.
Dans la réalité cette classe exposerait certainement d'autres services très utiles. Selon le point de vue, juste un numéro ou une chaîne de caractères. Mais aussi la banque, l'agence, un nombre de contrôle, une correspondance européenne avec BIC et IBAN, etc...
Enfin du point de vue typage, la classe BANK_ACCOUNT_NUMBER se justifie parce que j'ai pas envie qu'on vienne mettre n'importe quel numéro ou chaîne de caractères; quelle différence entre un integer et un integer ? Par contre le compilateur m'aide parce qu'il distingue très bien une instance de BANK_ACCOUNT_NUMBER et de SOCIAL_SECURITY_NUMBER. Vous me suivez?
Idem pour BANK_ACCOUNT_TRANSACTIONS. Cette abstraction représente bien des
transactions bancaires dans le domaine du problème.
Le fait qu'on utilise un stack, une file, ou autre chose est vraiment secondaire.
Imaginez qu'on veuille ajouter une opération « purge », qui purge les transactions vieilles de n mois. Avec BANK_ACCOUNT_TRANSACTIONS, c'est facile à ajouter : la méthode 'purge' et son implémentation. Un client écrirait ainsi 'transactions.purge'. Et le code se rapproche de l'analyse...
Avec une LINKED_STACK comment on ferait ?
Je serais curieux de voir comment vous réagissez à ma
réponse.
Cordialement,
Paul G. Crismer
--Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Groupe des Eiffelistes Francophones.
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse groupe_eiffelistes_fr...@googlegroups.com.
Pour plus d'options, visitez le site https://groups.google.com/groups/opt_out .