Giter Site home page Giter Site logo

rajyash1904 / atm-machine Goto Github PK

View Code? Open in Web Editor NEW
199.0 5.0 207.0 23 KB

This Project is to make an automated Teller machine with user's Account Number, and Password, bank account, with that users can withdraw, deposit, and view their account balance.

License: MIT License

Java 100.00%
java java-project projects atm atm-project

atm-machine's Introduction

The-Pig-Game

The Pig Dice Game created in Javascript

atm-machine's People

Contributors

alexdt1982 avatar bibhu042403 avatar elkinsd96 avatar iamanubhav-08 avatar nihal1993 avatar niish03 avatar porfanid avatar rajyash1904 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

atm-machine's Issues

Sugerencia de implementacion de patrón Composite

Hola revise el programa y te propongo posibles implementaciones de patrones de diseño que mejoraran el funcionamiento y organización del código ya existente.
Identifique que es posible utilizar Composite.
El motivo de la implementación de este patrón es que tenemos dentro del programa dos tipos de opciones para el levantamiento de una cuenta. En el sistema bancario existen cuentas de ahorros y cuentas corrientes. Cada cliente tiene la opción de escoger la cuenta que tiene o que desea abrir.
Para mejorar la estructura se crea una interfaz común que declara los métodos que poseen cada una de las cuentas. A más de esto existen hojas como los cheques y las tarjetas que son utilizados de manera específica como en la cuenta corriente que utiliza cheques y otras generales como las tarjetas que son utilizados por los dos tipos de cuentas.
Te adjunto tambien un diagrama de clases uml con la explicacion de lo antes mencionado.
Composite_UML.pdf

Unnecessary Login Option in ATM Machine Project

There is a redundant "Login" option provided even when no user accounts exist. This option should not be available unless user accounts have been created.

Steps to Reproduce:
Comment out the initially added hardcoded accounts in OptionMenu.java line:185-186
Access the ATM Machine project.
Observe the initial user interface.

Expected Behavior:

The user interface should not display the "Login" option when there are no user accounts created. Instead, it should only provide the "Create Account" option to guide users in setting up their accounts.

Actual Behavior:

The user interface displays both "Login" and "Create Account" options, even though there are no user accounts created yet. When selecting the "Login" option, it leads to confusion as there are no existing accounts to log into.

Additional Information:

This issue impacts the user experience negatively, as it can confuse users and make it seem as though they should have an account already. To enhance usability and clarity, it is recommended to remove the "Login" option until at least one user account has been created.

image

Refactoring with Design Patterns

Composite.
Objetivo.
Construir menú de opciones complejos mediante la composición recursiva de menús similares, simples o compuestos.

Motivación.
La clase OptionMenu cuenta con todas las posibles opciones que hasta el momento oferta el sistema emulador de un Cajero automático, pero para un futuro que se deseen agregar funcionalidades va a ser obligatorio modificar el código fuente de OptionMenu, lo correcto sería solo añadir a la estructura del sistema la nueva funcionalidad como un módulo independiente.

image
image

Consecuencias del rediseño.
Por medio de la estructura basada en el patrón de diseño composite se hizo posible la añadidura de nuevas funcionalidades a un menú ya existente de manera dinámica y sencilla, como suma de un nuevo módulo sin modificar código en otras clases, lo que fortalece la escalabilidad de código e incentiva Open-Clouse Principle.

image
image

Decorator.
Objetivo.
Añadir dinámicamente características y funcionalidades para crear diferentes tipos de cuentas.

Motivación.
En la clase original nombrada como Account existían variables y métodos individuales para cuentas de tipo de ahorro y corriente, el problema surge que una cuenta de tipo corriente no usa todos sus métodos y variables de instancia, solo las que significan su tipo y viceversa. Esto es un problema para el uso de memoria, la sencillez de código y la escalabilidad del sistema.

image
image

Consecuencias del rediseño.
Mediante la implementación de la estructura del patrón de diseño Decorator se pueden crear futuros tipos de cuentas básicas mediante la extensión de la nueva clase abstracta Account y añadir más decoradores a esos tipos de cuentas para asignar funcionalidades y características adicionales dinámicamente extendiendo de la clase abstracta AccountDecorator, como CollectiveAccount. Con esta refactorización de código en la clase OptionoMenu se trata indistintamente a todas las cuentas.

image
image
image
image

Diagrama UML de clases.
image
image

Report of SOLID

Hi! This message is a suggestion for your code to be SOLID compliant.
Inheritance in the account class allows the checking account and savings account classes to handle their own transactions. Complying with Single Responsibility Principle.

The ATM and OptionMenu classes inherit from Account class, this element aren't relationship with inherit and maybe in the future the class will have unnecessary inheritance. Open-Close Principle.

Fix the project structure

I think it would be a good idea to fix the project structure a bit. Such as the readme file, add a license etc

Sugerencia de implementacion del patrón Chain of Responsability

Hola revise el programa y te propongo posibles implementaciones de patrones de diseño que mejoraran el funcionamiento y organización del código ya existente.

El motivo de su implementación es poder evitar los errores al momento en que un cliente quiera realizar una acción específica. En el caso de nuestro programa el cliente tiene dos opciones, depositar su dinero o retirar el dinero de su cuenta.
Por lo tanto dentro del programa tenemos dos eventos diferentes que haremos que implementen de una interfaz en común que actuara como handler para mantener manejado cada evento de manera secuencial.
Con esto se evitará la propagación de errores y se podrán así manejar las solicitudes del usuario de una manera más segura y eficaz.

Te adjunto tambien un diagrama de clases uml con la explicacion de lo antes mencionado.
Chain of Responsability_UML.pdf

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.