Biblioteca “Instalar” la aplicación

Anuncio
Biblioteca
Implementación en 3 niveles de 2 CU:
Reservar Libro
Tomar en Préstamo Copia de Libro
“Instalar” la aplicación
• Obtener este fichero:
http://siul02.si.ehu.es/~alfredo/Biblio3Niv.zip
• Descomprimirlo en D\
– Los ficheros aparecerán en D:\ISO\
• Ejecutar JDEVELOPER 9.i (jdevw)
• Abrir el “workspace” D:\ISO\biblioteca.jws
• Crear la fuente de datos ODBC
– Nombre: BDBiblioteca
– Escoger la BD: D:\ISO\biblioteca\BDBiblioteca.mdb
1
Arquitectura lógica en 3 niveles
Ejecutar los 3 niveles en una sola
máquina
1
2
Run Configuracion.java
2
Ejecutar los casos de uso
3
Hay 25 socios, 10 libros y 3 copias por libro.
Comprobadlo en la BD BDBiblioteca.mdb
CU: Tomar Préstamo Copia
Libro
Tomar Préstamo
Copia Libro
<<extends>>
Reservar Libro
- No disponible
Socio
Flujo de eventos:
• El socio proporciona su número de socio y la
signatura del libro que quiere tomar en préstamo
• El sistema comprueba si existe alguna copia no
prestada de dicho libro
• Si no hay copias disponibles:
EXTENDS RESERVAR LIBRO
• Se comprueba que el socio no se pasa de su número
máximo de libros en préstamo
• Se registra el nuevo préstamo con la fecha actual
3
CU: Tomar en Préstamo Copia de Libro
IU-TPCL
GestorPrest
GestorLibro
GestorBD
1: Introducir Signatura y numSocio()
Socio
2: Aceptar ()
3: obtenerCopiaLibre(signatura:String)
4: execSQL (c1:String )
GestorSocios
C1:
SELECT NumCopia
FROMCopiaLibroasC
WHERE Estado ="Disponible "
AND Signatura =%signatura
5: new()
ResultadoSQL
6: next()
7: [Resultadono vacío]: get("NumCopia ")
8: destroy()
9: [hay copias libres]: isLímitePr éstamo (numSocio:int)
10: execSQL(c2:String)
Realización
diseño – CU
Tomar en
Préstamo Copia
Libro (usando
SGBD)
C2:
SELECT * FROM SOCIO
WHERE NumSocio=%numSocio
AND maxlibros >
(SELECTcount(*)
FROMCOPIA_LIBRO
WHERE NumSocio=%numSocio)
11: new ()
ResultadoSQL
12: next()
14: [L ímite no alcanzado]: registrarPrestamo (numSocio:String, signatura:String, numCopia:String, HOY:Date)
13: destroy ()
15: execSQL(C3:String)
14b: [L ímite alcanzado]: new()
IUError
15: aceptar ()
9b: [no hay copias libres]: new(signatura:String, numSocio:int)
IUReserva
10b: reservar: ()
11b: execSQL(C4:String)
C3:
UPDATECOPIA_LIBRO
SET NumSocio=%numSocio ,
FechaPrest=HOY,
Estado="Prestada"
WHERE NumCopia=%numCopia
AND Signatura=%signatura
C4:
INSERT INTO
RESERVA( Signatura, NumSocio)
VALUES (%signatura,%numSocio)
CU: Reservar Libro
Tomar Préstamo
Copia Libro
<<extends>>
Reservar Libro
- No disponible
Socio
Flujo de eventos:
• El socio proporciona su número de socio y la
signatura del libro que quiere reservar
• El sistema comprueba que el libro NO está
disponible
• El sistema almacena que el socio desea reservar
dicho libro
Flujo de eventos alternativo:
• Si el libro está disponible entonces no se reserva
4
Realización-CU diseño “Reservar Libro” (SGBD)
CU: Reservar Libro
IU-TPCL
GestorPrest
GestorLibro
GestorBD
1: Introducir Signatura y numSocio()
Socio
2: Aceptar()
3: obtenerCopiaLibre(signatura:String)
4: execSQL(c1:String)
GestorSocios
C1:
SELECT NumCopia
FROM CopiaLibro as C
WHERE Estado="Disponible"
AND Signatura=%signatura
5: new()
ResultadoSQL
6: next()
7 [Resultado no vacío]: get("NumCopia")
8: destroy()
9: [no hay copia libre]: registrarReserva(signatura:String, numSocio:String)
C2:
INSERT INTO Reserva
VALUES (%Signatura,%numSocio)
10: execSQL(C2:String)
9: [hay copia libre]: new()
IUError
10: aceptar()
Arquitectura física en 2 niveles:
cliente gordo/servidor flaco
5
Arquitectura física en 2 niveles:
cliente gordo/servidor flaco
• La BD se pondrá en este ordenador:
– sipiXX
• Encontrar dicha máquina
– Hacer click en el botón de la derecha
– Hacer “conectar a unidad de red” y asignar un
nombre de unidad
• Redefinir la fuente de datos ODBC
– Seleccionar el fichero biblioteca.mdb
Arquitectura física en 3 niveles
$XUNH]SHQ0 DLO
D
1HJR]LRDUHQ
/RJLND0 DLOD
- $ 9 $ - ' %&
-$9$ 5 0 ,
' D WXHQ0 DLO
D
-$9$ 5 0 ,
-$9$ - ' %&
$XUNH]SHQ0 DLOD
1HJR]LRDUHQ
/RJLND0 DLOD
6
Ejecutar la lógica del negocio de
otra máquina
1:
Poner
nombre
IP
2
7
Descargar