Archive for ‘Mis Tareas como alumno’


Para mis tareas de Java

Tarea1

Hola! Bienvenidos a mis posts de tareas de java.

Esta es la primer tarea. Una Agencia de Autos.

Hay declaradas las clases Auto, Vendedor, Cliente, Venta.

El main() está en Agencia.
El programa crea
  • 3 instancias de la clase Auto
  • 3 instancias de la clase Cliente
  • 1 instancia de la clase Vendedor
Mediante un menu permite modificar las instancias, usando metodos dados de
alta en las respectivas clases
Al vender un auto, se crea una instancia de la clase Venta.

Claro que se pueden editar las propiedades de los objetos antes de concretar la venta, etc.


Grafo para mi tarea de Java

Bueno. Pues hubo que pensarle un rato, instalar algunos programas para gráficos, pero parece que ya se entiende. He aquí mi grafo para la escuela:

Hacer click para ver en grande.

Le he agregado a cada camino un valor de Tráfico (Bandera Roja) y otro valor de Distancia (Auto Verde).  El Algoritmo, que es el que sigue, va a evitar los caminos que pasen por un lugar con Trafico => 3, y lo mismo para Distancia.

Lo primero que notamos es que no se puede evitar pasar por un lugar con ese Trafico o esa Distancia. Viéndolo así la UPEMOR queda muy, muy lejos.

Algoritmo:

Algoritmo4 niveles_


Mis lecturas Curr1 y Curr2

Estas dos lecturas, presentan la historia de java, de sun, y el paradigma de programación orientada a objetos utilizando java.

Es interesante como un proyecto de programación de microcontroladores (proyecto java en 1992 antes de llamarse java) se convirtiera en el java que conocemos ahora.

Aunque claro, que diferentes son los conceptos “máquina virtual de java” y “meter un firmware universal para microcontroladores que están en los electrodomésticos”. Muy poco mencionan en la currícula Cisco acerca de los orígenes de java, pero bueno, no deja de seguir siendo interesante la diferencia entre los dos proyectos.

Centrándonos en el tema.

El paradigma java, centrado en la tercia Clases – Objetos – Métodos que espero representar bien en las dos siguientes figuras, me parece super-funcional, super-reutilizable. Y es lo que sucede, actualmente podemos ver verdaderas granjas de maquila de software java gracias a la estructura de éste lenguaje-compilador-intérprete.

figuraclasesobjetosmetodos

Tercia clases objetos metodos

Explica Clases, Objetos, Métodos

Explicación de clases, objetos, métodos

