BBDD&POO
Bases de Datos y
Programación Orientada a Objetos.
Curso: 2018/19. Parte POO
Máster en Modelización Matemática, Estadística y Computación
|
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
N no lectivo, N fiesta, N estudio, N exámenes, NN BBDD, NN POO, nuestra clase. |
Entrega de ejercicios en primera convocatoria: 25/1/2019; en segunda convocatoria: 5/7/2019.
Método de entrega:
Ejercicio Propuesto para la primera convocatoria
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 uno de tipo colección, para terminar generando unas tablas adecuadas a la base de datos con la información acumulada. Esas tablas deberían poder ser leidas fácilmente con una instrucción SQL. Hay dos detalles a tener en cuenta:Ejercicio Propuesto para la segunda convocatoria
El ejercicio propuesto, con los datos a utilizar, puede descargarse aquí. Trabajaremos con datos idénticos a los de la primera convocatoria, pero en cierto modo a la inversa.OCTUBRE
TEMA 0 - Introducción
TEMA 1 - Elementos básicos del lenguaje
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.
public static double pi() { double pi = 0.0; for (int i = -1; i <= 100_000_000; ) pi += 2.0/(i+=2)/(i+=2); return pi*4; }
Los programas que se utilizan para calcular PI con un número de decimales extremadamente alto utilizan series evolucionadas a partir de la sorprendente fórmula descubierta por Ramanujan en 1910 y demostrada no hace mucho tiempo:
Su convergencia es exponencial y ya el primer término aporta 6 decimales. Puede ser un buen ejercicio utilizar esta fórmula para el cálculo de PI, aunque enseguida se verá que es "demasiado buena" para lo que podemos hacer con variables primitivas (e incluso con otros recursos que nos aporta Java).
Algunos consejos usando este ejercicio... (video)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
DICIEMBRE
TEMA 2 - Elementos relacionados con la Orientación a Objetos
TEMA 3 - Mecanismo de control de Excepciones y Errores
rows
y columns
llamando a super(.,.)
desde el constructor de DenseMatrix
, y por tanto
faltaba también escribir el constructor Matrix(.,.)
. Como quiera que en la suma y en la conversion a String
haciamos los ciclos for
hasta getRows()
y getColumns()
, al estar las correspondientes
variables a cero, no se hacía nada.
TEMA 4 - Biblioteca de Clases
Para seguir desarrollando nuestro ejemplo "con fundamento" necesitamos adentrarnos en las bibliotecas de Java
(con fundamento, pero sin olvidar que es sólo un ejemplo de desarrollo. No pretende ser eficaz en ningún sentido)
java.lang
y java.util
) -Imagen resumen-
Object
, ha de tenerse en cuenta... siempre forma parte de nuestra herencia (ejemplo++)System
, es la máquina sobre la que se ejecuta el programa... java.lang
, son básicas e interesantes.java.util
, no son "imprescindibles", pero a poco que hagamos las necesitaremos.(ejemplo++)for
"iterativo" -es un patrón-)java.IO
en nuestro caso) -Imagenes resumen: 1, 2, 3-
File
, RandomAccessFile
java.nio
aporta más material de IO (buffers, canales, etc)TEMA 5 - Capas de aplicación y Bases de Datos
Ejercicio prácticocreate 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));
En ocasiones alguna pregunta nada habitual puede ser de interés general....