Está en la página 1de 34

1

PROGRAMA DE CAJERO AUTOMATICO


USANDO LA PROGRAMACION
ORIENTADA A OBJETOS
2

ÍNDICE

1. INTRODUCCIÓN……………………………………………………………..5

2. OBJETIVOS …………………………………………………………………..6

2.1.Hipotesis…………………………………………………………………...6

2.2.Alcance…………………………………………………………………….6

3. SOLUCIÓN PROPUESTA …………………………………………………...7

4. METODOLOGÍA DE

INVESTIGACIÓN…………………………………………………………….8

4.1.Base Teórica……………….………………………………………………8

4.2. Implementación del Código……………………………………………..14

5. ANÁLISIS DE RESULTADOS……………………………………………..29

6. CONCLUSION……………………………………………………………....32

7. BIBLIOGRAFIA…………………………………………………………….33
3

1.INTRODUCCION

Se realizar un programa de Cajero Automático , en lenguaje Java Script , usando la

programación orientado a Objetos (POO)que nos otorga características que optimizan los

recursos ya que nos permite utilizar el polimorfismo, herencias, etc

Se explicara con la base teórica la programación Orientada a Objetos ,sus características y el

Lenguaje de Programación Java.

Se explicara en base a comentarios el código realizado usando la POO y el funcionamiento

del programa.

Se demostrara la eficiencia que tiene usar las herramientas propuestas para la realización del

programa.
4

2.OBJETIVOS

El objetivo es usar la programación Orientada a objetos para un programa de Cajeros

Automático ya que nos permite simular en el diseño y código la realidad de las acciones y

objetos .

2.1Hipotesis

Que tan eficiente en seguridad ,rapidez ,estabilidad y funcional es usar la programación

Orientada a Objetos para las operaciones que se realizan en un Cajero Automático

2.2Alcance

Los alcances que se deben tener en cuenta para la realización del programa son:

Mediante que entorno una persona realiza operaciones de su cuenta bancaria.

Que datos de validación ingresa un persona para seleccionar las transacciones con su cuenta.

Definir cuales son las transacciones que realiza una persona al usar el cajero .

Teniendo conocimiento de estos puntos se puede desarrollar el programa.


5

3.SOLUCIÓN PROPUESTA

Hacer un programa que automatice las transacciones bancarias de Deposito y Retiro de dinero

de una cuenta. Por lo eficiente que han demostrado ser ,se usaran las siguientes herramientas:

 El lenguaje de programación en Java porque es un lenguaje multiplataforma .

 La programación Orientada a Objetos porque permite simular la realidad .


6

4.METODOLOGÍA DE INVESTIGACIÓN

Para poder desarrollar el programa explicaremos la Base Teórica de los elementos que la

conformaran.

4.1Base Teórica

Lenguaje de Programación Java :

Java es un lenguaje de programación y una plataforma informática que fue comercializada por

primera vez en 1995 por Sun Microsystems. Java es rápido, seguro y fiable. Desde portátiles

hasta centros de datos, desde consolas para juegos hasta computadoras avanzadas, desde

teléfonos móviles hasta Internet, Java está en todas partes, si es ejecutado en una plataforma

no tiene que ser recompilado para correr en otra.

El lenguaje de programación Java fue desarrollado originalmente por James Gosling, de Sun

Microsystems y publicado en 1995 como un componente fundamental de la plataforma Java

de Sun Microsystems. Su sintaxis deriva en gran medida de C y C++, pero tiene menos

utilidades de bajo nivel que cualquiera de ellos. Las aplicaciones de Java son compiladas a

bytecode (clase Java), que puede ejecutarse en cualquier máquina virtual Java (JVM) sin

importar la arquitectura de la computadora subyacente.

La decisión de usar el Lenguaje Java para desarrollar el programa es por sus siguientes

características :

1. Debería usar el paradigma de la programación orientada a objetos.

2. Debería permitir la ejecución de un mismo programa en múltiples sistemas operativos.

3. Debería incluir por defecto soporte para trabajo en red.

