Hoy en día , el uso de celulares es algo indispensable, y la
utilidad que se le puede otorgar es inmensa, mas allá de realizar
llamadas, existe una gran cantidad de distintas aplicaciones para
dipositivos móviles con soporte Android, por ejemplo, juego,
calendarios, administradores de archivos, navegadores, administradores
de tareas, y una siempre útil Calculadora. Si bien, actualmente todos
los vienen
con una calculadora incluida, nuestra aplicación consta de la
posibilidad de realizar operaciones con manejo de complejos, la cual
sería muy útil para escuelas de ingeniería en donde es común su uso.
Análisis
En un principio, este proyecto estaba
orientado al diseño de una aplicación capaz de conectarse vía Bluetooth
con otro dispositivo móvil y entablar un "Chat" entre los usuarios de
los dispositivos conectados. Uno de los problemas presentados en el
análisis del problema, es que el software encargado de simular el
dispositivo móvil con Android, no tiene soporte para módulos bluetooth,
impidiendo la realización de pruebas por falta de recursos
físicos.
Bajo la intención de mantener el propósito inicial
del proyecto, el cual consiste en lograr diseñar una aplicación que
pueda ser ejecutada en un celular con dicho sistema y es por ello, que
se decidió diseñar una Calculadora con Manejo de Números Complejos.
Para desarrollar una aplicación para el sistema operativo Android es
necesario utilizar (por recomendación de los mismos miembros de Google
inc.) el plugin disponible para el conocido IDE "Eclipse", y además del
kit de desarrollo "Android SDK" facilitado en la página de desarrollo
de Google. Para realizar pruebas temporales del paquete se utiliza el simulador AVD (Android Virtual Device).
Para diseñar la aplicación propuesta se plantean los
siguientes Casos de Usos, los cuales intentan cubrir las principales
necesidades para una calculadora con manejo de números complejos.
Caso de
Uso 1:
Nombre: Suma entre complejos.
Propósito: Sumar dos números complejos.
Actor: Usuario.
Pre-Condición: No existe.
Evento: El Usuario ingresa un número complejo, luego la operación suma y el segundo número complejo.
Post-Condición: Aparece el resultado de la operación.
Tipo: Manual.
Curso Normal de Eventos
Actor |
Sistema
|
1. El Usuario ingresa el primer número complejo
|
2. El Sistema muestra por pantalla el número ingresado
|
3. El Usuario presiona la tecla operación suma
|
4. El Sistema espera el siguiente número
|
5. El Usuario ingresa el segundo número complejo
|
6. El Sistema muestra por pantalla el número ingresado |
7. El Usuario presiona la tecla igualdad
|
8. El Sistema arroja el resultado por pantalla
|
Curso Alternativo de Eventos
Actor
|
Sistema
|
1. El Usuario ingresa el primer número complejo
|
2. El Sistema muestra por pantalla el número ingresado
|
3. El Usuario presiona la tecla porcentaje
|
4. El Sistema ignora la tecla presionada y espera la operación
|
Caso de
Uso 2:
Nombre: División entre un complejo y una constante.
Propósito: Dividir un número complejo y una constante.
Actor: Usuario.
Pre-Condición: No existe.
Evento: El Usuario ingresa un número complejo, luego la operación división y una constante.
Post-Condición: Aparece el resultado de la operación.
Tipo: Manual.
Curso Normal de Eventos
Actor
|
Sistema
|
1. El Usuario ingresa el primer número complejo |
2. El Sistema muestra por pantalla el número ingresado |
3. El Usuario presiona la tecla operación divisón
|
4. El Sistema espera el siguiente número |
5. El Usuario ingresa una constante
|
6. El Sistema muestra por pantalla el número ingresado |
7. El Usuario presiona la tecla igualdad |
8. El Sistema arroja el resultado por pantalla |
Curso Alternativo de eventos
Actor
|
Sistema
|
1. El Usuario ingresa el primer número complejo |
2. El Sistema muestra por pantalla el número ingresado |
3. El Usuario presiona la tecla operación división
|
4. El Sistema espera el siguiente número |
5. El Usuario presiona la tecla porcentaje
|
4. El Sistema ignora la tecla presionada y espera el siguiente número
|
Caso de
Uso 3:Nombre: Multiplicación entre complejos.
Propósito: Multiplicar un número complejo por otro.
Actor: Usuario.
Pre-Condición: No existe.
Evento: El Usuario ingresa un número complejo, luego la operación multiplicación y otro número complejo.
Post-Condición: Aparece el resultado de la operación.
Tipo: Manual.
Curso Normal de Eventos
Actor
|
Sistema
|
1. El Usuario ingresa el primer número complejo |
2. El Sistema muestra por pantalla el número ingresado |
3. El Usuario presiona la tecla operación multiplicación
|
4. El Sistema espera el siguiente número |
5. El Usuario ingresa el segundo número complejo
|
6. El Sistema muestra por pantalla el número ingresado |
7. El Usuario presiona la tecla igualdad |
8. El Sistema arroja el resultado por pantalla |
Diagrama
de Secuencia, Caso de Uso 3:
Prueba Caso de Uso 1:
A continuación
se presenta una imagen de la aplicación desarrollada, y la visión del resultado de la suma de
números complejos en ella:
Prueba Caso de Uso 3:
A continuación
se presenta una imagen de la aplicación desarrollada, y la visión del resultado de la multiplicación de
números complejos en ella:
Como se puede apreciar, al ingresar un
número complejo, aparece, en la parte imaginaria, antepuesta por la
letra "i" para indicar el valor de la parte imaginaria. El resultado de
la aplicación es satisfactoria, ya que realiza operaciones de suma,
resta, multiplicación y división entre complejos y con números reales.
Además, puede ejecutar operaciones concadenadas (utilizar el resultado
de una
operación para realizar otra a continuación).
Diagrama UML de clases:
Por simplicidad, se
ocultaron los atributos privados de la clase ComplexCalculator. Además,
en ésta está incluida la función initControls(), initScreenLayaout()
entre otras propias del entorno de trabajo de Android SDK, parecido a
las requerimientos en una applet de java.
Código Fuente:
Dificultades Encontradas:
Una de las principales dificultades fue comprender
la función de los utilitarios adicionales que incorpora el plugin de
Android y cómo opera el flujo de un programa en este simulado sistema
operativo. Además, el simulador no ofrece detección de hardware local,
por lo que no se pueden probar módulos como bluetooth, Wifi, entre
otros.
Bugs Conocidos:
Dentro de las fallas o "bugs" que no se pudieron
resolver, se encuentra el hecho de tener que precionar la tecla "C"
para realizar otra operación, ya que es necesario resetear las
variables que quedan con un valor indefinido luego de presionar la
tecla "=".
Implementación en un dispositivo:
En la parte inferior se muestran imágenes obtenidas
de la aplicación funcionando en un dispositivo con sistema operativo
Android.
Referencias:
http://developer.android.com/index.html