BBDD&POO
Bases de Datos y
Programación Orientada a Objetos.
Curso: 2020/21. Parte POO
Máster en Modelización Matemática, Estadística y Computación
Enlace a sesiones movido al final de la sección "Programa"
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
N no lectivo, N fiesta, N estudio, N exámenes, NN BBDD, NN POO, nuestra clase. |
Tema | Contenido |
1 | INTRODUCCIÓN |
2 | ELEMENTOS BÁSICOS DEL LENGUAJE - Introducción. - Tipos de datos, identificadores y literales. - Operadores. - Sentencias. |
3 | ELEMENTOS RELACIONADOS CON LA ORIENTACIÓN A OBJETO - Objetos y clases. - Estructura de la definición de una clase. - Herencia. - Encapsulamiento (ámbitos de accesibilidad). - El bloque static y los atributos static y final. - Instanciación, inicialización y eliminación de objetos. - Clases y métodos abstractos. - Interfaces. - Polimorfismo. - Enumeraciones. - Clases dentro de clases y métodos. Clases anónimas. - Arrays. |
4 | MECANISMO DE TRATAMIENTO DE EXCEPCIONES Y ERRORES - Introducción. - Control de excepciones. - Generación excepciones. - Definición de nuevas excepciones. - Aserciones |
5 | BIBLIOTECA DE CLASES (clases de interés) - Los paquetes java.lang y java.util. Genéricos y colecciones. - Clases para entradas y salidas |
Práctica | Procesamiento orientado a Bases de Datos - Ejercicio en grupo de acceso a bases de datos. |
Documento de programación de las sesiones
Enlaces a las sesiones de BBC
Clases: https://eu.bbcollab.com/guest/eb18aef6f7854d43bd686cf265ac87d5
Tutorias: https://eu.bbcollab.com/guest/95cad51970f74434bc6b1674da4d3121
Fechas de entrega del segundo ejercicio:
Método de entrega:
Ejercicio Final
El ejercicio propuesto, con los datos a utilizar, puede descargarse aquí. Consiste básicamente en definir una clase que "soporte" referencias bibliográficas en objetos, y generar multiples objetos de esa clase almacenándolos en en una colección. Una vez recogida toda la información tendremos una colección de objetos (referencias bibliográficas) que podremos usar para llevar esa misma información a una base de datos.OCTUBRE
TEMA 1 - Introducción
La siguiente introducción pretende dar una aproximación muy general a la Orientación a Objetos, y poner en contexto y justificar el uso de Java como lenguaje para concretar el aprendizaje.
Aparecen algunos datos/ideas/conceptos relacionados y de interés que no se volverán a tocar, ya que no son estrictemente necesarios si nos centramos en el objetivo de entender la Orientación a Objetos. Principalmente me estoy refiriendo con esto a las Máquinas Virtuales (la JVM -Java Virtual Machine- en nuestro caso y como precursora), y al patrón MVC de "estructuración" de aplicaciones.
Las últimas páginas se dedican a las herramientas que usaremos. En los párrafos siguientes se proporciona el acceso para descargarlas.
Necesitaréis el entorno de desarrollo de Java (JDK - Java Development Kit).
Ha salido hace un mes la versión JDK15 (recientemente se ha establecido en 6 meses
el periodo de publicación de versiones -una técnica de desarrollo acual-).
De todos modos, trabajaremos "a nivel" de la versión 7,
porque todas las actualizaciones desde entonces caen fuera del ámbito de este curso. En realidad, la versión 8
es la mejor opción ahora mismo para quien no quiera profundizar en Java más adelante (de todos modos nos limitaremos a trabajar con los recursos proporcionados en la 7, pporque las capacidades funcionales de la 8 nos pueden confundir en el IDE del que hablamos
más abajo).
Descargad e instalad de aquí.
Además usaremos como entorno de ayuda al desarrollo (IDE) el de Netbeans
(es el que mejor se adapta a nuestras necesidades siendo 100% gratuito).
Descargad de aquí la última versión (12.1).
TEMA 2 - Elementos básicos del lenguaje
En este tema aprendemos todo lo necesario para programar en Java sin Orientación a Objetos (ignorando por el momento todo aquello que sí lo es y nos vemos obligados a incluir sin dominar). Para quien domine C encontrará más similitudes que diferencias (siempre a mejor). En general tampoco es muy diferente a programar en cualquier otro lenguaje imperativo. Es cuestión de "hacerse" con una sintaxis concreta.
Como puntos a destacar: la absoluta portabilidad de los tipos primitivos; algunos operadores no demasiado comunes: el ternario (cond ? exp1 : exp2
), los incrementos y decrementos
(++x, --x, x++, x--
), los combinados (+=, -=, %=,
etc.)
Como decíamos, hay ciertos elementos que se mencionan aquí aunque pertenecen al "mundo de los objetos" (operadores new
e instanceof
, o la sentencia throw
) que se estudiarán más adelante
//Nos quedamos a falta de ver las sentencias
//Continuamos donde lo dejamos...
Sin necesidad de programación a objetos ya deberíamos poder resolver el siguiente ejercicio:
Se trata de calcular el número π con precisión de cuatro decimales mediante la serie:
La especificación de cuatro decimales hace referencia al criterio de parada en la suma de términos de
la serie, no a la presentación de la solución, que se hará normalmente mediante System.out.println(.)
y que nos mostrará un número de decimales que no podemos controlar por ahora.
El siguiente ejercicio lo dejamos planteado "sin más", y veremos soluciones al finalizar el curso porque nos mostrará algunas capacidades "avanzadas" que nos permiten obtener más soluciones que las que están por ahora en nuestra mano.
Escriba una RUTINA que determine si un número dado es perfecto o no.
static boolean isPerfect(long n) { //TODO hacer lo necesario para que "isPerfect" retorne "true" o "false" si n es perfecto o no. }
Un número perfecto es un entero positivo igual a la suma de sus divisores propios. Los divisores propios de un entero positivo son todos sus divisores a excepción de sí mismo. (Ejemplo de número perfecto: el 6, porque sus divisores propios son 1, 2 y 3 y 6=1+2+3.)
Utilizando dicha rutina debera obtener una lista de números perfectos entre el 1 y el 100.000
Listado de Números Perfectos [pdf]
TEMA 3 - Elementos relacionados con la Orientación a Objetos
En este tema encontramos los conceptos importantes de la Orientación a Objetos. Todos son importantes, pero hay que destacar la Herencia, y más aún el Polimorismo.
//Nos quedamos a punto de hablar de getters y setters (en encapsulamiento)
//Continuamos donde lo dejamos...
TEMA 4 - Mecanismo de control de Excepciones y Errores
En este tema vemos una parte de Java que, siendo parte de la estructura básica del lenguaje, comienza a hacer uso de las capacidades que nos da la orientación a objetos. La gestión de errores obedece a un modelo de separación de caminos de éxito y resolución de problemas, que está soportada por el lenguaje mediante una sentencia específica así como por clases que heredan la capacidad de ser "arrojables"
TEMA 5 - Biblioteca de Clases
Hemos visto todo lo que se refiere al lenguaje (bueno, excepto el soporte puntual que da a un par de características con los términos "transient" y "volatil", las dos que nos quedan por marcar en el cuadro de palabras reservadas).
A partir de aquí todo son bibliotecas. Como ya se ha mencionado, el elenguaje es absolutamente incapaz de hacer nada sin bibliotecas, y se han usado desde el primer instante (System.out.println("Hola mundo");
).
Hemos de estudiar las clases imprescindibles, las de más frecuente uso, y las específicas para nuestros intereses particulares.
java.lang
y java.util
)
Object
, ha de tenerse en cuenta... siempre forma parte de nuestra herencia System
, es la máquina sobre la que se ejecuta el programa... java.lang
, son básicas e interesantes. -Imagen resumen-java.util
, no son "imprescindibles", pero a poco que hagamos las necesitaremos.for
"iterativo" -es un patrón-)java.IO
en nuestro caso) -Imagenes resumen: 1, 2, 3-
File
, RandomAccessFile
java.nio.file
aporta más material de IO para trabajo con ficherosPublicado en la sección "Evaluación" el primer ejercicio (20% de la nota)
NOVIEMBRE
El último día nos quedamos sin tiempo,y además vimos hacial el final todo demasiado rápido. Como hoy vamos a hacer un ejercicio de acceso a base de datos, en realidad vamos a ver un poco de todo lo que se pretendía ver el día anterior sobre bibliotecas, así que, si podemos ver la "filosofía" de desarrollo, lo daremos por bueno. No será un ejercicio en el que la arquitectura de la solución sea importante, pero para eso ya os habéis enfrentado al primer ejercicio evaluable.
Antes de nada, y muy rápido:
PRÁCTICA - Procesamiento orientado a Bases de Datos
Para trabajar con bases de datos necesitaremos una en nuestra máquina o acceso a una remota.
Lo fácil es lo primero (para los accesos remotos desde la universidad encontrariamos firewalls cerrando el paso).
Elegimos MySQL en la asignatura, pero eso es casi indiferente... sólo influye en el driver
que necesitaremos.
Para MySQL es MySQL-JDBC (Java DataBase Connector) [elegir "platform independent"].
Desde el mismo enlace podeis acceder al instalador completo ("daemon", y "workbench") si no teneis ya MySQL
Desarrollaremos el ejercicio en clase y lo compartiré después aquí
DROP DATABASE IF EXISTS actaspv; CREATE DATABASE actaspv; USE actaspv; CREATE TABLE estadisticas ( `id` VARCHAR(8) NOT NULL, `numPalabras` INT NOT NULL, `validas` INT NOT NULL, `media` DOUBLE NOT NULL, `desviacionTipica` DOUBLE NOT NULL, PRIMARY KEY (`id`), UNIQUE INDEX `id_UNIQUE` (`id` ASC));