4. Debería diseñarse para ejecutar código en sistemas remotos de forma segura.


7

5. Debería ser fácil de usar y tomar lo mejor de otros lenguajes orientados a objetos,

como C++.

6. El optimo uso de la memoria que emplea Java

La programación orientada a objetos (POO) 

Es un paradigma de programación que usa objetos para crear aplicaciones. Está basada en tres

pilares fundamentales: herencia, polimorfismo, encapsulación. Su uso se popularizó a

principios de la década de 1990. En la actualidad, existe una gran variedad de lenguajes de

programación que soportan la orientación a objetos, entre ellos Java.

Ventajas de la programación orientada a objetos:

 Fomenta la reutilización y ampliación del código.

 Permite crear sistemas más complejos.

 La programación se asemeja al mundo real.

 Agiliza el desarrollo de software.

 Facilita el trabajo en equipo.

Lo interesante de la POO es que proporciona conceptos y herramientas con las cuales se

modela y representa el mundo real tan fielmente como sea posible.

Para entender este modelo vamos a revisar 2 conceptos fundamentales: clases y objetos

Las clases

En el mundo real, normalmente tenemos muchos objetos del mismo tipo. Por ejemplo, nuestro

teléfono móvil es sólo uno de los miles que hay en el mundo. Si hablamos en términos de la

programación orientada a objetos, podemos decir que nuestro objeto móvil es una instancia de

una clase conocida como “móvil”. Los móviles tienen características (marca, modelo, sistema
8

operativo, pantalla, teclado, etc.) y comportamientos (hacer y recibir llamadas, enviar

mensajes multimedia, transmisión de datos, etc.).

Cuando se fabrican los móviles, los fabricantes aprovechan el hecho de que los móviles

comparten esas características comunes y construyen modelos o plantillas comunes, para que

a partir de esas se puedan crear muchos móviles del mismo modelo. A ese modelo o plantilla

le llamamos clase, y a los equipos que sacamos a partir de ella la llamamos objetos.

Esto mismo se aplica a los objetos de software, se puede tener muchos objetos del mismo tipo

y mismas características.

Definición teórica: La clase es un modelo o prototipo que define las variables y métodos

comunes a todos los objetos de cierta clase. También se puede decir que una clase es una

plantilla genérica para un conjunto de objetos de similares características.

Por otro lado, una instancia de una clase es otra forma de llamar a un objeto. En realidad no

existe diferencia entre un objeto y una instancia. Sólo que el objeto es un término más

general, pero los objetos y las instancias son ambas representación de una clase.

Objetos

Un objeto es una instancia de una clase, una instancia es un ejemplar, un caso específico de

una clase, por ejemplo yo puedo crear varios objetos de tipo clase y cada uno es diferente, por

ejemplo el primero objeto es de color negro, el segundo objeto es de color blanco.

Como cada objeto es diferente se le conoce como instancia, entonces cuando escuches el

término “hay que instanciar “, se refiere a crear un nuevo objeto y que cada objeto es

diferente.

Los objetos tienen estado que son los atributos y comportamiento que son los métodos
9

Atributos serán cada una de las piezas o características de un objeto por ejemplo un

coche: nombre, color, modelo, plazas, caballaje, velocidad, etc.

Métodos  estos serán las acciones que es capaz de hacer el Objeto ,por ejemplo el

coche: arrancar, acelerar, frenar, encenderLuces, cambiarColor, etc.

Encapsulamiento

Significa que sólo se debe mostrar los detalles esenciales de un objeto, mientras que los

detalles no esenciales se los debe ocultar.

Podemos hacer una analogía pensando en un sistema operativo Linux, en Linux si eres un

usuario root tienes todos los permisos del sistema y puedes acceder a todas la configuraciones.

Mientras que, si eres sólo un usuario, solo tendrás acceso parcial al sistema (ocultación de

información).

El encapsulamiento lo tenemos en una clase, en la que se puede ocultar o restringir los datos

