BBDD&POO

Bases de Datos y
Programación Orientada a Objetos.

Máster Universitario en Modelización e Investigación Matemática, Estadística y Computación
Curso: 2024/25.

Calendario
(Aula 2.1)

Septiembre
LMMJV
[1]30
14..16
    
Octubre
LMMJV
[1] 1
14..16
18..20
234
16..18
[2]7
16..18
891011
[3]1415
18..20
1617
16..18
18
[4]2122232425
[5]28293031
14..16
 
Noviembre
LMMJV
[5]    1
[6]456
14..16
78
[7]11
16..18
12
18..20
131415
[8]18192021
18..20
22
[9]2526272829
Diciembre
LMMJV
[10]2
14..16
3
18..20
4
18..20
56
[11]910111213
 N  no lectivo,  N  fiesta,  N  estudio,  N  exámenes, NN POO, (NN BBDD).

Programa

Dadas las características de este curso (la limitación del número de horas y encontrarse asociado "de algún modo" a las Bases de Datos) El enfoque va a ser diferente al clásico para el aprendizaje desde cero de los conceptos de la Orientación a Objetos, que sería básicamente aprender un lenguaje "ordenadamente". Vamos a plantear un par de casos generales a resolver con Orientación a Objetos que pueden ser de interés. Usaremos un lenguaje adecuado (Java) pero con un cierto (des)orden ligado a los casos planteados.
Esta manera de proceder, sin serlo exactamente (porque deberámos plantear muchos casos más simples), podemos aproximarla lo que se conoce como "problem solving"... podemos mencionar a Elon Musk, ya que está de moda ahora, como un defensor destacado del mismo: lo explicaba en este video.

Pensando en el uso de la programación con Orientación a Objetos en relación con el manejo de bases de datos (BBDDs) en ciencia y tecnología, vamos a plantear dos casos: la construcción de interfaces gráficos (GUIs - Graphic User Interface) específicos para acceso a BBDDs, y el procesamiento de datos en bruto para adaptarlos a los requerimientos de una BBDD:

Evaluación

Ejercicios propuestos (pendientes de enunciados cocretos)

Ejercicio 1 [3 puntos] Clase básica
Escribir la clase Matrix con el prototipo public class DenseMatrix implements Matrix que proporciona las operaciones con matrices de valores de tipo double del interfaz proporcionado "Matrix". La implementación "directa" es bastante trivial, pero han de tenerse en cuenta los posibles errores.
Se recomienda que se escriba otra clase para hacer pruebas de funcionamiento, ya que la clase entregada se someterá a un chequeo automático.
Ejercicio 2 [4 puntos] Gui de acceso a base de datos.
Ampliar la aplicación desarrollada en clase para que la funcionalidad actual se aloje en una pestaña, y en otra pestaña podamos introducir nuevas referencias en la base de datos mediante un formulario que contenga todos los campos necesarios (función executeUpdate de Statement)
Cómo hacer que el JFrame tenga paneles con "pestañas" [2,5 min.]

Una vez acabadas las clases, para cualquier duda, aclaración, comentario... estaremos en contacto via email (german.bordel@ehu.es). Si tenéis problemas concretos con el desarrollo de los ejercicios propuestos lo mejor es que me envieis el proyecto netbeans siguiendo las instrucciones de este video Enviar proyecto
Si hay consultas particulares que sean de interés general, lo haré saber a través de un mensaje en el foro de eGela, y si es precisa alguna explicación elaborada, la pondré al final de esta web en el apartado "POSTCURSO".

Desarrollo

Noviembre

miércoles 06 de noviembre de 2024

Introducción: planteamiento del curso basado en el desarrollo de dos casos. Herramientas a utilizar. Inicio del desarrollo del caso 1, con introducción de los conceptos de Clase y Objeto, Herencia, polimorfismo, etc.


  • Sobre el kit de desarrollo con Java [descargar Oracle JDK 23].
    Comentamos versiones... es necesario desde que SUN 😇 fue comprada por Oracle 👿: vamos por la 23, la 8 es la más "común", nos basta con la 7.
  • Sobre el Entorno Integrado de Desarrollo [descargar Netbeans 23]
proceso de instalación de JDK y Netbeans [2.5 min.]

Hemos visto cómo descargar las herramientas. Hemos echado un vistazo a la demo de Swing y comenzado a usar Netbeans para poner componentes en un JFrame y entender clase como "tipo complejo con estado y comportamiento". Para esto hemos hablado también de la biblioteca, los paquetes y los espacios de nombres, así como de la documentación y su generación con javadoc.

lunes 11 de noviembre de 2024

El objetivo para hoy es entender la estructura de componentes para construir un GUI y de ese modo entender la herencia y otros elementos propios de la Orientación a Objetos.


  • Entender la Herencia en primera aproximación

