Sie sind auf Seite 1von 30

Tpicos de Programacin COMPONENTES

Ing. Edwin Octavio Ramos Velsquez

Universidad Nacional Jos Mara Arguedas


ESCUELA PROFESIONAL DE INGENIERA DE SISTEMAS FACULTAD DE INGENIERA
1

Diseos Requerimientos

-------------------------

Diseador (Diagramas) Metodologa

Programador (Codificacin)
Software

Proceso 1: Desarrollo de software

-------------------------

-------------------------------------------------------------------------------------------------------------------------

Requerimiento 1 Requerimiento 2 Requerimiento 3 ...... ......

-------------------------------------------------

-------------------------

-------------------------

Proceso 2: Mantenimiento de software

-------------------------

-------------------------------------------------------------------------------------------------

Requerimiento 1
-------------

Requerimiento 2 Requerimiento 3

-------------------------

-------------

-------------

...... ......

-------------

-------------------------

Proceso 2: Mantenimiento de software -

Es mejor ?

-------------------------

-------------------------

Requerimiento 1 Requerimiento 2
-------------

Requerimiento 3 ...... ......

-------------

-------------------------

Proceso 3: Mantenimiento de software Es el ideal ?

De qu manera se puede simplificar el proceso de desarrollo y mantenimiento del cdigo del software ?

Componente 1

Componente 2

Componente 3

= Producto

Desarrollo Basado en Componentes

Desarrollo Basado en Componentes

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

Subcomponente j _simo NIVEL IESIMO Sub..componente

Subomponente k_simo

Sub..componente
8

Tpicos de Programacin FRAMEWORKS


Ing. Edwin Octavio Ramos Velsquez

Universidad Nacional Jos Mara Arguedas


ESCUELA PROFESIONAL DE INGENIERA DE SISTEMAS FACULTAD DE INGENIERA
9

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

Un framework incluye componentes reutilizables


D IF E R E N C IA S C O N B IB L IO T E C A S
A R Q U IT E C T U R A B A S A D A E N B IB L IO T E C A D E O B J E T O S R e u tiliz a c i n d e c d ig o O b je to 01 A R Q U IT E C T U R A B A S A D A E N F R A M E W O R K S R e u tiliz a c i n d e d is e o y c d ig o O b je to O b je to O b je to 04

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

B ase de d a to s BUCLE DE EVENTO S O b je to 03

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 t e b lo q u e , d e u s o e x c lu s iv o d e e s t a a p lic a c i n , c o n tie n e t o d a la l g ic a d e la a p lic a c i n

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

Para la Vista o Presentacin


Struts Java Server Faces

Para la Lgica de Negocios


Spring

Presentacin

Para acceso a Bases de Datos


Hibernate Ibatis Symbian EJB

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

Es la tcnica recomendada para el Desarrollo Rpido de Aplicaciones


Al usar un framework, se personalizan algunos elementos del mismo. Luego de ello, la aplicacin creada tiene una funcionabilidad completa
Objeto Objeto Objeto 04

BUCLE DE EVENTOS

LOGICA ESPECIFICA DE LA APLICACION

Objeto Base de datos Objeto 05

Por qu usar frameworks?


14

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

Ejemplo de framework con JDBC

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

paquete: pruebas PruebasInicio, ConsultasSimples, etc paquete: components presentacin PRESENTACION


(Swing, Struts, JSF)

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

JPanelScroll, InterfaceEvent, ComboItem paquete: presentacion JDialog, JFrame, JInternalFrame

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.)

paquete: database.conexion Conexion

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

Clases que administran las rutinas de acceso a la Base de Datos

database.* BASE DE DATOS


(Hibernate, JDBC)

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)

paquete: database.conexion Conexion

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

Capa de Base de Datos

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; } }

paquete: database.conexion 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

Capa de Lgica de Negocios

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; }

public class Pais extends BaseEntity { public Pais(){ super(); } }

paquete: entity Cliente, Ciudad, Pais, Empleado, Factura, Pedido, ItemFactura, ItemPedido, Producto, Proveedor, TipoProducto, Usuario

28

paquete: pruebas PruebasInicio, ConsultasSimples, etc

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: components JPanelScroll, InterfaceEvent, ComboItem

paquete: presentacion JDialog, JFrame, JInternalFrame

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

TAREA: Personalice la aplicacin para su sistema de Acceso a datos


Modificar el paquete entity Modificar el paquete database.conexion Modificar el paquete database.jdbc Modificar el paquete database.manager Realizar pruebas de conexin, consultas, etc.

30