Un programa en Java. Series de tiempo Parte II. por Julio Laguna is licensed under a Creative Commons Reconocimiento-No comercial-Sin obras derivadas 2.5 España License.
Un programa en Java. Series de tiempo Parte II.
por Julio Laguna. - redribera
Un programa en Java.Series de tiempo parte I
1 Programando la clase TimeSerie.
1.1 Introducción.
1.2 Variables miembro de la clase TimeSerie.
1.3 La clase Observacion.
1.4 La clase StringDateFormat1.
1.5 La clase TimeSerie.
1.6 Depurado y Notas Finales.
Parte III. Representación gráfica y estádistica.
1 Programando la clase TimeSerie.
1.1 Introducción.
Con la definición del problema que planteamos anteriormente, en la primera entrega de
este tutorial, ya estamos en disposición de comenzar a programar las primeras clases Java.
Tenemos una especificación inicial del problema y veremos si mas adelante se nos siguen planteando inconvenientes.
Quizás esta sería la fase del ciclo de desarrollo, en la que nos deberiamos plantear comenzar con
algún diagrama UML, como un diagrama de clases o un diagrama de secuencias. Pero por no hacer esto
demasiado complejo, y de hecho, no soy muy ducho en el UML, salvo lo básico. Esto suele ser
mas una tarea de analistas mas que de programadores. Lo cual no evita que en proyectos de mayor
envergadura es un sistema, a mi juicio, imprescindible. Pero, dada la sencillez de estas clases
que vamos a realizar, no debemos tener ningún problema en ir comentando todo el código que utilicemos
y desarrollandolo sin necesidad de utilizar una especificación mas formal como los diagramas UML.
El hecho de no realizar un análisis mas formal de nuestro problema, no nos evita tener que identificar la estructura de clases u objetos del problema que se nos plantea. Es en este momento cuando debemos comenzar a identificar las estructuras que subyacen en la especificación del problema. La programación orientada a objetos o clases, y sobre todo en un lenguaje orientado a objetos, como lo es Java, debe forzarnos a intentar transformar la solución de nuestro problema planteandonos que objetos o clases, debemos concluir de toda la especificación. Para ello es necesario que tomemos todos los apuntes a lápiz y papel o mentalmente, que consideremos necesarios. La elección de un buen modelo, será lo que haga que nuestra aplicación sea mas o menos costosa tanto de implementar, como de mantener a lo largo del tiempo.
En el problema que intentamos resolver, es fácil concretar, puesto que es la esencia con la que trabajaremos, que debe
existir una clase principal, o entidad, mediante la cual podamos instanciar series de tiempo. Estas instancias
u objetos de esta clase, contendrán toda la definición de la misma, fechas de inicio, de fin, las observaciones de cantidad y periodo,
otra serie de caracteristicas que en un momento dado podamos necesitar como el número de observaciones que componen la serie. Todas
estas caracteristicas, las definimos como los atributos o campos de la clase.
Por otro lado querremos realizar inserciones de observaciones en nuestra serie de tiempo, atendiendo a la adquisición de datos propia,
desde ficheros externos o manualmente. Querremos poder agrupar observaciones para conseguir las propias de Meses, Años, Semanas o Dias.
Toda esta serie de operaciones y mas, serán los metodos de nuestra nueva clase.
Además de lo anteriormente explicado, deberemos implementar los metodos (Constructores) que instancien e inicialicen series
de tiempo que deseemos generar.
Comencemos pues con una visión inicial de nuestra clase central, la que vamos a llamar clase TimeSerie.
Esta va a ser la clase Java encargada de contener una serie de tiempo, así como todas sus características. Estas
son las que hablamos en la especificación de la parte1. Fecha de inicio, Fecha de fin, si hay que rellenar a 0 periodos nulos, etc....
Recordemos una serie de ejemplo como la que planteamos en la anterior entrega:
| PERIODO | Valor/Observación |
| 1 | 50 |
| 2 | 85 |
| 3 | 86 |
| 4 | 95 |
| 5 | 85 |
| 6 | 90 |
| 7 | 45 |
| 8 | 15 |
| 9 | 60 |
| 10 | 80 |
| 11 | 95 |
| 12 | 75 |
Si pensamos en toda la especificación inicial del problema que vimos en la parte 1, podemos comenzar por agrupar todas las caracteristicas o atributos, con las que debemos componer una serie de tiempo. A nosotros nos ha salido esta especificación. Aunque como programadores, sabemos que se trata de un coto abierto a la propia evolución del proyecto.
Os voy a poner la definición exacta de las características en lenguaje Java, tal y como se implementará en la clase TimeSerie, para no extendernos demasiado, y así podemos comentar cada campo.
1.2 Variables miembro de la clase TimeSerie.
Esta declaración de variables miembro para nuestra clase TimeSerie, viene a poner de manifiesto mas o menos
las necesidades de las que hablabamos anteriormente.
Primero que todo tenemos la variable timeSerie declarada en la línea 1. La hemos declarado como un tipo de la clase
List del paquete java.util además una lista que contendrá elementos de la clase Observacion, que es una
clase que también declararemos nosotros y veremos mas adelante. Como imaginareís, estos elementos serán los pares cantidad,periodo que
componen las observaciones de la serie de tiempo. La variable timeSerie en cuestión, es la que contendrá la serie de tiempo
completa.
Las variables declaradas de la línea 2 a la 5, son meras variables descriptivas de la serie de tiempo, y que no tienen una aplicación demasiado importante en este desarrollo en cuestión. Pero si estamos desarrollando una clase java, mas bien de tipo genérico y que pretendemos reutilizar con otras clases futuras que desarrollemos en java, no está de mas preparar nuestra serie con algunos datos identificativos, como yo he hecho.
En la línea 6 definimos la variable agruacionDePeriodos, y de hecho la inicializamos. Bueno, esta variable en cuestión contendrá la información acerca del tipo de agrupación de las observaciones en nuestra serie. Como dijimos anteriormente, estas son anuales, mensuales, semanales y diarias. Este dato va aser importante para sincronizar las clases que utilicen este denominador común y que es el tipo de agrupación. Por ello hemos querido utilizar un valor constante que nos facilite las tareas de desarrollo de las clases que utilizan estas agrupaciones. Justifico estas palabras a la hora de haber creado lo que en Java se conoce como interface. La interface tiene una serie de aplicaciones en Java, entre ellas permitir la herencia múltiple propia de los lenguajes orientados a objetos como lo es Java. Pero en este caso nosotros la vamos a utilizar simplemente como una forma de declarar constantes mediante el uso de variables estaticas en la interface. Veamos la interface en cuestión.
| SeriesProperties.java |
Las clases que implementen esta interface, podrán acceder de una forma mas entendible por nosotros, sobre todo cuando utilizamos un IDE como eclipse, que nos permite completar código y hacer mas fácil nuestra tarea de programadores. También nuestro código será mas legible. En fin manías de programador.
Esta clase ya se puede añadir a nuestro proyecto eclipse. Mas adelante diremos como montarlo todo, pero ya podeís descargar la clase SeriesProperties o irla
generando en el IDE que useís, los que os queraís animar.
Prosigamos con las variables miembro de la clase TimeSerie.
Siguiente » |






