Concesionario: Programa de ejemplo en Java

A raíz de un reciente comentario en uno de los posts sobre Java, me he animado a hacer un programa de ejemplo bastante sencillo en el que podemos ver como programar de forma orientada a objetos de forma simple. No da para ver propiedades como la herencia o el polimorfismo, claves en la orientación a objetos, pero sí que puede servir para entender bien lo que es un objeto, y además he separado los objetos de la lógica del programa.

El codigo fuente se compone de tres ficheros y el proyecto para Netbeans se puede descargar del siguiente archivo ZIP: concesionario.zip
El primero de los archivos en el que nos fijaremos es el documento Auto.java.

En esta clase definimos un auto como un conjunto de atributos (marca, modelo, color, largo, ancho, alto) y proporcionamos los métodos necesarios para construir un objeto de este tipo (hay dos constructores, uno sin atributos y el otro que los recibe como parámetros), operaciones de escritura (métodos setters) y de lectura (métodos getters). Además, sobreescribe el método “public String toString()”, que debe devolver una cadena de texto con los atributos del objeto presentados de forma legible para el usuario.

Por otra parte tenemos la clase Concesionario.java. Las dos son un claro ejemplo de una relación de agregación: un concesionario contiene de cero a N elementos, en este caso, autos.
Esto no significa más que el concesionario (aparte de otros atributos como nombre, localización, etc. que no he tenido en cuenta) debe contener una lista de objetos de la clase Auto. En este caso la he implementado como un ArrayList.
Por supuesto en el constructor, este ArrayList se inicializa y podemos decir que el concesionario está vacío. Debemos también por lo tanto incorporar operaciones que permitan añadir/eliminar/consultar autos. Para que el ejemplo no resulte demasiado extenso, solo he implementado la operación de añadir (addAuto()) y la de ver todos los autos del concesionario (showAutos()).

Finalmente, la lógica del programa la he separado de los objetos. En el archivo Main.java encontraremos el arranque del programa.
Comienza con un bucle que muestra el menú principal y ejecuta la tarea que en este se seleccione hasta que se dé la señal de terminación. Es quizás la parte menos OO de todo el ejemplo.

Es una buena práctica el crear objetos realmente concisos y separarlos totalmente de la lógica. Facilita su reutilización y depuración; algo que siempre se agradece. Hay muchos ejemplos pululando pero hace unas semanas encontré este, en donde además nos recuerdan que programar unidades más pequeñas genera mayor potencia a la larga. El ejemplo que ponen es el siguiente:
Imagina que quieres contar el número de palabras en un documento de Microsoft Word. La única opción posible es abrir el pesado procesador de textos y acudir a la opción correspondiente; mientras que en cualquier sistema tipo Unix nos bastaría con usar el comando wc (word count):
$ wc -w hola.docx
2 hola.docx

que indica que el archivo hola.docx contiene 2 palabras.
Finalmente es sencillo entender que muchas herramientas pequeñas pero concisas son más útiles que una única herramienta grande (principio divide y vencerás).

Recordad que también podéis consultar el ejemplo del que hablaba al principio, (sobre una lista de personas) pero sinceramente, de los dos considero mejor el del concesionario, que se encuentra mejor estructurado y cumple con más convenciones.

Anuncios

3 pensamientos en “Concesionario: Programa de ejemplo en Java

  1. Java: ejemplo de clase y objeto | Emilio

  2. 2013 de un plumazo! | Emilio Devesa

  3. Java Rápido: Introducción – Emilio Devesa

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s