Está en la página 1de 9

Dominio del problema

Caso de estudio
Luis Bertel
Universidad de Manizales
Facultad de Ciencias e Ingeniera
Ingeniera de Sistemas y Telecomunicaciones

1.

Dominio del problema

La 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 hacen
parte del problema. Tambien se reconocen sus caractersticas y relaciones, la figura 1 ilustra
las 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

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

2.

Caso de estudio

Se 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 n
umero 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 dichos
productos. En la cuenta corriente el cliente puede depositar o retirar dinero. Su principal
caractersticas es que no recibe ning
un 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 cliente
abre el CDT, define la cantidad de dinero que quiere invertir y negociar con el banco el
interes mensual que va a recibir. Cuando el cliente abre el CDT, define la cantidad de
dinero que quiere invertir y negociar con el banco el interes mensual que va a recibir. A
diferencia de la cuenta corriente o la cuenta de ahorro, en un CDT no se puede consignar ni
retirar dinero. La u
nica operacion posible es cerrarlo, en cuyo caso, el dinero y sus intereses
pasan a la cuenta corriente.
Se quiere que el programa permite a una persona simular el manejo de sus productos
bancarios, 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 sus
movimientos bancarios y el rendimiento de sus inversiones.
En la figura 2 se muestra el prototipo de interfaz de usuario para el programa. Para
operar la interfaz de usuario se considera:
1. Con el boton ii el usuario puede avanzar mes a mes en el simulador y ver los
resultados de sus inversiones.
2. Con los seis botones de la parte inferior de la parte inferior de la ventana, el usuario
puede simular el manejo que va a hacer de los productos que forman parte de su
cuenta bancaria.
3. En la parte media de la ventana, aparecen el saldo que tiene en cada producto y el
interes que esta ganando en cada caso.

Figura 2: Simulador de cuentas bancarias

2.1.

Dominio del problema del caso de estudio

En la tabla 1 se muestra las entidades que forman parte del mundo del problema.
Nota
En programacion se utiliza a menudo convenciones, lo que hace mas facil escribir y
leer codigo fuente de programas. Aunque las convenciones son recomendables no son
obligatorias. El programador decide si las utiliza. Una de las convenciones mas utilizadas es hacer que la primera letra de las entidades (clases) sea una letra may
uscula
(Persona, CuentaCorriente, Celular, Gato, etc). La utilizacion de convenciones hace
el codigo mas legible y da la apariencia de aplicar buenas practicas en la codificacion.

2.2.

Modelamiento de los atributos

Con las entidades(clases) identificadas del dominio del problema se procede a identificar sus caractersticas(atributos). Cada caractersticas encontrada se le asocia un nombre
significativo 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, que
empiece con una letra y no tenga espacios en blanco.

Entidad

Comentario

Es la entidad mas importante del dominio del problema, ya que define


su frontera (todo lo que esta por fuera de de la cuenta bancaria no nos
1 CuentaCorriente interesa). Es una buena practica comenzar la etapa de analisis tratando
de identificar la clase mas importante del problema. Cuando el nombre
de la entidad es compuesto, se usa por convencion una letra mayuscula
al comienzo de cada palabra
Esta es otra entidad que que existe en el mundo del problema. En el
2 CuentaCorriente problema se define una Cuenta Corriente que hace parte de una cuenta
bancaria, por lo tanto esta en la frontera del problema.
3 CuentaAhorro

Es la ultima entidad que aparece en el dominio del problema. Una


Cuenta de Ahorro compone una cuenta Bancaria, por que esta en el
dominio del problema.

4 CDT

El nombre de la entidad se encuentra en mayuscula debido a que es una


sigla. 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 de


la simulacion se encuentra la cuenta bancaria.
Tabla 1: Entidades para el caso de estudio

Nota
Por convencion los nombres de los atributos comienza en min
uscula. Si el nombre es
compuesto (saldoMinimo), se debe iniciar cada palabra simple con may
usculas. No
se utilizan acentos para definir los nombres de las entidades y atributos.
As como los arquitectos e ingenieros tienen planos que hacen posible la comunicacion de
las ideas de forma sencilla en el grupo de colaboradores en un proyecto, en programacion
se posee el lenguaje UML (Lenguaje Unificado de Modelado ) el cual brinda los
diagramas y smbolos que hacen posible entender un proyecto de desarrollo de software. La
representacion 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 los
atributos. La u
ltima 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

Atributo
1

nombre

cedula

Valores posible

Comentario

Cadena de caracteres

Es el nombre completo del titular de la cuenta


bancaria.

Cadena de caracteres

Si puede notar no se utilizaron acentos para


el nombre del atributo, es una buena practica
evitarlos. Tambien note que se utilizo una cadena de caracteres en consideracion de un valor numerico entero, esto debido en gran parte
a que no se realizaran calculos numericos con
este atributo.
CuentaBancaria
nombre : String
cedula : String

