miércoles, 30 de junio de 2010

Videotutoriales de Java con Netbeans - Parte 3

Continuando con los video tutoriales de Java básico utilizando el IDE (Integrated Development Environment, Entorno de Desarrollo Integrado) Netbeans; hoy veremos como los cursos en video van avanzando gradualmente sin perder continuidad y sencillez.

7.- Herencia, polimorfismo y encapsulamiento.

Se explican los conceptos de herencia, polimorfismo y encapsulamiento; aplicando éstos principios de Programación Orientada a Objetos en Java a través de un sencillo ejemplo, en el que se crea una clase base, se definen sus atributos y métodos; que serán heredados por otras dos clases, de las cuales se construirá un objeto y se hará utilización de ellos.





8.- Manipulación de archivos y uso de excepciones.

Se desarrolla un ejemplo en el que se implementan dos clases: una llamada escribir y otra leer, que son utilizadas para bajar a disco y leer de disco un archivo respectivamente. Aprovechando que el uso de archivos pueden generar excepciones, se realiza una breve explicación sobre ello y su utilización.





9.- Interfaces gráficas de usuario.

De una manera didáctica y 100% práctica en este videotutorial se realiza una introducción a GUIs (Graphical User Interface, Interfaces Gráficas de Usuarios); utilizando los componentes de la librería Swing, se desarrolla como ejemplo la programación de una calculadora.







Pero tengo que acotar los siguientes puntos aquí:

1.- Esta calculadora está limitada para ser usada para calcular de a dos términos a la vez y no como las calculadoras tradicionales que te pueden calcular una serie de términos sucesivos. Por ejemplo si pones 1 + 2 y presionas = te calcula 3, pero si introduces 1 + 2 + 3 y presionas igual te calcula 5 debido a que toma los dos últimos números introducidos (2 y 3), ósea solo hace cálculos numéricos de a dos términos a la vez.
2.- Hizo falta un botón "Clear" para borrar los valores de la pantalla.
3.- Erróneamente se puede concatenar más de un punto.
4.- Si se introduce un valor, luego se presiona la operación "+", pero seguidamente cambiamos de opinión y presionamos "-", "*" o "/" realiza erróneamente la primer operación (+), siendo que debió haber realizado la última operación que se indicó ("-", "*" o "/" según el caso). Hagan la prueba y me entenderán mejor. Por ejemplo presionamos 4 +, pero nos desanimamos y en vez de la suma queremos realizar la operación * 3 y erróneamente la calculadora interpreta 4 + 3 = 7, debiendo haber interpretado 4 * 3 = 12 (es decir la última operación presionada); y así sucede con muchos ejemplos.

El punto 1 a mi entender se hizo así por simplicidad, porque el objetivo del tutorial era el manejo de interfaces gráficas con swing y no la programación de estructuras de datos o TDA (Tipo de Datos Abastractos) avanzados.

El punto 2 es muy fácil, solo es cuestión de aumentar un botón y en él reiniciar las variables pertinentes.

Bueno el punto 3 ya queda muy feo dejarlo así, debido a que si concatenamos muchos puntos y queremos realizar una operación aritmética saldrá un error horrible. Así que para solucionarlo podríamos modificar el método concatenamiento y dejarlo como muestra el siguiente fragmento de código:

public String concatenamiento(String cadena) {
if (!cadena.equals(".")) { // Si no es un punto (es un número)
this.cadena = this.cadena + cadena;
} else { // Caso contrario, es un punto
if (this.cadena.equals("")) // Si en la pantalla todavía no hay ni un número
this.cadena = "0" + cadena;
else {
if (!this.cadena.contains(".")) { // Si no hay concatenado todavía ningún punto
this.cadena = this.cadena + cadena;
}
}
}
return this.cadena;
}
Del anterior fragmento de código vale la pena mencionar puntualmente lo siguiente:
  • En las líneas de código 2 y 5 se usa el método predefinido equals de la clase String, el cual compara el valor de dos cadenas de caracteres (Strings), devolviendo verdadero (true) si son iguales y falso (false) en caso contrario.
  • En la línea de código 8 se está haciendo uso del método predefinido contains de la clase String, el cual devuelve verdadero (true) si la secuencia de caracteres de su parámetro se encuentra contenido en el objeto de la clase String que está llamando a la función (en nuestro caso el atributo cadena de la clase libreria), caso contrario devuelve falso (false). De esta manera garantizamos que si ya existe concatenado un punto no se vuelvan a concatenar más de uno.

En cuanto al punto 4, para corregirlo debemos añadir las líneas de código 5, 12, 19 y 26 de los métodos suma, resta, multiplicación y división, como muestra el sgte. fragmento de código:


public void suma(String cadena) {
resultado = Double.parseDouble(cadena);
suma = true;
this.cadena = "";
resta = multiplicacion = division = false;
}

public void resta(String cadena) {
resultado = Double.parseDouble(cadena);
resta = true;
this.cadena = "";
suma = multiplicacion = division = false;
}

public void multiplicacion(String cadena) {
resultado = Double.parseDouble(cadena);
multiplicacion = true;
this.cadena = "";
suma = resta = division = false;
}

public void division(String cadena) {
resultado = Double.parseDouble(cadena);
division = true;
this.cadena = "";
suma = resta = multiplicacion = false;
}

Esto se debe a que hizo falta lo que el autor llama "cierre de banderas" que lo realizó en el método resultado pero se olvido que también tenía que hacerlo en los métodos ya mencionados. Con esto ahora sí queda totalmente corregido lo que mencionamos en el punto 4.

También vale la pena mencionar que cuando a varias variables (por ejemplo a, b, c de tipo entero) se les va asignar el mismo valor, se lo puede hacer de la siguiente manera:
a = 0;
b = 0;
c = 0;
Pero en Java en vez de hacer lo anterior se lo puede hacer en una sola línea de código como sigue:
a = b = c = 0;
De ahí las líneas de código 5, 12, 19 y 26 de los métodos suma, resta, multiplicación y división; donde existen variables del mismo tipo (boolean) que se les va asignar un mismo valor (false).

Como podrán haberse dado cuenta, éstos videotutoriales son ideales para personas con cero conocimiento de Java ni de Netbeans, por la sencillez tanto de su contenido como la de su explicación; pero no deja de ser interesante que a medida que va avanzando el curso también va avanzando en "complejidad", cuando el autor vaya sacando la continuación de estos videotutoriales, iré actualizando con más entradas.

No hay comentarios :

Publicar un comentario

Encuesta: ¿Quién es el mejor catedrático de la carrera de Ing. Informática de la UAGRM?