La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

1 Ingeniería del Software Ejercicios de Implementación  Caso de Uso Total Gasto (Junio 2003)  Caso de Uso Mejor Usuario (Septiembre 2003)  Caso de Uso.

Presentaciones similares


Presentación del tema: "1 Ingeniería del Software Ejercicios de Implementación  Caso de Uso Total Gasto (Junio 2003)  Caso de Uso Mejor Usuario (Septiembre 2003)  Caso de Uso."— Transcripción de la presentación:

1 1 Ingeniería del Software Ejercicios de Implementación  Caso de Uso Total Gasto (Junio 2003)  Caso de Uso Mejor Usuario (Septiembre 2003)  Caso de Uso Grado de Ocupación (Junio 2004)  Caso de Uso Registrar (Septiembre 2004)  Caso de Uso Entradas Vendidas (Junio 2005)  Se pide:  Diagrama de clases con su separación física  Completar código  Explicar instrucciones

2 2 Ingeniería del Software Ejercicios de Implementación  Caso de Uso Total Gasto (Junio 2003)  Se pide:  Diagrama de clases con su separación física  Completar código  Explicar instrucciones

3 3 Ingeniería del Software

4 4 interface GestorVentasInterfaz + int calcular (String usuario) interface java.rmi.remote -- interfaz remota implementa extends class GestorVentas + int calcular (String usuario)... + main (){...//Naming.rebind } class java.rmi.server.UnicastRemoteObject -- clase remota extends class IU_TGU // Naming.lookup -- gv: GestorVentasInterfaz usa SERVIDOR DE DATOS Capa de Datos BD Capa de Presentación Capa de Lógica de Negocio SERVIDOR CLIENTE

5 5 Ingeniería del Software void jButton1_actionPerformed(ActionEvent e) { try { int total = gv.calcular(jTextField1.getText()); jTextField2.setText(new Integer(total).toString ()) } catch (Exception ex) {System.out.println("Error:"+ex.toString());} }

6 6 Ingeniería del Software public static void main(String[] args){ IU_TGU frame = new IU_TGU(); frame.setVisible(true); try { System.setSecurityManager(new RMISecurityManager()); gv =(GestorVentasInterfaz)Naming.lookup("rmi:// localhost:1099/GestionDeVentas"); } catch (Exception ex) {System.out.println("Error:"+ex.toString());} }

7 7 Ingeniería del Software public class GestorVentas extends UnicastRemoteObject implements GestorVentasInterfaz { Statement s; Connection c; …

8 8 Ingeniería del Software public int calcular(String nombre) throws RemoteException { try { int total=0; s=c.createStatement(); ResultSet r=s.executeQuery("select totalprice from orders where username='"+nombre+"'"); while(r.next()){ total=total+r.getInt("totalprice"); } return total; } catch(SQLException e){ System.out.println("Error:"+e.toString()); return -1; }

9 9 Ingeniería del Software 1.El cliente localiza el objeto remoto GestorVentas mediante el método lookup de la clase Naming. Para ello utiliza el nombre con el que ha identificado el objeto en el registro de nombres rmi: GestionDeVentas del servidor sipsi.ehu.es que atiende peticiones por el puerto 1099. 2.El servidor utiliza el método forName de la clase Class para cargar el driver que actuará de puente entre las llamadas JDBC y el driver ODBC que accede a una BD. 3.El método setConnection nos crea una conexión con la base de datos BDPetShop alojada en el servidor sipsi.ehu.es 4.El servidor utiliza el método rebind de la clase Naming para registrar un objeto servidor en el registro de nombres rmi. Se nombra como GestionDeVentas a un objeto GestorVentas que esta situado en el servidor sipsi.ehu.es, siendo el puerto de escucha de peticiones el 1099.

10 10 Ingeniería del Software Ejercicios de Implementación  Caso de Uso Mejor Usuario (Septiembre 2003)  Se pide:  Diagrama de clases con su separación física  Implementar método

11 11 Ingeniería del Software

12 12 interface InterfazGestorUsuario + String buscarUsuarioConMasGasto() interface java.rmi.remote -- Interfaz remota implementa extends class GestorUsuario + String buscarUsuarioConMasGasto() {...}... + main (){...//Naming.rebind } class java.rmi.server.UnicastRemoteObject -- clase remota extends class IU_PremiarUsuario // Naming.lookup -- g: InterfazGestorUsuario usa DB Capa de Presentación Capa de Negocio Capa de Datos

13 13 Ingeniería del Software public String buscarUsuarioConMasGasto () throws RemoteException { try { int max=0; int totalgasto; s=c.createStatement(); ResultSet r = s.executeQuery ("select totalgastomes from Usuarios”); while(r.next()){ totalgasto = r.getInt("totalgastomes"); if (totalgasto>max) { usuario = r.getString(“nombre”); max = totalgasto } return usuario }

14 14 Ingeniería del Software Examen Junio 2003-2004  2o Parcial: Implementación: Grado Ocupación  Se pide:  El diagrama de clases y la separación física  Implementar en Java el método GradoOcupación de la clase Película  Responder a las preguntas

15 15 Ingeniería del Software

16 16 interface InterfazPelicula + int gradoOcupacion(String ciclo) interface java.rmi.remote implements class Pelicula + int gradoOcupacion(String ciclo) {...}... + main (){... Naming.rebind } class java.rmi.server.UnicastRemoteObject extends class IU_GO + main () {... Naming.lookup } p: InterfazPelicula usa CLIENTE SERVIDOR SERVIDOR DE DATOS BD Capa de Presentación Capa de Lógica de Negocio Capa de Datos extends

17 17 public int gradoOcupacion (String ciclo, String fechaA) throws RemoteException { String SQL = "select vendidas, butacas from Pase inner join Pelicula inner join Sala where ciclo = ‘”+ciclo+”' and fecha > ‘”+fechaA+”‘ "; int totalEntradasVendidas= 0; int totalButacas= 0; try { Statement s = c.createStatement(); // connection c anteriormente definida ResultSet r = s.executeQuery(SQL); while (r.next()){ totalEntradasVendidas = totalEntradasVendidas + r.getInt(“vendidas"); totalButacas = totalButacas + r.getInt(“butacas"); } go = (totalEntradasVendidas/totalButacas)*100; } catch (Exception ex) { go = -1; } return go; }

18 18 1.¿En el método de qué clase se carga el puente JDBC-ODBC? En el constructor de la clase Pelicula. 1.¿Cómo es la instrucción que establece la conexión con la base de datos? Connection c = DriverManager.getConnection(“jdbc.odbc.BD”); 1.¿Qué instrucciones registran el servicio remoto y en el método de qué clase se encuentran? Pelicula p = new Pelicula(); Naming.rebind(“”//localhost:1099/Pelicula”, p); En el método main de la clase Pelicula. 1.¿Cuál es la instrucción que busca el objeto remoto y en qué método de qué clase se encuentra? p = (Pelicula)Naming.lookup("rmi://super.zinemaldia.es:1099/Pelicula"); En el método main de la clase IU_GO.


Descargar ppt "1 Ingeniería del Software Ejercicios de Implementación  Caso de Uso Total Gasto (Junio 2003)  Caso de Uso Mejor Usuario (Septiembre 2003)  Caso de Uso."

Presentaciones similares


Anuncios Google