Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Diseos Requerimientos
-------------------------
Programador (Codificacin)
Software
-------------------------
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------
-------------------------
-------------------------
-------------------------
-------------------------------------------------------------------------------------------------
Requerimiento 1
-------------
Requerimiento 2 Requerimiento 3
-------------------------
-------------
-------------
...... ......
-------------
-------------------------
Es mejor ?
-------------------------
-------------------------
Requerimiento 1 Requerimiento 2
-------------
-------------
-------------------------
De qu manera se puede simplificar el proceso de desarrollo y mantenimiento del cdigo del software ?
Componente 1
Componente 2
Componente 3
= Producto
APLICACION
Aplicacin
NIVEL 1
Supercomponentes
Componente 1
Componente i
Componente n
NIVEL 2
Subcomponente 1
Subcomponente i+1
Subcomponente j+2
Subcomponente n
Subcomponente i_simo
Subcomponente i+2
Subcomponente j+1
Subomponente k_simo
Sub..componente
8
Un diseo reutilizable de todo o parte de un sistema, el mismo que es representado por un conjunto de clases abstractas con las respectivas descripciones de las interacciones de sus instancias. El esqueleto de una aplicacin, el mismo que debe ser adaptado a la medida por el programador de la aplicacin. Encapsula el patrn de la arquitectura software de un sistema o de alguna de sus partes
F ra m e w o rk C o m p o n e n te 0 4 C o m p o n e n te X m e n s a je x ( m e n s a je v ( m e n s a je y ( ) C o m p o n e n te 0 1 m e n s a je z ( ) C o m p o n e n te 0 2 C o m p o n e n te 0 3 m e n s a je w ( )
In te r f a z
L o s e le m e n to s d e u n f r a m e w o r k s e c o m u n ic a n c o n e l e x t e r io r a tr a v s d e la in t e r f a z d e l f r a m e w o r k
E x te r io r
10
L O G IC A E S P E C IF IC A D E L A A P L IC A C IO N
BUCLE DE EVENTO S
L O G IC A E S P E C IF IC A D E L A A P L IC A C IO N
O b je to O b je to 05 O b je to 04 O b je to 02 B a s e d e d a to s O b je to 05
E s te b lo q u e , q u e e s r e u tiliz a b le , e s u n fra m e w o rk (N te s e q u e p u e d e e n c a p s u la r v a r io s e le m e n t o s )
11
Presentacin
Lgica de Negocios
Base de Datos
Ejemplos de frameworks
12
Para la Aplicacion
Sympony (Aplicac. En capas) Zend Framework (Aplicac. En capas) CakePHP Codelgniter Seagull
Presentacin
Lgica de Negocios
Base de Datos
Ejemplos de frameworks
13
BUCLE DE EVENTOS
Tpicos de Programacin
ACCESO A DATOS USANDO JDBC (un Framework personalizable)
Ing. Edwin Octavio Ramos Velsquez Universidad Nacional Jos Mara Arguedas ESCUELA PROFESIONAL DE INGENIERA DE SISTEMAS FACULTAD DE INGENIERA
15
Presentacin
Swing
Lgica de Negocios
negocio, entity
Base de Datos
Database Conexion
Firebird
16
Cada capa de la aplicacin incluye un nivel de abstraccin. Si desde capas superiores se desea accesar a capas inferiores, esto debe hacerse a travs de las capas intermedias
17
NOMBRE DE LA CAPA
PAQUETES
DETALLES
Rutinas de comprobacin Clases y/o mdulos que realizan rutinas reutilizables en la Capa de presentacin Componentes visuales de interaccin con el usuario Clases que implementan la lgica de negocio de la aplicacin (Ejm. Precio>0, Subtotal=Precio*Cantidad, etc.) Representan las tablas de la Base de Datos Relacional, pero vistas como parte de un Modelo Orientado a Objetos Clases que administran las rutinas de acceso a la Base de Datos
paquete: negocio Cliente, Ciudad, Pais, Empleado, Factura, Pedido, ItemFactura, ItemPedido, Producto, Proveedor, TipoProducto, Usuario paquete: entity Cliente, Ciudad, Pais, Empleado, Factura, Pedido, ItemFactura, ItemPedido, Producto, Proveedor, TipoProducto, Usuario paquete: database.manager daoCliente, daoCiudad, daoPais, daoEmpleado, daoFactura, daoPedido, daoItemFactura, daoItemPedido, daoProducto, daoProveedor, daoTipoProducto, daoUsuario BASE DE DATOS
LOGICA DE NEGOCIOS
negocio, entity
(Spring)
database.*
paquete: database.jdbc jdbcItem, jdbcList, jdbcDatabase, QueryCliente, QueryCiudad, QueryPais, QueryEmpleado, QueryFactura, QueryPedido, QueryItemFactura, QueryItemPedido, QueryProducto, QueryProveedor, QueryTipoProducto, QueryUsuario
(Hibernate, JDBC)
Clases que contienen las rutinas de acceso a la Base de datos (Ej. Consultas, insert, update, delete, etc) Clases que contienen las rutinas de Carga de Drivers, y de Conexin con la Base de Datos (Ej. DatabaseName, 18 UserName, Password, Port, Open, Close, etc.)
Nota: Las clases entity pueden ser accesadas desde cualquiera de las capas. Representan a los datos persistentes.
paquete: database.manager daoCliente, daoCiudad, daoPais, daoEmpleado, daoFactura, daoPedido, daoItemFactura, daoItemPedido, daoProducto, daoProveedor, daoTipoProducto, daoUsuario
paquete: database.jdbc jdbcItem, jdbcList, jdbcDatabase, QueryCliente, QueryCiudad, QueryPais, QueryEmpleado, QueryFactura, QueryPedido, QueryItemFactura, QueryItemPedido, QueryProducto, QueryProveedor, QueryTipoProducto, QueryUsuario
Clases que contienen las rutinas de acceso a la Base de datos (Ej. Consultas, insert, update, delete, etc)
Clases que contienen las rutinas de Carga de Drivers, y de Conexin con la Base de Datos (Ej. DatabaseName, UserName, Password, Port, Open, Close, etc.) Objetos Persistentes: Representan las tablas de la Base de Datos Relacional, pero vistas como parte de un Modelo Orientado a Objetos
paquete: entity Cliente, Ciudad, Pais, Empleado, Factura, Pedido, ItemFactura, ItemPedido, Producto, Proveedor, TipoProducto, Usuario
19
public class Conexion { static Connection conexion; static String bd ="D:/Proyectos 2013/Java/Practica 01 JDBC/Data/VENTASNET2011.FDB"; static String user = "SYSDBA"; static String password = "masterkey"; static String server = "jdbc:firebirdsql:localhost/3050:"; static String driver = "org.firebirdsql.jdbc.FBDriver"; static int status = 0; public boolean Open(){ boolean ok = false; try{ Class.forName(driver); conexion = DriverManager.getConnection(server + bd, user, password); status = 1; ok = !conexion.isClosed(); } catch(Exception e) { System.out.println("Imposible realizar conexion con la BD"); e.printStackTrace(); status = 0; } return ok; } public boolean Close(){ boolean ok = false; paquete: database.conexion if(conexion != null) Conexion { try { conexion.close(); status=0; ok = conexion.isClosed(); } catch(Exception e){} } 20 return ok; }
public class Conexion { // **** Otras lineas public boolean opened(){ boolean ok; if(conexion ==null){return false;} try { ok = !conexion.isClosed(); } catch(Exception e){ ok = false; } return ok; } public boolean closed(){ boolean ok; if(conexion ==null){return false;} try { ok = conexion.isClosed(); } catch(Exception e){ ok = false; } return ok; } public Connection getConexion(){ return conexion; } }
21
public class JdbcList extends JdbcBase{ private String error = ""; private QuerySQL entity; /** * Obtener la lista de registros para una entidad * @return */ public List getList(String[] OrderBy){ List result = new ArrayList(); String _OrderBy = ArrayToString(OrderBy); try { ConexionOpen(); Connection conn = Conexion(); String sql = entity.getQuerySQL(TipoJdbc.readLIST_ALL); if (_OrderBy.length()>1) {sql = sql + " ORDER BY " + _OrderBy;} PreparedStatement ps = conn.prepareStatement(sql, ResultSet.FETCH_FORWARD, ResultSet.CONCUR_READ_ONLY); try (ResultSet rs = ps.executeQuery()) { while (rs.next()) { entity.BaseEntity p = entity.getNewEntity(); entity.copyDataToEntity(rs, p, TipoJdbc.readLIST_ALL); result.add(p); } } ConexionClose(); paquete: database.jdbc } jdbcItem, jdbcList, jdbcDatabase, catch (Exception e) { QueryCliente, QueryCiudad, QueryPais, QueryEmpleado, QueryFactura, QueryPedido, System.out.println(e.getMessage()); QueryItemFactura, QueryItemPedido, } QueryProducto, QueryProveedor, return result; QueryTipoProducto, QueryUsuario }
22
public class QueryCiudad extends QuerySQL { paquete: database.jdbc public QueryCiudad(){ setEntity(new entity.Ciudad()); jdbcItem, jdbcList, jdbcDatabase, QueryCliente, QueryCiudad, QueryPais, } QueryEmpleado, QueryFactura, QueryPedido, @Override QueryItemFactura, QueryItemPedido, public BaseEntity getNewEntity(){ QueryProducto, QueryProveedor, return new entity.Ciudad(); QueryTipoProducto, QueryUsuario } @Override public String getQuerySQL(TipoJdbc opcion){ String s = ""; switch(opcion) { case readLIST_ALL : s = "SELECT C.IDCIUDAD, C.CIUDAD, C.IDPAIS, PAIS " + "FROM PAIS AS P INNER JOIN CIUDAD AS C ON (P.IDPAIS = C.IDPAIS) "; break; case readListCOUNT : s = "SELECT COUNT(*)AS ID FROM CIUDAD";break; case writeINSERT : s = "INSERT INTO CIUDAD(IDCIUDAD, CIUDAD, IDPAIS) VALUES(?, ?, ?)"; break; case writeUPDATE : s = "UPDATE CIUDAD SET CIUDAD = ?, IDPAIS = ? WHERE IDCIUDAD = ? "; break; case writeDELETE : s = "DELETE FROM CIUDAD WHERE IDCIUDAD = ?"; break; case readNewID : s = "SELECT MAX(IDCIUDAD)AS ID FROM CIUDAD"; break; } return s; } //**** Otras consultas SQL de acceso a datos }
23
public class BaseManager { protected entity.BaseEntity entidad; protected QuerySQL entidadQuery = null; protected JdbcList MyList = new JdbcList(); private String error = ""; protected String FieldID = "id"; protected String FieldNombre = "nombre"; public BaseManager(){ } public List getList(String[] OrderBy){ MyList.setEntity(entidadQuery); return MyList.getList(OrderBy); } public List getList(String[] OrderBy, String FilterSQL){ MyList.setEntity(entidadQuery); return MyList.getList(OrderBy,FilterSQL); } public List getList(String PropertyName, int PropertyValue){ MyList.setEntity(entidadQuery); return MyList.getList(PropertyName, PropertyValue); } public boolean insert(){ return false; } paquete: database.manager public boolean update(){ daoCliente, daoCiudad, daoPais, return false; daoEmpleado, daoFactura, daoPedido, daoItemFactura, daoItemPedido, } daoProducto, daoProveedor, public boolean delete() { daoTipoProducto, daoUsuario return false; } }
24
public class daoCiudad extends BaseManager{ public daoCiudad(){ super(); FieldID = "IDCiudad"; FieldNombre = "Ciudad"; entidad = new entity.Ciudad(); entidadQuery = new QueryCiudad(); entidadQuery.setEntity(entidad);
} }; //--------------------------------------------------public class daoPais extends BaseManager{ public daoPais(){ super(); FieldID = "IDPais"; FieldNombre = "Pais"; entidad = new entity.Pais(); entidadQuery = new QueryPais(); entidadQuery.setEntity(entidad); } }
25
paquete: database.manager daoCliente, daoCiudad, daoPais, daoEmpleado, daoFactura, daoPedido, daoItemFactura, daoItemPedido, daoProducto, daoProveedor, daoTipoProducto, daoUsuario
paquete: negocio Cliente, Ciudad, Pais, Empleado, Factura, Pedido, ItemFactura, ItemPedido, Producto, Proveedor, TipoProducto, Usuario
LOGICA DE NEGOCIOS
negocio, entity
Clases que implementan la lgica de negocio de la aplicacin (Ejm. Precio>0, Subtotal=Precio*Cantidad, etc.)
(Spring)
paquete: entity Cliente, Ciudad, Pais, Empleado, Factura, Pedido, ItemFactura, ItemPedido, Producto, Proveedor, TipoProducto, Usuario
Objetos Persistentes: Representan las tablas de la Base de Datos Relacional, pero vistas como parte de un Modelo Orientado a Objetos
26
public class BaseEntity implements Serializable { private int id; private String nombre; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; }
paquete: entity Cliente, Ciudad, Pais, Empleado, Factura, Pedido, ItemFactura, ItemPedido, Producto, Proveedor, TipoProducto, Usuario
27
public class Ciudad extends BaseEntity{ public Pais Pais; public Ciudad(){ super(); Pais = new Pais(); } public Pais getPais() { return Pais; } public void setPais(Pais Pais) { this.Pais = Pais; }
paquete: entity Cliente, Ciudad, Pais, Empleado, Factura, Pedido, ItemFactura, ItemPedido, Producto, Proveedor, TipoProducto, Usuario
28
Rutinas de comprobacin Clases y/o mdulos que realizan rutinas reutilizables en la Capa de presentacin Componentes visuales de interaccin con el usuario
presentacin PRESENTACION
(Swing, Struts, JSF)
paquete: entity Cliente, Ciudad, Pais, Empleado, Factura, Pedido, ItemFactura, ItemPedido, Producto, Proveedor, TipoProducto, Usuario
Objetos Persistentes: Representan las tablas de la Base de Datos Relacional, pero vistas como parte de un Modelo Orientado a Objetos
Capa de Presentacin
29
30