ATM machine written in Java, with interface.
danh957 / atm-machine Goto Github PK
View Code? Open in Web Editor NEWATM machine written in Java, with interface.
ATM machine written in Java, with interface.
Hola, estuve explorando tu repositorio y en la clase Withdrawal tienes un método transaction() el cual realiza algunas validaciones para poder verificar la transacción realizada. Mi recomendación aqui en este método en lugar de tener muchos condicionales se cree tantas clases como procesos de verificación se tienen para de esta manera en el método transaction() solo llame a un método execute() el cual va por cada clase de proceso de verificación para validar la transacción y si en algun momento no se valida retorna algo dependiendo de la clase que se encuentra y saber con exactitud donde no se valida la transaccion. A esto se lo conoce como patrón de diseño Chain of Responsibility y esto a su vez te permitira cumplir el principio SOLID de Single Responsibility Adjunto un diagrama de clases para que mi recomendación sea más entendible
Hola, dentro del repositorio en la clase ATM.java, he podido apreciar que según el botón del keypad se crea una transacción diferente, y en cierto caso (3) se realiza otra función, screen.setSize
Entiendo que el objetivo es crear una transacción dependiendo lo que escoja el usuario en tiempo de ejecución, por lo que se puede aplicar el patrón Strategy para englobar todo lo que se desea realizar (crear transacción y operaciones)
Se lo puede hacer de la siguiente manera:
Dentro de la clase ATM, crear un atributo context que almacenará el objeto de tipo Strategy, y cada estrategia concreta detallará los pasos a realizar en caso de seguir ese camino.
Saludos
Hola, revisando el repositorio me di cuenta que la clase BankDataBase cuenta con un constructor público, lo cual puede ser un poco peligroso, ya que en teoría solo debe existir una única base de datos para el desarrollo del proyecto. Es por esto, que he planteado una solución usando el patrón Singleton, para asegurarse que la instancia de esta clase sea única.
Debemos crear un método getInstance, para que devuelva la instancia que ya se ha creado, o crearla si aún no existe, además establecer el constructor privado para que no se tenga acceso a él, fuera de esta clase.
Así, en cualquier momento que se necesite se puede hacer referencia a esta única base de datos, solucionando el posible problema de tener bases de datos repetidas.
Saludos
I fixed most of your program. Haven't been through the program thoroughly, and am not sure how the PIN is generated to test the ATM program, but if you could share it would be most appreciated.
On line 69, for the else statement, my IDE is giving me a syntax error and to delete this statement.
Hi Dear, code is not executing .its getting errors when exceuting main method class ATMCaseStudy.java
Hola, revisando el repositorio en la clase CashDispenser, el método dispenseCash, realiza ciertas operaciones para la entrega de dinero.
Considero que el método debe solo realizarse si el ATM cuenta con la cantidad necesaria, es por esto que he refactorizado el código aplicando Substitute Algorithm quedando así:
C program to display how ATM machine works
First, thank you for such great code. A few points:
Lines 15 and 16 in Account.java
are undefined:
setPIN(thePIN);
setAvailableBalance(theAvailableBalance);
Consequently lines 42 and 74 throw errors.
Moreover, lines 30, 92, and 93 throw errors because of undefined methods in BankDatabase.java
.
And, per issue #1 , deposit slot is missing. Do you have refactored code available? Otherwise, this is wonderful, but the errors may cause confusion for folks using this app and associated code for the first time.
Thank you for constructing this project, which has been really useful for me and my mentees/students.
Cheers
Milo
Hola, estuve revisando el repositorio y me fijé que en la clase CashDispenser.java, el método isSufficientCashAvailable tiene una lógica sencilla pero toma muchos pasos para realizar, hasta la aplicación del If es redundante:
Es por esto que he pensado en una manera de refactorizarlo, aplicando inline temp para que el código disminuya pero sea igual de entendible. Así:
There is an error in your code since DepositSlot class is missing.
If there is any such mistake or file missing then update your repo with error free.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.