(variables) o el código (métodos) utilizando palabras reservadas del lenguaje(como

private).evita que cuando instanciemos un objeto podamos acceder a ellas (por seguridad).

¿Y entonces como accedemos a los valores de esas variables de clase?

Mediante los métodos getter y setter.

Herencia

El concepto fundamental de la herencia es el proceso en el que un objeto adquiere

características de otro objeto.

Siguiendo con el ejemplo anterior del celular, un celular es un equipo con características

básicas.
10

Ahora pensemos en un Smartphone, que es un teléfono con características muy avanzadas en

cuanto al celular, pero que en sí guardan cierta relación.

Yo podría crear un Smartphone desde cero, pero si te das cuenta, hay cosas que en el celular y

el Smartphone son comunes y que las podría reutilizar y no volver a crear de nuevo.

Si me voy por la opción de crear un nuevo, estoy duplicando componentes y tiempo que me

lleva crearlo.

El problema anterior se soluciona utilizando la herencia, con lo que ya no crearía uno nuevo si

no que heredaría del objeto celular (reutilización) y lo que haría simplemente es añadir solo

las nuevas características y tendría el nuevo modelo que es el Smartphone.

La herencia también ayuda a la reutilización, puesto que si ya tengo algo creado lo puedo

reutilizar y no perder tiempo creando algo de nuevo.

En Java se maneja herencia simple, es decir que solo se puede heredar de una sola clase a la

vez.

Para decir que una clase hereda de otra, se utiliza la palabra reservada extends seguido de la

clase que se quiere heredar.

Polimorfismo

El polimorfismo es una palabra de origen griego que significa “muchas formas”.

El concepto dice que es la capacidad de un objeto para comportarse de diferentes formas de

acuerdo al mensaje enviado.

Este término está relacionado con la herencia. Podemos hacer una analogía con el celular, un

celular tiene la opción de llamada, tu puedes hacer una llamada y comunicarte con Pablo por
11

ejemplo, haces otra llamada y te comunicas con Ana, si te das cuenta la función es la misma

“hacer llamada” pero te comunicas con diferente persona.

La función hacer llamada se comporta de forma diferente para cada número marcado, que este

caso sería el mensaje que le envías a la función hacer llamada.

En Java un método con el mismo nombre puede comportarse de forma diferente de acuerdo al

objeto recibido. El compilador en tiempo de ejecución detecta que forma tomar de acuerdo al

objeto que recibe.


12

4.2. Implementación del Código

Un aspecto importante es tener claro la visibilidad que tendrán de los atributos y método , por

seguridad y uso de recursos ,que sería el encapsulamiento .

Hemos observado que, por lo general los atributos deben ser private, y que los métodos

invocados por los clientes de una clase dada deben ser public. Los métodos que se llaman sólo

por otros métodos de la clase como “métodos utilitarios” deben ser private

Además las clases fueron instanciadas múltiples veces, porque hay varias relaciones entre

ellas, empleando el polimorfismo.

También se usara la Herencia ,por que nos topamos con el problema de representar una

transacción financiera en el programa. En vez de crear una clase para representar a todos los

tipos de transacciones, optamos por crear 2 clases distintas de transacciones (Retiro y

Deposito) para representar las transacciones que puede realizar el Cajero Automático.

Estas clases tienen un atributo (numeroCuenta) y una operación(ejecutar) en común. Cada

clase requiere que el atributo numeroCuenta especifique la cuenta a la que se aplica la

transacción. Cada clase contiene la operación ejecutar, que el Cajero invoca para realizar la

transacción. Es evidente que Retiro y Deposito representan tipos de transacciones. Por lo que

el uso de la herencia para factorizar las características comunes parece apropiado para diseñar

estas clases.

Colocamos la funcionalidad común en una superclase, Transacción, que las clases Retiro y

Deposito extienden.

Este enfoque también facilita la extensibilidad del sistema. Si deseamos crear un nuevo

tipo de transacción (por ejemplo, Verificar saldo), sólo tenemos que crear una subclase de

Transaccion adicional que sobrescriba el método ejecutar con una versión apropiada para

