UNIVERSIDAD DISTRITAL “FRANCISCO JOSÉ DE CALDAS” MAESTRÍA EN CIENCIAS DE LA INFORMACIÓN Y LAS COMUNICACIONES CURSO NIVELATORIO INGENIERÍA DE SOFTWARE TAREA 1 Problema: Un banco quiere crear un programa para manejar sus cajeros automáticos. Dicho programa solo debe permitir retirar dinero y consultar el saldo de una cuenta. Identifique y discuta los aspectos que constituyen el problema. Si el enunciado no es explicito con respecto a algún punto, intente imaginar la manera de completarlo. Cliente Usuario Requerimiento Funcional Mundo del Problema Requerimiento No Funcional Banco Banco R1. Un usuario podrá retirar dinero del cajero. R2. Un usuario podrá consultar el saldo de una cuenta. Es necesario que exista un mecanismo de autenticación del usuario que desee hacer uso del cajero para cualquiera de las operaciones que están disponibles. A su vez un usuario tendrá asociada una cuenta de la cual se efectuara el retiro o consultara el saldo. El programa deberá funcionar en todos los tipos de cajeros que posea el banco. TAREA 2 Problema: Para el caso de estudio 2, un simulador bancario, identifique y especifique tres requerimientos funcionales. Nombre Resumen Requerimiento Entradas Funcional 1 Resultado Nombre Resumen Entradas Requerimiento Funcional 2 Resultado Ingresar la información del usuario. Permite al usuario ingresar los datos del cliente. Nombre del Cliente Cedula del Cliente Mes de simulación Se muestra el saldo en la cuenta corriente, cuenta de ahorros, CDT y el saldo total, mostrando los correspondientes intereses aplicados. Abrir un nuevo CDT Permite al usuario abrir un nuevo CDT Nombre del Cliente Cedula del Cliente Dinero a depositar Interés pactado Tiempo del CDT Se abre un nuevo CDT y se actualiza la información del usuario en los apartados Saldo CDT y Saldo Total. Diego Fabián Pajarito Grajales – cód. 20091295013 UNIVERSIDAD DISTRITAL “FRANCISCO JOSÉ DE CALDAS” MAESTRÍA EN CIENCIAS DE LA INFORMACIÓN Y LAS COMUNICACIONES CURSO NIVELATORIO INGENIERÍA DE SOFTWARE Requerimiento Funcional 3 Nombre Resumen Entradas Resultado Cerrar CDT Permite al usuario abrir un nuevo CDT Nombre del Cliente Cedula del Cliente Se actualiza el valor del Saldo CDT a cero y se traspasa el saldo y sus intereses al Saldo de la cuenta corriente. TAREA 3 Para el caso de estudio 3, un programa para manejar un triangulo, identifique y especifique tres requerimientos funcionales. Nombre Resumen Requerimiento Funcional 1 Entradas Resultado Nombre Resumen Requerimiento Funcional 2 Entradas Resultado Nombre Resumen Requerimiento Entradas Funcional 3 Resultado Cambiar color de las líneas Permite ingresar valores de RGB para el color de las líneas. Valor del Rojo Valor del Verde Valor del Azul Cambia el color de las líneas para un triangulo al valor RGB dado. Cambiar color del relleno Permite ingresar valores de RGB para el color del relleno. Valor del Rojo Valor del Verde Valor del Azul Cambia el color del relleno para un triangulo al valor RGB dado. Calcular el perímetro de un triangulo Muestra el perímetro de un triangulo dado Coordenada X Coordenada Y Se muestra el valor del perímetro calculado Tarea 4 Identificar las entidades del mundo real para el caso de estudio 3, un programa que maneje un triangulo. Entidad Triangulo Diego Fabián Pajarito Grajales – cód. 20091295013 UNIVERSIDAD DISTRITAL “FRANCISCO JOSÉ DE CALDAS” MAESTRÍA EN CIENCIAS DE LA INFORMACIÓN Y LAS COMUNICACIONES CURSO NIVELATORIO INGENIERÍA DE SOFTWARE Entidad Punto ¿Qué pasa si no identificamos bien las entidades del mundo? Si no identificamos bien las entidades, podríamos entrar a delegar las funciones de estas a otras entidades y permitiendo que nuestro modelamiento no sea optimo. ¿Como decidir si se trata efectivamente de una entidad y no solo de una característica de una entidad ya identificada? No existe ningún método milagroso que pueda sustituir la experiencia y destreza del propio desarrollador de la aplicación. Hay que analizar muy bien el mundo del problema buscando esas ideas candidatas a convertirse en entidades, y posteriormente en clases. Tarea 5 Para cada una de las 5 entidades identificadas en el caso de estudio identificadas en el caso de estudio del simulador bancario, identifique los atributos, sus valores posibles, y escriba a clase UML. class Simulador Bancario - cedulaCliente: String - nombreCliente: String - saldoCuenta: int CDT cuentaAhorros cuentaCorriente cuentaBancaria - interes: double - valor: int - interes: double - saldoCuenta: int Mes - numeroMes: int cuentaBancaria nombreCliente : Cadena de Caracteres cedulaCliente : Cadena de Caracteres cuentaCorriente saldoCuenta : Numero entero cuentaAhorros saldoCuenta : Numero entero interes : Numero con decimales igual a 0,006 CDT Valor : Numero entero Diego Fabián Pajarito Grajales – cód. 20091295013 UNIVERSIDAD DISTRITAL “FRANCISCO JOSÉ DE CALDAS” MAESTRÍA EN CIENCIAS DE LA INFORMACIÓN Y LAS COMUNICACIONES CURSO NIVELATORIO INGENIERÍA DE SOFTWARE interes : Numero con decimales mes mes : Numero entero entre 1 y 12 Tarea 6 Los algoritmos están hechos para que no importa quién lo lea, siempre se ejecute una rutina de la misma forma. Cuando un algoritmo está bien construido, elimina las ambigüedades. Al leer el algoritmo para usar el metro, este no me pareció ambiguo y tampoco que estuviera incompleto. Tarea 8 Escriba en Java y en UML las declaraciones de los atributos (y las asociaciones) para las 5 entidades del caso de estudio del simulador bancario. class Simulador Bancario cuentaAhorros cuentaCorriente cuentaBancaria - cedulaCliente: String - nombreCliente: String - saldoCuenta: int CDT - interes: double - valor: int - interes: double - saldoCuenta: int Mes - numeroMes: int public class cuentaBancaria { private String nombreCliente; private String cedulaCliente; public cuentaAhorros ahorros; public cuentaCorriente corriente; public CDT inversion; public Mes mesActual; } public class cuentaAhorros { private double saldoCuenta; private double interes; } public class cuentaCorriente { private double saldoCuenta; } public class CDT { private int valor; private double interes; public Mes mesApertura; } public class Mes { Diego Fabián Pajarito Grajales – cód. 20091295013 UNIVERSIDAD DISTRITAL “FRANCISCO JOSÉ DE CALDAS” MAESTRÍA EN CIENCIAS DE LA INFORMACIÓN Y LAS COMUNICACIONES CURSO NIVELATORIO INGENIERÍA DE SOFTWARE private int numeroMes; } Tarea 9 Complete la información, ya sea escribiendo la signatura del método que se describe, o interpretando la signatura que se da. Todos de esta tarea son de la clase CuentaAhorros. consignarValor Valor de tipo entero, que indica el valor que se va a consignar. Ninguno Aumenta el valor del saldo de la cuenta en el valor que se consigno public void consignarValor (int valor) { Nombre Parámetros Retorno Descripción darSaldo Ninguno Valor de tipo entero Retorna el saldo de la cuenta de ahorros public int darSaldo () { Nombre Parámetros Retorno Descripción retirarValor Ninguno Valor de tipo entero Retorna el saldo de la cuenta de ahorros public void retirarValor (int valor) { Nombre Parámetros Retorno Descripción darInteresMensual Ninguno Valor de tipo real Retorna el interés mensual que paga una cuenta de ahorros public int darInteresMensual () { Nombre Parámetros Retorno Descripción actualizarSaldoPorPasoMes Ninguno Ninguno Actualiza el saldo de a cuenta de ahorros simulando que acaba de transcurrir un mes y que se deben agregar los correspondientes intereses ganados. public void actualizarSaldoPorPasoMes () { Nombre Parámetros Retorno Descripción } } } } } Diego Fabián Pajarito Grajales – cód. 20091295013 UNIVERSIDAD DISTRITAL “FRANCISCO JOSÉ DE CALDAS” MAESTRÍA EN CIENCIAS DE LA INFORMACIÓN Y LAS COMUNICACIONES CURSO NIVELATORIO INGENIERÍA DE SOFTWARE Tarea 10 Escribir el cuerpo de los métodos de la clase CuentaBancaria cuya signatura aparece a continuación. public void ahorrar (int valor){ corriente.retirarValor( valor ); ahorros.consignarValor( valor ); } public void retirarAhorro (int valor){ ahorros.retirarValor(valor); } public int darSaldoCorriente (){ return corriente.darSaldo(); } public void retirarTodo(){ ahorros.retirarTodo(); corriente.retirarTodo(); } public void duplicarAhorro(){ int saldo = ahorros.darSaldo(); saldo *= 2; ahorros.actualizarSaldo(saldo); } public void avanzarSimulacion(){ mesActual.avanzarMes(); ahorros.ActualizarSaldoPorPasoMes(); } Diego Fabián Pajarito Grajales – cód. 20091295013