Documentos de Académico
Documentos de Profesional
Documentos de Cultura
WEB:
ACADEMICO:
ANO
PROFESOR:
EMAIL:
MODULO:
CICLO FORMATIVO:
DEPARTAMENTO:
CURSO:
PROGRAMACION
CFGS: DESARROLLO DE APLICACIONES WEB
INFORMATICA
o
1
CENTRO:
PROGRAMACION
TEMA 9. BASES DE DATOS ORIENTADAS A OBJETOS
por Francisco Aldarias Raya
es licencia bajo
http://creativecommons.org/licenses/by-nc-sa/3.0/es/
License.
Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 Espana
Creado a partir de la obra en http://www.ceedcv.es
Bajo las condiciones siguientes:
1. 2011-2012
Version
2. 2013-2014
Version
3. 2014-2015
Version
Changeset: 34:3452f54ec3cb
30 de marzo de 2015
Ultima actualizacion
FRANCISCO ALDARIAS RAYA
paco.aldarias@ceedcv.es
Departamento de Informatica.
a Distancia de la Comunidad Valenciana. (CEED)
Centro Especfico de Educacion
http://www.ceedcv.es
En Valencia (Espana).
Documento realizado con software libre: linux debian, LATEX.
9.2
PROGRAMACION
2014/2015.
INDICE
Indice
1. BASES DE DATOS ORIENTADAS A OBJETOS
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1. Definicion
1.3. Caractersticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SGBDR y SGBDOO . . . . . . . . . . . . . . . . . . .
1.4. Comparacion
DEL SGBDOO
2. INSTALACION
2.1. La BD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. Import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3. Netbeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4. Practica
1. Instalar db40 en Netbeans . . . . . . . . . . . . . . . . .
3. EL API
3.1. Caractersticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. Metodos
Basicos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4. OPERACIONES BASICAS
4.4. Borrar la bd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
10
10
11
11
4.10.Practica
3. Grabar el mismo objeto . . . . . . . . . . . . . . . . . . .
12
4.11.Ejercicio2b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
5. TIPOS DE CONSULTAS
14
5.1. QBE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6. SODA
15
15
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.1. Descripcion
15
6.2. Metodos
SODA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
PROGRAMACION
2014/2015.
9.3
INDICE
15
16
16
17
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
7.5. Consulta 5. Or . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
19
19
7.8. Ejercicio3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
8. OBJETOS ESTRUCTURADOS
22
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.1. Definicion
22
8.2. Ejemplo4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
26
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.1. Definicion
26
9.2. Ejemplo5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
29
10.1.Ejemplo6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
10.2.Clase profesor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
10.3.Clase Main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
11. ORIENTACION
34
11.1.Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
11.2.Codigo
Fuente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
11.3.Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
11.4.Datos bibliograficos
. . . . . . . . . . . . . . . . . . . . . . . . . . .
34
11.5.Recursos en Internet . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
35
12.1.Ejercicio1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
12.2.Ejercicio2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
12.3.Ejercicio3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
12.4.Ejercicio4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
12.5.Ejercicio5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
9.4
PROGRAMACION
2014/2015.
1.
1.1.
Definicion
1.2.
BDOO Comerciales
db4o. BDOO Open Source soporte para Java, .NET.
Objetivity. BDOO soporte para Java, C++, python es de pago.
Intersystems Cache. BDOO soporte para Java, C++, .NET es de pago.
EyeDB. BDOO soporte para Java, C++. Software Libre.
1.3.
Caractersticas
1.4.
SGBDR y SGBDOO
Comparacion
Sistema de Gestion
de bases de datos orientadas a objetos (SGBDOO).
FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.
PROGRAMACION
2014/2015.
9.5
DEL SGBDOO
INSTALACION
Diferencias
Modelo Orientado a
Objetos
Modelo Relacional
Objeto
Entidad
Clases de objetos
Tipos de Entidades
Jerarqua de Clases
El esquema de base
de datos.
Instancia de Clase
Atributo
Relacion
Mensaje
Encapsulacion
Identificador de Objeto (OID)
Herencia
Relacion
No hay
No hay
Diferencias
El objeto especifica el comportamiento.
Las clases de objetos incluyen
un comportamiento comun
de
los objetos de esa clase.
La jerarqua de clases incluye
herencia, mientras que el esquema incluye clases externas.
La instancia de clase puede ser
restrictivo.
mas
No hay diferencias.
No hay diferencias.
Clave Primaria
No hay
DEL SGBDOO
INSTALACION
2.
2.1.
La BD
Se utilizara db4o
Se puede obtener de las web:
http://www.db4o.com.
los ejemplo (mirar anexo), hay una carpeta
Nota: En el cvs donde estan
llamada libreras que contiene un fichero .jar. Instalar la librera con
nombre Db4o.
Seleccionaremos db40 for Java y esto permitira descargar el fichero:
db4o-x.x-java.zip
Para usar db4o se necesita el la librera que se encuentra en la carpeta
lib de fichero zip, llamado:
db4o-x-core-java5.jar
2.2.
Import
9.6
PROGRAMACION
2014/2015.
DEL SGBDOO
INSTALACION
2.3.
Netbeans
Debemos anadir
el fichero db4o-x-core-java5.jar a la Biblioteca.
ir a Agregar
Ir al menu Herramientas - Bibliotecas. Nueva Biblioteca. Y despues
archivo jar, seleccionando el fichero db4o-x-core-java5.jar
Figura 1: Anadir
Bibliotecas
2.4.
Practica
1. Instalar db40 en Netbeans
Descargar la base de datos db4. Hay una carpeta llamada libreras que
contiene un fichero .jar. Instalar la librera con nombre Db4o.
FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.
PROGRAMACION
2014/2015.
9.7
OPERACIONES BASICAS
Anadir
la Biblioteca db40. Ver figura 2 de la pagina
7.
Probar que funciona el Ejemplo2 de las fuentes prgcod11.
3.
EL API
del API viene en la carpeta /doc/api del fichero zip.
Las documentacion
En ella se describe el interface:
com.odb40.ObjectContainer
3.1.
Caractersticas
El contenedor repesenta una BD en modo monousuario o un cliente de
la BD db4o.
Dispone de metodos
para almacenar, consultar y borrar objetos,
de poder realizar transacciones.
ademas
por ello cuando se
Cada objectContainer representa una transaccion,
Metodos
Basicos
3.2.
Metodos
Basicos
BDOO con db4o
import com.db4o.*;
Java
ObjectContainer bd = DB4oEmbebed.openFile (DB4oEmbebed.
newConfiguration(), alumnos.dbo );
bd.store(miobjeto)
ObjectSet res= bd.QueryByExample(miobjeto)
res.size()
res.HasNext()
res.next()
bd.delete(miobjeto)
bd.close()
Descripcion.
Abre la BD que corresponde con
el fichero alumnos.dbo y sino
existe lo crea
guarda miobjeto en la bd
Buscar objetos como miobjeto.
Devuelve cuantos objetos contiene res.
OPERACIONES BASICAS
4.
4.1.
Ejemplo2. alumno.java
9.8
PROGRAMACION
2014/2015.
OPERACIONES BASICAS
package alumno ;
public class alumno {
private String nombre ;
private int edad ;
private double nota ;
alumno ( String nom , int e , double n ) {
nombre = nom ;
edad = e ;
nota = n ;
}
public void setNombre ( String n ){
nombre = n ;
}
@Override
public String toString () {
return this . nombre + " " + this . edad + " " + this . nota ;
}
4.2.
Esquema de trabajo
// accessDb4o
O bj ec tC o nt ai ne r db = Db4oEmbedded . openFile ( Db4oEmbedded
. n e w C o n f i g u r a t i o n () , DB4OFILENAME );
try {
// do something with db4o
} finally {
db . close ();
}
4.3.
Abrir y cerrar la bd
O bj ec tC o nt ai ne r bd ;
String nombrefichero = " alumnos . db4o ";
bd = Db4oEmbedded . openFile ( Db4oEmbedded . n e w C o n f i g u r a t i o n () ,
nombrefichero );
bd . close ();
4.4.
Borrar la bd
PROGRAMACION
2014/2015.
9.9
4.5.
OPERACIONES BASICAS
store().
Se utiliza la funcion
alumno a1 = new alumno (" Juan " , 15 , 12.5);
bd . store ( a1 );
4.6.
4.7.
Modificar objetos
9.10
PROGRAMACION
2014/2015.
OPERACIONES BASICAS
4.8.
Borrar objetos
delete().
Usaremos la funcion
System . out . println (" Borrando Juan ");
alumno a6 = new alumno (" Juan " , 0 , 0);
ObjectSet res = bd . queryByE xample ( a6 );
a7 = ( alumno ) res . next ();
bd . delete ( a7 );
4.9.
Ejemplo2. Main.java
PROGRAMACION
2014/2015.
9.11
OPERACIONES BASICAS
4.10.
Practica
3. Grabar el mismo objeto
Con el ejemplo2
1.- Que ocurre cuando no se borra la base de datos?
2.- Que ocurre si guardamos dos veces el mismo objeto en la BD?
3.- Si queremos modificar un objeto en la BD que debemos hacer antes?.
4.- El ejemplo2, cumple la propiedad de modularidad de un programa?.
4.11.
Ejercicio2b
../prgcodigo/prgcod11/ejercicio2b/src/alumno1/Main.java
package alumno1 ;
import
import
import
import
import
/**
* Version con funciones
* @author pacoaldarias < paco . al da r ia s@ ce e dc v . es >
*/
public class Main {
9.12
PROGRAMACION
2014/2015.
OPERACIONES BASICAS
PROGRAMACION
2014/2015.
9.13
TIPOS DE CONSULTAS
5.
TIPOS DE CONSULTAS
Existen tres tipos de consultas en db4o:
9.14
PROGRAMACION
2014/2015.
dinamicamente,
que solo
5.1.
QBE
6.
SODA
6.1.
Descripcion
Para crear una consulta se necesita un objeto de tipo Query, que se crea con
query() del objeto del tipo ObjectContainer llamado bd.
la funcion
6.2.
Metodos
SODA
Metodos
de SODA con db4o
import com.db4o.query.Constraint; import com.db4o.query.Query;
Java
Descripcion.
Query query = bd.query();
Inicializa la consulta SODA.
de clase
Constrain constrain = query.constrain(Miclase.class);
Anade
restriccion
con nombre
Anade
restriccion
constrain = query.descend(nombre).constrain(mitexto);
igual a mitexto
ObjectSet res = query.execute();
7.
Ejecuta la consulta
PROGRAMACION
2014/2015.
9.15
7.1.
Consulta 1. Todos
Funcion:
public static void consulta1 ( Ob je ct C on ta in e r bd )
throws D a t a b a s e C l o s e d E x c e p t i o n {
Ejecucion:
* Consulta 1 SODA : Alumnos
Objetos alumno recuperados : 3
Nombre : Juan Edad : 15 Nota : 4.5
Nombre : Vicente Edad : 50 Nota : 8.1
Nombre : Paco Edad : 25 Nota : 10.0
Lo que se va a construir es una consulta con una serie de nodos los cuales lo
que permite es quedarse con candidatos que cumplan la constrain. Los objetos de
tipo Query son punteros a a un nodo en SODA.
7.2.
Ejemplo que muestra todos los objetos de la clase alumno y con atributo
nombre igual a Juan.
Constrain:
constrain = query.constrain(alumno.class);
constrain = query.descend("nombre").constrain("Juan");
Funcion:
public static void consulta2 ( Ob je ct C on ta i ne r bd )
throws D a t a b a s e C l o s e d E x c e p t i o n {
System . out . println ("* Consulta 2 Soda : Alumno Juan ");
Query query = bd . query ();
Constraint constrain = query . constrain ( alumno . class );
constrain = query . descend (" nombre "). constrain (" Juan ");
9.16
PROGRAMACION
2014/2015.
Ejecucion:
* Consulta 2 Soda : Alumno Juan
Objetos alumno recuperados : 1
Nombre : Juan Edad : 15 Nota : 4.5
7.3.
Consulta 3. Not
Ejemplo que muestra todos los objetos de la clase alumno y con atributo edad
no sea 50
Constrain:
constrain = query.constrain(alumno.class);
constrain = query.descend("edad").constrain(50).not();
Funcion:
public static void consulta3 ( Ob je ct C on ta i ne r bd )
throws D a t a b a s e C l o s e d E x c e p t i o n {
System . out . println ("* Consulta 3 Soda : Alumno edad no sea 50 ");
Query query = bd . query ();
Constraint constrain = query . constrain ( alumno . class );
constrain = query . descend (" edad "). constrain (50). not ();
ObjectSet res = query . execute ();
System . out . println (" Objetos alumno recuperados : "+ res . size ());
while ( res . hasNext ()) {
System . out . println ( res . next ()); // toString
}
}
Ejecucion:
* Consulta 3 Soda : Alumno edad no sea 50
Objetos alumno recuperados : 2
Nombre : Juan Edad : 15 Nota : 4.5
Nombre : Paco Edad : 25 Nota : 10.0
7.4.
Consulta 4. And
Ejemplo que muestra todos los objetos de la clase alumno con edad menor que
30 y mayor que 10.
Constrain:
PROGRAMACION
2014/2015.
9.17
constrain = query.constrain(alumno.class);
constrain = query.descend("edad").constrain(30).smaller();
constrain = query.descend("edad").constrain(10).greater().and(constrain);
Funcion:
public static void consulta4 ( Ob je c tC on ta i ne r bd )
throws D a t a b a s e C l o s e d E x c e p t i o n {
System . out . println ("* Consulta 4 Soda : Alumno con edad menor que 30 "
+ " y mayor 10 ");
Query query = bd . query ();
Constraint constrain = query . constrain ( alumno . class );
constrain = query . descend (" edad "). constrain (30). smaller ();
constrain = query . descend (" edad "). constrain (10). greater ().
and ( constrain );
ObjectSet res = query . execute ();
System . out . println (" Objetos alumno recuperados : "+ res . size ());
while ( res . hasNext ()) {
System . out . println ( res . next ()); // toString
}
}
Ejecucion:
* Consulta 4 Soda : Alumno con edad menor que 30 y mayor 10
Objetos alumno recuperados : 2
Nombre : Juan Edad : 15 Nota : 4.5
Nombre : Paco Edad : 25 Nota : 10.0
7.5.
Consulta 5. Or
Ejemplo que muestra todos los objetos de la clase alumno con edad menor que
40 o mayor que 9.
Constrain:
Constraint constrain = query.constrain(alumno.class);
constrain = query.descend("edad").constrain(40).smaller();
constrain = query.descend("nota").constrain(9).greater().
or(constrain);
Funcion:
public static void consulta5 ( Ob je c tC on ta i ne r bd )
throws D a t a b a s e C l o s e d E x c e p t i o n {
System . out . println ("* Consulta 5 Soda : Alumno con edad menor 40"
+ " o nota mayor que 9 ");
Query query = bd . query ();
Constraint constrain = query . constrain ( alumno . class );
constrain = query . descend (" edad "). constrain (40). smaller ();
constrain = query . descend (" nota "). constrain (9). greater ().
or ( constrain );
ObjectSet res = query . execute ();
m o s t r a r R e s u l t a d o s ( res );
}
9.18
PROGRAMACION
2014/2015.
Ejecucion:
* Consulta 5 Soda : Alumno con edad mayor 20 o nota mayor que 5
Objetos alumno recuperados : 2
Nombre : Juan Edad : 15 Nota : 4.5
Nombre : Paco Edad : 25 Nota : 10.0
7.6.
Consulta 6. Ordenados
Funcion:
public static void consulta6 ( Ob je ct C on ta i ne r bd )
throws D a t a b a s e C l o s e d E x c e p t i o n {
System . out . println ("* Consulta 6 Soda : Ordenar por edad ");
Query query = bd . query ();
query . constrain ( alumno . class );
query . descend (" edad "). or derAscen ding ();
ObjectSet res = query . execute ();
m o s t r a r R e s u l t a d o s ( res );
}
Ejecucion:
* Consulta 6 Soda : Ordenar por edad
Objetos alumno recuperados : 3
Nombre : Juan Edad : 15 Nota : 4.5
Nombre : Paco Edad : 25 Nota : 10.0
Nombre : Vicente Edad : 50 Nota : 8.1
7.7.
Ejemplo3: Main.java
../prgcodigo/prgcod11/ejemplo3/src/alumno/Main.java
package alumno ;
import com . db4o .*;
import com . db4o . ext . D a t a b a s e C l o s e d E x c e p t i o n ;
import com . db4o . ext . D b4 oI O Ex ce pt i on ;
import com . db4o . query . Constraint ;
import com . db4o . query . Query ;
import java . io . File ;
import java . io . IOException ;
public class Main {
public static void borrarBD ( String nombrefichero )
throws IOException
{
System . out . println ("* Borrando BD "+ nombrefichero );
File f = new File ( nombrefichero );
f . delete ();
FRANCISCO ALDARIAS RAYA. CFGS: DESARROLLO DE APLICACIONES WEB.
PROGRAMACION
2014/2015.
9.19
9.20
PROGRAMACION
2014/2015.
constrain = query . descend (" edad "). constrain (10). greater ().
and ( constrain );
ObjectSet res = query . execute ();
m o s t r a r R e s u l t a d o s ( res );
}
public static void consulta5 ( Ob je c tC on ta i ne r bd )
throws D a t a b a s e C l o s e d E x c e p t i o n {
System . out . println ("* Consulta 5 Soda : Alumno con edad menor 40"
+ " o nota mayor que 9 ");
Query query = bd . query ();
Constraint constrain = query . constrain ( alumno . class );
constrain = query . descend (" edad "). constrain (40). smaller ();
constrain = query . descend (" nota "). constrain (9). greater ()
. or ( constrain );
ObjectSet res = query . execute ();
m o s t r a r R e s u l t a d o s ( res );
}
public static void consulta6 ( Ob je c tC on ta i ne r bd )
throws D a t a b a s e C l o s e d E x c e p t i o n {
System . out . println ("* Consulta 6 Soda : Ordenar por edad ");
Query query = bd . query ();
Constraint constrain = query . constrain ( alumno . class );
Query ord erAscen ding = query . descend (" edad "). ord erAscend ing ();
ObjectSet res = query . execute ();
m o s t r a r R e s u l t a d o s ( res );
}
public static void m o s tr a r R e s u l t a d o s ( ObjectSet res ) {
System . out . println (" Objetos alumno recuperados : "+ res . size ());
while ( res . hasNext ()) {
System . out . println ( res . next ()); // toString
}
}
public static void main ( String args []) throws IOException {
O bj ec tC o nt ai ne r bd ;
String nombrefichero = " alumnossoda . db4o ";
borrarBD ( nombrefichero );
bd = crearBD ( nombrefichero );
almacena ( bd );
consulta1 ( bd );
consulta2 ( bd );
consulta3 ( bd );
consulta4 ( bd );
consulta5 ( bd );
consulta6 ( bd );
cerrarBD ( bd );
}
}
7.8.
Ejercicio3
pequena
de
Hacer una consulta que muestre los alumnos que su nota se mas
grande que 9. Anadir
consulta, al ejercicio
40 y no sea mas
una nueva funcion
anterior.
PROGRAMACION
2014/2015.
9.21
8.
OBJETOS ESTRUCTURADOS
OBJETOS ESTRUCTURADOS
8.1.
Definicion
Llamamos objeto estructurado cuando una clase contiene otros objetos que
son clases.
8.2.
Ejemplo4
9.22
PROGRAMACION
2014/2015.
OBJETOS ESTRUCTURADOS
8.2.1.
Clase proyecto
../prgcodigo/prgcod11/ejemplo4/src/ejemplo4/proyecto.java
package ejemplo4 ;
public class proyecto {
private String descripcion ;
private alumno al ;
public proyecto ( String string ) {
this . descripcion = string ;
this . al = null ;
}
public void setAlumno ( alumno a1 ) {
this . al = a1 ;
}
@Override
public String toString (){
return " Proyecto :" + descripcion + " "+ al ;
}
}
8.2.2.
Clase alumno
PROGRAMACION
2014/2015.
9.23
OBJETOS ESTRUCTURADOS
}
String getNombre () {
return nombre ;
}
}
8.2.3.
Clase Main.java
9.24
PROGRAMACION
2014/2015.
OBJETOS ESTRUCTURADOS
f . delete ();
}
PROGRAMACION
2014/2015.
9.25
almacena ( bd );
consultaSoda ( bd );
consultaQBE ( bd );
cerrarBD ( bd );
borrarBD ( nombrefichero );
}
}
Ejecucion:
* Creando BD proyecto . db4o
* Grabando Proyectos :
Proyecto : Web Alumnos Nombre : Paco Edad :23 Nota :8.75 Almacenado
Proyecto : Web Profesores Nombre : Juan Edad :10 Nota :5.5 Almacenado
* Consulta SODA : Proyectos Web Profesores
Objetos alumno recuperados : 1
Proyecto : Web Profesores Nombre : Juan Edad :10 Nota :5.5
* Consulta QBE : Alumnos
Objetos alumno recuperados : 2
Nombre : Paco Edad :23 Nota :8.75
Nombre : Juan Edad :10 Nota :5.5
* Borrando BD proyecto . db4o
9.
9.1.
Definicion
Si por
El borrado de objetos estructurados es similar que cuando no lo estan.
ejemplo borramos un proyecto, el alumno asociado al proyecto seguira existiendo.
de hacer un borrado en cascada, que permitira que al borrar un
Cabe la opcion
proyecto se borre el alumno asociado.
9.2.
Ejemplo5
9.26
PROGRAMACION
2014/2015.
import
import
import
import
import
import
import
PROGRAMACION
2014/2015.
9.27
9.28
PROGRAMACION
2014/2015.
10
VECTOR DE OBJETOS
10.
VECTOR DE OBJETOS
10.1.
Ejemplo6
PROGRAMACION
2014/2015.
9.29
10.2.
10
VECTOR DE OBJETOS
Clase profesor
../prgcodigo/prgcod11/ejemplo6/src/ejemplo6/profesor.java
package ejemplo6 ;
public class profesor {
private proyectos listapr oyectos [];
private String nombre ;
profesor ( proyectos [] l , String n ){
this . nombre = n ;
this . lis taproye ctos = l ;
}
@Override
public String toString (){
String str = new String ();
for ( proyectos l : listap royectos ){
str = str +"\ n "+ l . toString ();
}
return " - Nombre Profesor :"+ nombre + str ;
}
}
10.3.
Clase Main
de la consulta sera:
La ejecucion
9.30
PROGRAMACION
2014/2015.
10
VECTOR DE OBJETOS
* Profesores :
Objetos recuperados : 2
- Nombre Profesor : Pablo
- Nombre Proyecto : Drupal
- Nombre Alumno : Paco Edad :23 Nota :8.75
- Nombre Proyecto : Android
- Nombre Alumno : Juan Edad :10 Nota :5.5
- Nombre Profesor : Pepe
- Nombre Proyecto : Moodle
- Nombre Alumno : Andres Edad :45 Nota :2.0
Todo el codigo
fuente sera:
../prgcodigo/prgcod11/ejemplo6/src/ejemplo6/Main.java
package ejemplo6 ;
import com . db4o .*;
import com . db4o . config . E m b e d d e d C o n f i g u r a t i o n ; // Cascade
import com . db4o . ext . D a t a b a s e C l o s e d E x c e p t i o n ;
import com . db4o . ext . D b4 oI O Ex ce pt i on ;
import com . db4o . query . Constraint ;
import com . db4o . query . Query ;
import java . io . File ;
import java . io . IOException ;
public class Main {
public static void borrarBD ( String nombrefichero )
throws IOException
{
System . out . println ("* Borrando BD "+ nombrefichero );
File f = new File ( nombrefichero );
f . delete ();
}
private static O b je ct Co n ta in er crearB DEmbebed ( String nombrefichero ) {
System . out . println ("* Creando BD con borrado en cascada "
+ nombrefichero );
E m b e d d e d C o n f i g u r a t i o n config = Db4oEmbedded . n e w C o n f i g ur a t i o n ();
config . common (). objectClass ( proyectos . class ). c as ca d eO nD e le te ( true );
return Db4oEmbedded . openFile ( config , nombrefichero );
}
public static O bj ec t Co nt ai n er crearBD ( String nombrefichero ) {
System . out . println ("* Creando BD Normal "+ nombrefichero );
return Db4oEmbedded . openFile ( Db4oEmbedded . n e w C o n fi g u r a t i o n () ,
nombrefichero );
}
public static void cerrarBD ( O b je ct Co n ta in er bd ) throws D b4 oI O Ex ce pt i on {
boolean closed = bd . close ();
}
PROGRAMACION
2014/2015.
9.31
10
VECTOR DE OBJETOS
9.32
PROGRAMACION
2014/2015.
10
VECTOR DE OBJETOS
PROGRAMACION
2014/2015.
9.33
11.
11.1.
11
ORIENTACION
ORIENTACION
Objetivos
11.2.
Codigo
Fuente
El codigo
se puede encontrar para:
Ejemplos:
git clone https://bitbucket.org/1415ceed1/1415ceed1prgt9e10.
git
Ejercicios:
git clone https://bitbucket.org/1415ceed1/1415ceed1prgt9e20.
git
11.3.
Software
11.4.
Datos bibliograficos
11.5.
Recursos en Internet
Web Oficial Db4o
http://www.db4o.com/
9.34
PROGRAMACION
2014/2015.
12
EJERCICIOS PROPUESTOS
12.
EJERCICIOS PROPUESTOS
12.1.
Ejercicio1
../prgcodigo/prgcod11/ejercicio2b/src/alumno1/Main.java
package alumno1 ;
import
import
import
import
import
/**
* Version con funciones
* @author pacoaldarias < paco . al da r ia s@ ce e dc v . es >
*/
public class Main {
public static void borrarBD ( String nombrefichero )
throws IOException
{
System . out . println ("* Borrando BD "+ nombrefichero );
File f = new File ( nombrefichero );
Borrarfichero
}
public static O bj ec t Co nt ai n er crearBD ( String nombrefichero ) {
System . out . println ("* Creando BD "+ nombrefichero );
return Db4oEmbedded . openFile ( Db4oEmbedded . n e w C o n fi g u r a t i o n () ,
nombrefichero );
}
public static void almacena ( O b je ct Co n ta in er bd ) {
System . out . println ("* Grabando Alumnos :");
alumno a1 = new alumno (" Juan " , 15 , 12.5);
Guardar a1
System . out . println ( a1 . getNombre ()+" Almacenado ");
alumno a2 = new alumno (" Vicente " , 50 , 20.1);
Guardar a2
PROGRAMACION
2014/2015.
9.35
12
EJERCICIOS PROPUESTOS
9.36
PROGRAMACION
2014/2015.
12
EJERCICIOS PROPUESTOS
}
public static void main ( String args []) throws IOException {
O bj ec tC o nt ai ne r bd = null ;
String nombrefichero = " alumnos . db4o ";
try {
borrarBD ( nombrefichero );
bd = crearBD ( nombrefichero );
almacena ( bd );
mostrartodos ( bd );
mostr arconed ad ( bd , 50);
m od if ic a rn om br e ( bd , " Vicente ");
borrarnombre ( bd , " Juan ");
} finally {
boolean closed = bd . close ();
}
}
}
12.2.
Ejercicio2
pequena
de
Hacer una consulta que muestre los alumnos que su nota se mas
grande que 9. Anadir
consulta, al ejercicio
40 y no sea mas
una nueva funcion
anterior.
12.3.
Ejercicio3
pequena
de
Hacer una consulta que muestre los alumnos que su nota se mas
grande que 9. Anadir
consulta, al ejercicio
40 y no sea mas
una nueva funcion
anterior.
12.4.
Ejercicio4
PROGRAMACION
2014/2015.
9.37
12
EJERCICIOS PROPUESTOS
../prgcodigo/prgcod11/Libro1/src/libro1/Main.java
package libro1 ;
import java . io .*;
import com . db4o .*;
import com . db4o . query .*;
public class Main {
public static void main ( String [] args ) {
new File (" alumnos . db4o "). delete ();
O bj ec tCo nt ai ne r bd =
Db4oEmbedded . openFile ( Db4oEmbedded . n e w C o n f i g u r a t i o n () ,
" alumnos . db4o ");
try {
a l m a c e n a r P r o y e c t o s ( bd );
} catch ( Exception e ) {
} finally {
bd . close ();
}
}
public static void a l m a c e n a r P r o y e c t o s ( Ob je ct C on ta in e r bd ) {
proyecto p1 = new proyecto (" Robot con m i c r o c o n t r o l a d o r e s ");
alumno a1 = new alumno (" Juan G ~
A mez " , 23 , 8.75);
p1 . setAlumno ( a1 );
bd . store ( p1 );
System . out . println ( p1 . toString () + " Almacenado ");
proyecto p2 = new proyecto (" Webmin sobre Ubuntu ");
alumno a2 = new alumno (" Emilio Anaya " , 24 , 6.25);
p2 . setAlumno ( a2 );
bd . store ( p2 );
System . out . println ( p2 . toString () + " Almacenado ");
proyecto p3 = new proyecto (" Joomla y Drupal ");
alumno a3 = new alumno (" Angeles Blanco " , 26 , 7);
p3 . setAlumno ( a3 );
bd . store ( p3 );
System . out . println ( p3 . toString () + " Almacenado ");
proyecto p4 = new proyecto (" Doctor Profiler ");
alumno a4 = new alumno (" Luis Alberto G a r c ~
A a " , 29 , 9.5);
p4 . setAlumno ( a4 );
bd . store ( p4 );
System . out . println ( p4 . toString () + " Almacenado ");
}
9.38
PROGRAMACION
2014/2015.
BIBLIOGRAFIA
12.5.
Ejercicio5
BIBLIOGRAFIA
Ra-ma, 1 edition, 2011.
[MP11] JUAN CARLOS MORENO PEREZ. Programacion.
ISBN: 978-84-9964-088-4. LIBRO ALUMNO CICLOS. PRECIO: 35 EUR.
PROGRAMACION
2014/2015.
9.39