ejecutar el nuevo tipo de transacción. Sólo tendríamos que realizar pequeñas modificaciones
13

al código del sistema, para permitir que los usuarios seleccionen el nuevo tipo de transacción

del menú principal

La clase Transaccion será abstracta , en este tipo de clases sólo se declara los atributos

y comportamientos comunes de sus subclases en una jerarquía de herencia.

La clase Transaccion define el concepto de lo que significa ser una transacción que tiene un

número de cuenta y puede ejecutarse.

Tal vez usted se pregunte por qué incluir el método abstract ejecutar en la clase Transaccion,

si carece de una implementación concreta. En concepto, incluimos este método porque

corresponde al comportamiento que define a todas las transacciones: ejecutarse.

Técnicamente, debemos incluir el método ejecutar en la superclase Transaccion, de manera

que las otras clases puedan invocarla mediante el polimorfismo a la versión sobrescrita

de este método en cada subclase, a través de una referencia Transaccion.


14

A continuación, detallaremos el código realizado:

Agregamos comentarios a los códigos, explicando que características del Lenguaje Orientado

a Objetos se utilizaron.

Se realizaron 9 Clases :

 Teclado

 Pantalla

 Cliente

 Cuenta

 Transacción

 Retiro

 Deposito

 Cajero

 Proyecto_Final
15

CLASE TECLADO
16

CLASE PANTALLA
17

CLASE CLIENTE
18

CONTINUACION CLASE CLIENTE


19
20

CLASE CUENTA
21
22

CLASE TRANSACCION
23

CLASE RETIRO
24

CLASE DEPOSITO
25

CLASE CAJERO
26

CONTINUACION CLASE CAJERO


27

CONTINUACION DE CLASE CAJERO


28
29

CLASE PROYECTO_FINAL(MAIN)

5.ANÁLISIS DE RESULTADOS
30

Fueron creados objetos con los datos necesarios para hacer las pruebas(como fue mostrado en

el anterior capitulo)

Ahora verificaremos el resultado al ejecutar el programa:

1.Se solicita los datos: Numero de Cuenta y Clave

2.Se Valida si los datos ingresados son incorrectos, se informa y solicita nuevamente el

ingreso.
31

3.Cuando se ingresan los datos correctos, el programa mostrara las opciones de las

transacciones:

4.Se escoge la opción Retiro y se valida el monto a retirar según el saldo disponible.

Si el saldo es insuficiente muestra mensaje y solicita nuevo monto

5.Se ingresa un monto nuevo y el programa entrega el dinero y muestra mensaje


32

6.Se escoge la opción Deposito, la cantidad a depositar no es validado

Muestra mensaje del deposito

7.Se escoge la opción Salir


33

6.CONCLUSIONES

La eficiente respuesta y solidas características del lenguaje de programación Java demuestran

su idoneidad para realizar transacciones que deben ser rápidas y seguras.

La programación orientada a objetos representa y simula las acciones y objetos reales para

realizar operaciones en un Cajero Automático.

Las características de la Orientación a Objetos brindan un entorno donde los recursos son

usados de manera eficiente, evitándose duplicidad , uso de la memoria no optimo,etc. Lo que

demuestra su funcionalidad para realizar programas informáticos.


34

7.BIBLIOGRAFÍA

 Java (lenguaje de programación)

https://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n)

 Programación Orientada a Objetos en Java

https://asociacionaepi.es/programacion-orientada-a-objetos-en-

java/#:~:text=Empresas-,Programaci%C3%B3n%20Orientada%20a%20Objetos

%20en%20Java,de%20la%20d%C3%A9cada%20de%201990.

 4 Elementos Claves para entender POO en Java

https://www.ecodeup.com/4-elementos-claves-para-entender-la-programacion-

orientada-objetos-en-java/

 Caso de estudio del ATM,Parte 2: Implementación de un diseño orientado a objetos

https://es.scribd.com/document/271202349/Caso-de-Estudio-Parte-2

También podría gustarte