Sobre la arquitectura, puedo concluir lo siguiente:

  • Durante los ejercicios realizados para las sesiones, las ventajas de reutilización del código han salido a relucir.
  • La organización estructurada permite una gran “mobilidad” o “libertad” a la hora de desarrollar el software, sobre todo en las fases de diseño, implementación y documentación
  • La portabilidad de código (o lo mismo, que hay máquina virtual java para casi cualquier sistema operativo asegura que tu código sea ejecutado virtualmente en cualquier lugar del mundo

Y hay mas, pero si me sigo, me quedo sin comentarios para las siguientes lecturas.


Mis lecturas, Curr3 y Curr4

El tema de las lecturas son los elementos del lenguaje java, operadores y estructuras de control.

Definitivamente, éstos dos capítulos se vuelven una referencia bibliográfica de uso común, hasta que programes lo suficiente como para que no se te olvide la sintaxis de las estructuras que se utilizan comúnmente.

Hay que mencionar que en un archivo .java, cuando has creado una clase pública dentro del archivo, entonces el archivo .java se tiene que llamar exactamente igual que la clase.

Por ejemplo, veamos la siguiente figura:

Codiguito Programa1

Codiguito Programa1

El archivo tiene que llamarse forzosamente BuenasTareas.java; creo que es el primer error de compilación con el que todo principiante de java se topa, y claro, el depurador no ayuda con un mensaje que te saque del apuro.

En cuanto a las palabras reservadas, palabras clave, etc no hay gran diferencia con otros lenguajes de programación, de nuevo, hay que tener la referencia a la mano las primeras veces, pero con la práctica (y además cualquier entorno de desarrollo java decente tiene un resaltador de código ergonómico) pues se va volviendo más fácil.

Hablando de depuradores y resaltadores de codigo el que hemos visto en clase, BlueJ, ya puedo comparar NetBeans, Jgrasp y PSPAD con resaltador de código para Java.

Las estructuras de control if, do while, for, switch, permiten implementar nuestros algoritmos y diagramas de flujo, cualquier bucle que estemos implementando, las estructuras de control java son suficientes para esta tarea.

Por cierto, en los ejercicios para clase que hemos hecho, he querido ahondar más en los usos de try/exception pero como ha habido que hacer un buen de talacha, pues me he tenido que conformar con la implementación que tengo, qeu ya está probada y no es un arriesgue.  ¿Por qué me asalta la duda ahora? Ah, pues resulta que en un recurso web leí algo acerca de optimización mediante métodos sobrecargados, pero trabaja intensivamente con estructuras if que dependen de try/execute… en fin, espero poder practicar eso en clase.


Ejercicio *Extra* Polimorfismo

Anexo un ejercicio que hice para algunos compañeros. *Extra* por que en realidad no era tarea de la clase

polimorfismo

La clase Figura le hereda el atributo area() al triángulo y al cuadrado, pero area() se redefine en las subclases. Tadaaa! Polimorfismo… y dale con el polimorfismo!


La tarea del Checador

Esta es la Version 2.0 de “Checador de Tarea”.

Como la idea era hacerlo con el mínimo de clases (incluso a nivel abstracción), pues nos hemos esforzado en hacerlo. La clase empleados implementa dos métodos, verDatos() y checareloj(). Utilizamos entonces un set() y un get().

Nuestro set() se conecta a la base de datos, utilizando la clase Conexion y permite anotar las entradas y salidas de los empleados en la tabla relojdb. Que bien que hay swing! Así resolvemos de manera rápida las necesidades básicas de interfaz con el usuario.

La estructura de la base de datos javadb se desglosa a continuación.

  • checadb
    • id, autoincremento, llave primaria
    • clave, texto
    • horaentrada, texto
    • horasalida, texto
  • relojdb
    • id, autoincremento, llave primaria
    • clave, texto
    • entradasalida, texto
    • hora, timestamp

Hacemos uso de equals(“string”) para poder manipular los datos que sacamos del ResultSet. También hicimos un pequeño experimento duplicando registros (por supuesto que todos los campos excepto el de id) para constatar que rs.next() se comporta como debe. Después de todo, el chiste era jugar un poco con nuestro código.

Anexo :

  • Proyecto en formato.zip para ejecutar en netbeans ChecadorV2
  • Dump SQL en formato.zip de la base de datos javadb.sql
  • Algunas capturas donde se muestra:
    • Pantalla de Inicio

      Pantalla de Inicio

      Pantalla para ver datos del empleado segun su clave de empleado

      Pantalla que muestra detalles de empleado verDatos()

      Listos para checar una Entrada

      Aquí se inserta en la DB javadb la entrada del empleado

phpmyadmin dice que el programita se conecta ok con la BD

Recomiendo usar servidor mysql, aunque sea desde algo rápido como el XAMPP o el AppServ. La clase Conexion se conecta a localhost en el puerto 3306, usando “root” sin password. Si se quiere utilizar en una conexión con otras características, pues habría que cambiar Conexion.java de acuerdo a los cambios requeridos. Cabe notar que la versión1  fue realizada el sábado al término de la clase entre los compañeros:

  • Oscar Saavedra
  • Omar Montes Agüero
  • Jessy Zavaleta
  • Cesar Minauro
  • Celis el “Celis”