Diagrama UML
Tabla 2: Atributos de la clase CuentaBancaria
asociaciones(es una de tantas). En el diagrama de clases del dominio del problema se
ubican todas las clases que hacen parte y sus relaciones, en la figura 3 se presenta dos
clases que estan en el dominio del problema (ClaseA y ClaseB) y que existe una relacion
entre ellas. El diagrama tambien muestra que para la ClaseA, la ClaseB representa algo
que puede ser descrito por medio un nombre en la asociacion. Utilice nombres adecuados
y claros para indicar el tipo de asociacion que existen entre las clases, esto es importante
para la lectura del diagrama.
ClaseA
Atributo 1
Atributo 2

nombre

ClaseB
Atributo 1
Atributo 2

Figura 3: Relacion entre clases


Luego de haber identificado las relaciones de las diversas entidades o clases del problema
en 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 llama
corriente y refleja el hecho de que una cuenta bancaria tiene una cuenta corriente
como 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.

Dominio del problema


CuentaBancaria
nombre : String
cedula : String

CuentaCorriente
corriente saldo : double

ahorros

mesActual

inversion
Mes

mes : int

CuentaAhorros
saldo
: double
interesMensual : double

CDT
valorInvertido : double
interesMensual : double

mesApertura

Figura 4: Diagrama de clases del caso de estudio


Tanto la clase CuentaBancaria como la clase CDT tienen una asociacion hacia la clase
Mes. En la primera clase sirve para modelar el mes actual de la simulacion. En la
segunda, representa el mes en el que se abrio el CDT.
La representacion grafica del dominio del modelo resume los enunciados expresados
en el problema del caso de estudio, y por medio de su notacion permite una interpretacion sin ambig
uedades.

2.4.

Codificaci
on del caso de estudio

A 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
2
3
4
5

// clase que representa la cuenta corriente


class CuentaCorriente
{
double saldo ;
}

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


comando se instala

cuando el software de Java se instala en el computador. La version que se debe utilizar es la


Standar Edition que contiene lo necesario para la compilacion de programas desarrollados
en 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
2
3
4
5
6

// clase que representa la cuenta de ahorros


class CuentaAhorros
{
double saldo ;
double interesMensual ;
}

Mes.java
1
2
3
4
5

// clase que representa el mes de analisis


class Mes
{
int mes ;
}

CDT.java
1
2
3
4
5

// clase que representa el CDT


class CDT
{
double valorInvertido ;
double interesMensual ;

// asociacion
Mes mesApertura ;

7
8
9

CuentaBancaria.java
1
2
3
4
5

// clase que representa la cuenta bancaria


class CuentaBancaria
{
String nombre ;
String cedula ;

// asociaciones
Mes mesActual ;
CuentaCorriente corriente ;
CuentaAhorros
ahorros ;
CDT inversion ;

7
8
9
10
11

12

3.
3.1.

Anexos
Tipos de datos en Java
Tipo Dato

Tipo Dato Java

Rango

byte

27 a 27 1

short

215 a 215 1

int

231 a 231 1

long

263 a 263 1

float

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 ning


un tipo

Enteros

Real

Tabla 3: Tipos de datos Java

3.2.

Palabras reservadas de Java y Glosario

En 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 definen la estructura de un programa.

int: indica que un atributo es de tipo entero. Consulta la tabla de tipos de datos de
Java para determinar su capacidad de almacenamiento.
double: indica que un atributo es de tipo real. El tipo de dato double tiene mayor
capacidad que un float.
String: se utiliza para almacenar cadenas de caracteres. No es un tipo de dato basico
en Java, es una clase de utilidad de Java para trabajar mas facilmente con cadenas
de caracteres.
{ }: encierran un contexto. Cuando se utilizan despues de la definicion de la clase
las llaves definen el cuerpo de la clase. Al interior de la clase solo se pueden definir
atributos y metodos, si se escribe codigo que no sean atributos y metodos en la clase
al momento de compilar genera un error.
;: el punto y coma (;) se utiliza para indicar al compilador de Java que termina una
sentencia. Una sentencia es una instruccion que se le da al programa para haga una
tarea, por ejemplo (int mes;), le indica al programa que defina un atributo de tipo
entero y llamado mes.
Comentarios: los comentarios se utilizan para documentar el codigo, no modifican
el comportamiento del programa. Existen varios tipos de comentarios en Java: (1)
el comentario con \\ que es utilizado cuando deseamos un comentario de una sola
lnea y (2) el comentario que inicia \* para indicar el comienzo de un comentario
multilnea, este tipo de comentario termina con */.
Identificadores: los identificadores son los nombres que se le da a las clases, atributos y metodos. Un ejemplo de identificador para una clase es CuentaBancaria
y para un atributo puede ser cedula. Los identificadores tienen cierta reglas para
escogerlos: no pueden iniciar con n
umeros o con smbolos especiales como %,&, #, ,
etc. Los identificadores deben ser descriptivos y no deben proporcionar ambiguedad
al momento de utilizarse.

También podría gustarte