sesion_2_2

download sesion_2_2

of 9

description

Dominio del problema

Transcript of sesion_2_2

  • Dominio del problemaCaso de estudio

    Luis Bertel

    Universidad de Manizales

    Facultad de Ciencias e Ingeniera

    Ingeniera de Sistemas y Telecomunicaciones

    1. Dominio del problemaLa segunda etapa del analisis es identificar el dominio del problema en el que se recoge

    informacion para realizar la codificacion del programa que brinden la solucion adecuada.El resultado de esta etapa es la identificacion y la descripcion de los elementos que hacenparte del problema. Tambien se reconocen sus caractersticas y relaciones, la figura 1 ilustralas etapas. Las entidades pueden ser concretas(Vehculo) o abstractos(Cuenta Corriente),ambos de modelan de la misma forma 1.

    Identificacin de las entidades (clases)

    Modelar sus caractersticas Buscar las relaciones Documentar Dominio del problema

    Figura 1: Etapas del dominio del problema

    1Tomado del libro de Fundamentos de Programacion de Jorge Villalobos. Recomendado

    1

  • 2. Caso de estudioSe quiere realizar un programa que haga la simulacion en el tiempo de la cuenta bancaria

    de un cliente. Un cliente tiene un nombre y un numero de cedula el cual identifica la cuenta.Una cuenta, por su parte, esta constituida por tres productos financieros basicos.

    1. Una cuenta ahorro

    2. Una cuenta corriente

    3. Un certificado de deposito a termino (CDT)

    Los productos son independientes y tienen comportamiento particular.

    El saldo total de la cuenta es la suma de lo que el cliente tiene en cada uno de dichosproductos. En la cuenta corriente el cliente puede depositar o retirar dinero. Su principalcaractersticas es que no recibe ningun interes por el dinero que se encuentre all depositado.En la cuenta de ahorro, se paga un interes mensual de 0.6 % sobre el saldo. Cuando el clienteabre el CDT, define la cantidad de dinero que quiere invertir y negociar con el banco elinteres mensual que va a recibir. Cuando el cliente abre el CDT, define la cantidad dedinero que quiere invertir y negociar con el banco el interes mensual que va a recibir. Adiferencia de la cuenta corriente o la cuenta de ahorro, en un CDT no se puede consignar niretirar dinero. La unica operacion posible es cerrarlo, en cuyo caso, el dinero y sus interesespasan a la cuenta corriente.

    Se quiere que el programa permite a una persona simular el manejo de sus productosbancarios, dandole las facilidades de:

    1. Hacer las operaciones necesarios sobre los productos que confirman la cuenta

    2. Avanzar mes por mes en el tiempo, para que el cliente pueda ver el resultado de susmovimientos bancarios y el rendimiento de sus inversiones.

    En la figura 2 se muestra el prototipo de interfaz de usuario para el programa. Paraoperar la interfaz de usuario se considera:

    1. Con el boton el usuario puede avanzar mes a mes en el simulador y ver losresultados de sus inversiones.

    2. Con los seis botones de la parte inferior de la parte inferior de la ventana, el usuariopuede simular el manejo que va a hacer de los productos que forman parte de sucuenta bancaria.

    3. En la parte media de la ventana, aparecen el saldo que tiene en cada producto y elinteres que esta ganando en cada caso.

    2

  • Figura 2: Simulador de cuentas bancarias

    2.1. Dominio del problema del caso de estudioEn la tabla 1 se muestra las entidades que forman parte del mundo del problema.

    NotaEn programacion se utiliza a menudo convenciones, lo que hace mas facil escribir yleer codigo fuente de programas. Aunque las convenciones son recomendables no sonobligatorias. El programador decide si las utiliza. Una de las convenciones mas utili-zadas es hacer que la primera letra de las entidades (clases) sea una letra mayuscula(Persona, CuentaCorriente, Celular, Gato, etc). La utilizacion de convenciones haceel codigo mas legible y da la apariencia de aplicar buenas practicas en la codificacion.

    2.2. Modelamiento de los atributosCon las entidades(clases) identificadas del dominio del problema se procede a identifi-

    car sus caractersticas(atributos). Cada caractersticas encontrada se le asocia un nombresignificativo y una descripcion del conjunto de valores que puede tomar.

    El nombre que se le da a un atributo debe ser una cadena de caracteres no vaca, queempiece con una letra y no tenga espacios en blanco.

    3

  • Entidad Comentario

    1 CuentaCorriente

    Es la entidad mas importante del dominio del problema, ya que definesu frontera (todo lo que esta por fuera de de la cuenta bancaria no nosinteresa). Es una buena practica comenzar la etapa de analisis tratandode identificar la clase mas importante del problema. Cuando el nombrede la entidad es compuesto, se usa por convencion una letra mayusculaal comienzo de cada palabra

    2 CuentaCorrienteEsta es otra entidad que que existe en el mundo del problema. En elproblema se define una Cuenta Corriente que hace parte de una cuentabancaria, por lo tanto esta en la frontera del problema.

    3 CuentaAhorroEs la ultima entidad que aparece en el dominio del problema. UnaCuenta de Ahorro compone una cuenta Bancaria, por que esta en eldominio del problema.

    4 CDT El nombre de la entidad se encuentra en mayuscula debido a que es unasigla. CDT esta dentro de las opciones que ofrece una cuenta bancaria.

    5 Mes Es la ultima entidad definida en el problema. Indica cual es el mes dela simulacion se encuentra la cuenta bancaria.

    Tabla 1: Entidades para el caso de estudio

    NotaPor convencion los nombres de los atributos comienza en minuscula. Si el nombre escompuesto (saldoMinimo), se debe iniciar cada palabra simple con mayusculas. Nose utilizan acentos para definir los nombres de las entidades y atributos.

    As como los arquitectos e ingenieros tienen planos que hacen posible la comunicacion delas ideas de forma sencilla en el grupo de colaboradores en un proyecto, en programacionse posee el lenguaje UML (Lenguaje Unificado de Modelado ) el cual brinda losdiagramas y smbolos que hacen posible entender un proyecto de desarrollo de software. Larepresentacion de una clase se realiza por medio de un rectangulo dividido en tres partes.En la primera parte se coloca el nombre de la clase y en la segunda parte se ubica losatributos. La ultima parte se coloca los metodos (mas adelante se hablara de los metodos).

    En la tabla 2 se muestran los atributos de la clase CuentaBancaria.

    2.3. Relaciones entre entidades(clases)Luego de hallar los atributos de las clases se procede hallar las relaciones entre ellas.

    Las relaciones se representa en UML como flechas que unen las clases y se les llaman

    4

  • Atributo Valores posible Comentario

    1 nombre Cadena de caracteres Es el nombre completo del titular de la cuentabancaria.

    2 cedula Cadena de caracteres

    Si puede notar no se utilizaron acentos parael nombre del atributo, es una buena practicaevitarlos. Tambien note que se utilizo una ca-dena de caracteres en consideracion de un va-lor numerico entero, esto debido en gran partea que no se realizaran calculos numericos coneste atributo.

    Diagrama UML

    nombre : Stringcedula : String

    CuentaBancaria

    Tabla 2: Atributos de la clase CuentaBancaria

    asociaciones(es una de tantas). En el diagrama de clases del dominio del problema seubican todas las clases que hacen parte y sus relaciones, en la figura 3 se presenta dosclases que estan en el dominio del problema (ClaseA y ClaseB) y que existe una relacionentre ellas. El diagrama tambien muestra que para la ClaseA, la ClaseB representa algoque puede ser descrito por medio un nombre en la asociacion. Utilice nombres adecuadosy claros para indicar el tipo de asociacion que existen entre las clases, esto es importantepara la lectura del diagrama.

    Atributo 1Atributo 2

    ClaseAAtributo 1Atributo 2

    ClaseBnombre

    Figura 3: Relacion entre clases

    Luego de haber identificado las relaciones de las diversas entidades o clases del problemaen el dominio, en la figura 4 se muestras las asociaciones halladas.

    Podemos comentar de la figura 4 las siguientes anotaciones:

    La relacion entre la clase CuentaBancaria y la clase CuentaCorriente se llamacorriente y refleja el hecho de que una cuenta bancaria tiene una cuenta corrientecomo parte de ella.

    Note que las flechas tienen una direccion. Dicha direccion establece que entidad(clase)utiliza a la otra como parte de sus caractersticas.

    5

  • nombre : Stringcedula : String

    CuentaBancaria

    mes : intMes

    saldo : doubleCuentaCorriente

    saldo : doubleinteresMensual : double

    CuentaAhorros

    valorInvertido : doubleinteresMensual : double

    CDTmesActual

    mesApertura

    corriente

    ahorros

    inversion

    Dominio del problema

    Figura 4: Diagrama de clases del caso de estudio

    Tanto la clase CuentaBancaria como la clase CDT tienen una asociacion hacia la claseMes. En la primera clase sirve para modelar el mes actual de la simulacion. En lasegunda, representa el mes en el que se abrio el CDT.

    La representacion grafica del dominio del modelo resume los enunciados expresadosen el problema del caso de estudio, y por medio de su notacion permite una inter-pretacion sin ambiguedades.

    2.4. Codificacion del caso de estudioA continuacion se muestra el codigo en el lenguaje Java del desarrollo del caso de estudio.

    En el desarrollo de la clase CuentaCorriente se crea una archivo llamado CuentaCorriente.java,y el codigo fuente se detalla a continuacion.

    1 // clase que representa la cuenta corriente2 class CuentaCorriente3 {4 double saldo;5 }

    El proceso de compilacion se ejecuta usando el comando javac. Este comando se instala

    6

  • cuando el software de Java se instala en el computador. La version que se debe utilizar es laStandar Edition que contiene lo necesario para la compilacion de programas desarrolladosen Java. El proceso de compilacion se ejecuta como se muestra a continuacion.

    $ javac CuentaCorriente.java

    La compilacion genera un archivo binario llamado CuentaCorriente.class.

    CuentaAhorros.java

    1 // clase que representa la cuenta de ahorros2 class CuentaAhorros3 {4 double saldo;5 double interesMensual;6 }

    Mes.java

    1 // clase que representa el mes de analisis2 class Mes3 {4 int mes;5 }

    CDT.java

    1 // clase que representa el CDT2 class CDT3 {4 double valorInvertido;5 double interesMensual;6

    7 // asociacion8 Mes mesApertura;9 }

    CuentaBancaria.java

    1 // clase que representa la cuenta bancaria2 class CuentaBancaria3 {4 String nombre;5 String cedula;

    7

  • 67 // asociaciones8 Mes mesActual;9 CuentaCorriente corriente;

    10 CuentaAhorros ahorros;11 CDT inversion;12 }

    3. Anexos3.1. Tipos de datos en Java

    Tipo Dato Tipo Dato Java Rango

    Enteros

    byte 27 a 27 1short 215 a 215 1int 231 a 231 1long 263 a 263 1

    Realfloat 3,4 1038 a 3,4 1038

    double 1,8 10308 a 1,8 10308

    Logico boolean true/false

    Caracter char \u0000 a \uFFFF

    Ninguno void No hace referencia a ningun tipo

    Tabla 3: Tipos de datos Java

    3.2. Palabras reservadas de Java y GlosarioEn el documento se han utilizado palabras reservadas del lenguaje de programacion Java.

    Las palabras reservadas de un lenguaje no pueden utilizarse como nombres de atributos,clases o metodos.

    class: representa una entidad del mundo del problema. Recuerda que las clases defi-nen la estructura de un programa.

    8

  • int: indica que un atributo es de tipo entero. Consulta la tabla de tipos de datos deJava para determinar su capacidad de almacenamiento.

    double: indica que un atributo es de tipo real. El tipo de dato double tiene mayorcapacidad que un float.

    String: se utiliza para almacenar cadenas de caracteres. No es un tipo de dato basicoen Java, es una clase de utilidad de Java para trabajar mas facilmente con cadenasde caracteres.

    { }: encierran un contexto. Cuando se utilizan despues de la definicion de la claselas llaves definen el cuerpo de la clase. Al interior de la clase solo se pueden definiratributos y metodos, si se escribe codigo que no sean atributos y metodos en la claseal momento de compilar genera un error.

    ;: el punto y coma (;) se utiliza para indicar al compilador de Java que termina unasentencia. Una sentencia es una instruccion que se le da al programa para haga unatarea, por ejemplo (int mes;), le indica al programa que defina un atributo de tipoentero y llamado mes.

    Comentarios: los comentarios se utilizan para documentar el codigo, no modificanel comportamiento del programa. Existen varios tipos de comentarios en Java: (1)el comentario con \\ que es utilizado cuando deseamos un comentario de una solalnea y (2) el comentario que inicia \* para indicar el comienzo de un comentariomultilnea, este tipo de comentario termina con */.

    Identificadores: los identificadores son los nombres que se le da a las clases, atri-butos y metodos. Un ejemplo de identificador para una clase es CuentaBancariay para un atributo puede ser cedula. Los identificadores tienen cierta reglas paraescogerlos: no pueden iniciar con numeros o con smbolos especiales como %,&, #, ,etc. Los identificadores deben ser descriptivos y no deben proporcionar ambiguedadal momento de utilizarse.

    9