Para diseñar el JFrame nos ayudamos de este material:
Generar un nuevo proyecto con Netbeans [5 min.]
Iniciar un GUI con Netbeans [8 min.]

Emplazamiento de componentes en GUIs [pdf]
How to Use Various Layout Managers
Componentes gráficos para el GUI [24 min.] ← herencia
Layout managers [27 min.]

  • Echaremos un vistazo al código fuente de la clase JButton para reforzar lo visto (herencia, campos y métodos, comentarios, documentación...) y comentar todo lo no comentado aun y que resulte pertinente ( estructura de la clase, constructores, el "this" y el "super", getters y setters, clases internas, etc.).

Hemos hecho lo previsto quedando en una vista rápida de las clases y los métodos abstractos.

martes 12 de noviembre de 2024

El objetivo para hoy es revisar la idea de clase abstracta para pasar a ver Interface y con todo ello hablar de polimorfismo. Esto nos permite ver el patrón observador y su uso en la atención a los elementos de un GUI. Con ello empezaremos a hacer una aplicación que enviará queries a una base de datos,y esto nos irá llevando a estudiar otros conceptos.


  • Ampliar la visión de la Herencia (directa y de "obligaciones", es decir los Interfaces pasando por las clases abstractas), y el Polimorfismo
    dejaremos de ver de este modo muchos detalles puntuales que tendremos que abordar posteriormente, pero hemos de hablar ya de reescritura de métodos.

Para "dar vida" a nuestro GUI nos ayudamos de estos materiales:
Comunicación entre componentes de AWT y Swing [pdf]
donde vemos el patrón "Delegation Event Model" ("Observer")
(Patrones en Wikipedia)
Interacción con el GUI [32 min.] ← uso del polimorfismo

  • Comenzaremos a desarrollar el GUI de la aplicación y de este modo iremos aprendiendo a usar el IDE para encontrar con su ayuda lo que se necesita de un modo intuitivo.

Hemos hecho lo previsto, hasta el punto en que hemos preparado el GUI de la aplicación con todos sus componentes.

jueves 21 de noviembre de 2024

Hecho el interfaz gráfico, escribiremos el resto de la aplicación. Para ello hay que ver conceptos generales de Java


Dejamos un momento la aplicación, no sin antes definir un espacio de nombres y separar en dos clases el GUI y el arranque.


Hemos retocado la aplicación y hemos visto casi todo lo referente a elementos no orientados a objetos (nos falta break, return y ejemplos)

Diciembre

lunes 02 de diciembre de 2024

Veremos lo poco que falta del dia anterior, y pasaremos a ver todo lo que nos falta en relación a orientación a objetos.



Hemos visto los elementos previstos, a falta de ver la posibilidad de arrojar excepciones fuera de los métodos y generar las que necesitemos.
Ah! y no estaba previsto, pero comentaremos la existencia de las enumeraciones.

martes 03 de diciembre de 2024

Veremos lo poco que falta del dia anterior, y pasaremos a continuar con el desarrollo de la aplicación de acceso a la base de datos. Para ello usaremos los conocimientos adquiridos en las últimas clases, y necesitaremos de algunos nuevos que pueden verse en los enlaces posteriores.


    Temas relacionados con la biblioteca:
  • ---adelantamos esto por ser necesario en el ejercicio--- Acceso a bases de datos El driver puede descargarse de aquí. El "Platform independent" nos vale a todos. Al pedir descargar sugiere hacerse una cuenta en Oracle, pero puede descargarse sin hacerlo. El driver está en el fichero ".jar" que viene en el ".zip"; lo dejaremos en nuestro disco (en Windows sugiero c:/program files/Java/libs/). y lo incluiremos en nuestro proyecto seleccionando "add jar" en el menú que obtenemos sobre la carpeta "libraries"
  • ...

Hemos visto lo pendiente de ayer, y hemos avanzado en la aplicación incluyendo parámetros de conexión, y comenzando con el controlador y adjuntando el driver JDBC como libreria.
Nos hemos quedado a punto de suscribir el objeto controlador al GUI.

miércoles 04 de diciembre de 2024

Terminaremos la aplicación y veremos todo lo posible de los temas pendientes listados aquí abajo.


    Temas relacionados con la biblioteca:
  • ...
  • ---deberíamos empezar por Object, System, java.lang, java.util sin colecciones; pero lo retrasamos porque hay cosas más urgentes---
  • ---adelantamos esto por ser necesario en el ejercicio--- java.util (colecciones) (genéricos)[28 min.],...
  • ---también adelantamos esto porque no se puede dejar sin ver--- ... Entradas/Salidas
  • Object, System, Java.lang, java.util (sin colecciones)
  • ---con tiempo podríamos ver muchos más temas soportados por la biblioteca: uso de hilos, clientes-servidor en red, aplicaiones distribuidas, etc. etc. etc.

POSTCURSO

?