Sie sind auf Seite 1von 34

PROGRAMACIN AVANZADA

DOCENTE:
Ing. Mg. Omar Snchez Guevara
SEMANA 1:
Tema N 1: Arquitectura y
plataforma de desarrollo de
una aplicacin de empresa.
Tema N 1: Arquitectura y plataforma de desarrollo de una aplicacin de empresa.
Tema N 1: Arquitectura y plataforma de desarrollo de una aplicacin de empresa.
1.1 La Empresa Actual

Una empresa es una organizacin econmica y las


aplicaciones de empresa son aquellas aplicaciones de
software que facilitan diversas actividades dentro de una
empresa.

Tema N 1: Arquitectura y plataforma de desarrollo de una aplicacin de empresa.


1.1 La Empresa Actual

Factores de las aplicaciones de empresa

Diversidad de necesidades de informacin

Complejidad de procesos econmicos.

Diversidad de Aplicaciones

Tema N 1: Arquitectura y plataforma de desarrollo de una aplicacin de empresa.


1.2 Estilos de arquitectura en la Empresa
1.2.1 Arquitectura de dos capas.

Tema N 1: Arquitectura y plataforma de desarrollo de una aplicacin de empresa.


1.2 Estilos de arquitectura en la Empresa
1.2.1 Arquitectura de tres capas.

Tema N 1: Arquitectura y plataforma de desarrollo de una aplicacin de empresa.


1.2 Estilos de arquitectura en la Empresa
1.2.1 Arquitectura de n capas.

Tema N 1: Arquitectura y plataforma de desarrollo de una aplicacin de empresa.


1.3 Plataforma de Desarrollo

1.3.1 Lenguaje Orientado a Objetos: Java (JDK, JRE)

1.3.2 Sistema Administrador de Base de Datos: PostgreSQL.

1.3.3 Conectividad: JDBC

1.3.4 Reportes: IReport (Jasperreport).

Tema N 1: Arquitectura y plataforma de desarrollo de una aplicacin de empresa.


ALTER TABLE producto
1.4 Base de Datos Relacional ADD CONSTRAINT fk_ idproveedor

FOREIGN KEY(idproveedor)

1.4.1 Lenguaje de Definicin de Datos referencesProveedor(idproveedor)

CREATE DATABASE name [ WITH LOCATION = dbpath ] ALTER TABLE empleado

ADD CONSTRAINT ck_Reporta

CREATE SCHEMA empleado; CHECK (reporta_a in (1,2, 3, 4,)) ;

CREATE SCHEMA cliente;

ALTER TABLE Proveedores


CREATE SEQUENCE Persona.seq_idcontacto START 1;
empieza desde 1 ADD CONSTRAINT uq_nombre

UNIQUE(nombre)

CREATE SEQUENCE Admision.seq_idmodalidad START 1;


empieza desde 1
ALTER TABLE Proveedores

ADD CONSTRAINT pk_idproveedor


create table usuario (idcatrgoria int not null default now)
PRIMARY KEY(idproveedor) ;

Tema N 1: Arquitectura y plataforma de desarrollo de una aplicacin de empresa.


1.4 Base de Datos Relacional

1.4.1 Lenguaje de Manipulacin de Datos

Select * from producto ; //Se lista todos los elementos de una tabla//

Select idproducto, descripcion, existencia from producto ; //Se lista ciertos


campos de una tabla //

INSERT INTO producto

VALUES(10,"Leche", 3.00 , 50, 2, 3);

SELECT * FROM producto; -- Comprobar la Insercin

UPDATE producto set existencia = 30 where idproducto =10;

SELECT * FROM producto; --Comprobar Actualizacin

DELETE FROM cliente WHERE idcliente =1;

SELECT * FROM cliente; --Comprobar Eliminacin

Tema N 1: Arquitectura y plataforma de desarrollo de una aplicacin de empresa.


SEMANA 1:
Tema N 2: Persistencia y
mapeo de Objeto en Java
con base de datos
Postgresql.
Tema N 2: Persistencia y mapeo de Objeto en Java con base de datos Postgresql.
Tema N 2: Persistencia y mapeo de Objeto en Java con base de datos Postgresql.
2.1 Conexin de Java con Postgresql.

2.1.1 Servicio de BD en PostgreSQL.

2.1.2 JDBC: Java Database Conectivity

2.1.3 JPA

Tema N 2: Persistencia y mapeo de Objeto en Java con base de datos Postgresql.


2.2 Mapeo Objeto - Relacional en
Java.

2.2.1 Representacin de las estructuras relacionales en clases


Java.

2.2.2 Clases entidades: clases y relaciones

2.1.3 JPA

Tema N 2: Persistencia y mapeo de Objeto en Java con base de datos Postgresql.


SEMANA 1:
Tema N 3: Accediendo a
datos y programando la
lgica de negocio.
Tema N 3: Accediendo a datos y programando la lgica de negocio.
Tema N 3: Accediendo a datos y programando la lgica de negocio.
3. Acceso a datos.

3.1.1 Representacin en Java de las clases de acceso a base de datos.

class [nombre de la clase] {


[atributos o variables de la clase]
[mtodos o funciones de la clase]
[main]
}

Tema N 3: Accediendo a datos y programando la lgica de negocio.


3. Acceso a datos.

3.1.1 Archivo de conexin a base de datos

protected Connection Conectar() {


String strHost;
String strPort;
String strDatabase;
String strUser;
String strPassword;
String strCadenaConexion;
try {
strHost = "localhost";
strPort = "5432";
strDatabase = "PEDIDOS"; //Nombre de Base de Datos
strUser = "administrador";
strPassword = "administrador";
strCadenaConexion = "jdbc:postgresql://" + strHost + ":" + strPort + "/" + strDatabase;
Class.forName("org.postgresql.Driver");
return DriverManager.getConnection(strCadenaConexion, strUser, strPassword);
} catch (ClassNotFoundException | SQLException ex) {
System.out.println(ex.getMessage());
return null;
}
}

Tema N 3: Accediendo a datos y programando la lgica de negocio.


3. Acceso a datos.
3.1.1 Comandos de conexin a base de datos

Clase java.sql.DriverManager
Static Connection getConnection(String url,String user, String password)

Clase java.sql.Connnection
Statement createStatement()
Crea un objeto para ejecutar sentencias SQL.
void close()
ResulSet executeQuery(String sql)

Clase java.sql.ResultSet
ResultSetMetaData getMetaData()

Tema N 3: Accediendo a datos y programando la lgica de negocio.


3. Acceso a datos.
3.1.1 Comandos de conexin a base de datos

Int executeUpdate(Sring sql)

boolean execute(String sql)

int getUpdateCount()

ResultSet getResult()

Tema N 3: Accediendo a datos y programando la lgica de negocio.


3. Acceso a datos.
3.1.2 Consulta de datos simples y compuestos

- INNER JOIN.

- LEFT JOIN.

- RIGHT JOIN

Tema N 3: Accediendo a datos y programando la lgica de negocio.


public List Consultar_Productos_Validados(){
3. Acceso a datos. List Lista = new ArrayList();
try{
String CADENA_SQL= "SELECT prod.idproducto, prod.descripcion,
prod.preciounitario, prod.existencia, "
+ "prov.idproveedor, prov.nombre as nombreproveedor, prov.contacto,
3.1.2 Consulta de prov.telefonocelular, prov.telefonofijo, "
+ "catg.idcategoria, catg.nombre as nombrecategoria "
datos simples y + "FROM Producto prod "
+ "inner join Proveedor prov on prov.idproveedor = prod.idproveedor "
compuestos + "inner join Categoria catg on catg.idcategoria = prod.idcategoria ";
Conexion ObjConeccion = new Conexion();
ResultSet result = ObjConeccion.Retornar_Datos(CADENA_SQL);
while(result.next()){
EntidadProducto ObjProducto = new EntidadProducto();
ObjProducto.setIdproducto(result.getInt("idproducto"));
ObjProducto.setDescripcion(result.getString("descripcion"));
ObjProducto.setPreciounitario(result.getDouble("preciounitario"));
ObjProducto.setExistencia(result.getInt("existencia"));

EntidadProveedor ObjProveedor = new EntidadProveedor();


ObjProveedor.setIdproveedor(result.getInt("idproveedor"));
ObjProveedor.setNombre(result.getString("nombreproveedor"));
ObjProveedor.setContacto(result.getString("contacto"));
ObjProveedor.setTelefonocelular(result.getString("telefonocelular"));
ObjProveedor.setTelefonofijo(result.getString("telefonofijo"));
ObjProducto.setEntidadProveedor(ObjProveedor);

EntidadCategoria ObjCategoria = new EntidadCategoria();


ObjCategoria.setIdcategoria(result.getInt("idcategoria"));
ObjCategoria.setNombre(result.getString("nombrecategoria"));
ObjProducto.setEntidadCategoria(ObjCategoria);

Lista.add(ObjProducto);
}
return Lista;
}catch (Exception ex){
return null;
} }

Tema N 3: Accediendo a datos y programando la lgica de negocio.


3. Acceso a datos.

3.1.2 Consulta de datos simples y compuestos

public static void main(String[] args)throws IOException {


//Creamos el Objeto AccesoDatos de Producto y realizamos la consulta: PRODUCTOS POR
PROVEEDOR
AccesoProducto aProducto = new AccesoProducto();
List ListaProductos = aProducto.Consultar_Productos_PorProveedor();
//Mostramos los Datos
System.out.println("------------ LISTA DE PRODUCTOS POR PROVEEDOR ------------");
for (int i = 0; i < ListaProductos.size(); i++) {
EntidadProducto ObjProducto = (EntidadProducto)ListaProductos.get(i); //Casteamos la fila
de ListaProductos a EntidadProducto
System.out.println("Proveedor: " + ObjProducto.getEntidadProveedor().getNombre());
if(ObjProducto.getIdproducto() != null){ //Preguntamos si el Producto es diferente de Nulo
System.out.println("Id Producto: " + ObjProducto.getIdproducto());
System.out.println("Descripcin: " + ObjProducto.getDescripcion());
System.out.println("Precio Unitario: S/." + ObjProducto.getPreciounitario());
System.out.println("Existencia: " + ObjProducto.getExistencia());
}else{
System.out.println("Id Producto: ");
System.out.println("Descripcin: ");
System.out.println("Precio Unitario: ");
System.out.println("Existencia: ");
}
System.out.println("");
}
}

Tema N 3: Accediendo a datos y programando la lgica de negocio.


3. Acceso a datos.
3.1.3 Insercin, actualizacin y eliminacin de datos
- Insercin de datos

INSERT INTO
NOMBRETABLA (Nombrecampo1, Nombrecampo2, campoN)
VALUES (valor1, valor2,valor3,..., valorN)

- Actualizacin de datos
UPDATE
NOMBRETABLA SET Nombrecampo1=Valor1
WHERE Nombrecampo2=Valor2

- Eliminacin de datos
DELETE
NOMBRETABLA)
WHERE NombreCampo1 = Valor1

Tema N 3: Accediendo a datos y programando la lgica de negocio.


public String getNombrecia() {
3. Acceso a datos. }
return nombrecia;

package Entidades;
public void setNombrecia(String nombrecia) {
this.nombrecia = nombrecia;
}
public class EntidadCliente {
public String getNombrecontacto() {
Integer idcliente;
return nombrecontacto;
String cedula_ruc;
}
String nombrecia;
public void setNombrecontacto(String nombrecontacto) {
String nombrecontacto;
this.nombrecontacto = nombrecontacto;
String direccion;
}
String fax;
public String getDireccion() {
String email;
return direccion;
String telefonocelular;
}
String telefonofijo;
public void setDireccion(String direccion) {
this.direccion = direccion;
public EntidadCliente() {
}
}
public String getFax() {
return fax;
public Integer getIdcliente() {
}
return idcliente;
public void setFax(String fax) {
}
this.fax = fax;
}
public void setIdcliente(Integer idcliente) {
public String getEmail() {
this.idcliente = idcliente;
return email;
}
}
public void setEmail(String email) {
public String getCedula_ruc() {
this.email = email;
return cedula_ruc;
}
}
public String getTelefonocelular() {
return telefonocelular;
public void setCedula_ruc(String cedula_ruc) {
}
this.cedula_ruc = cedula_ruc;
public void setTelefonocelular(String telefonocelular) {
}
this.telefonocelular = telefonocelular;
}
public String getNombrecia() {
public String getTelefonofijo() {
return nombrecia;
return telefonofijo;
}
}
public void setTelefonofijo(String telefonofijo) {
this.telefonofijo = telefonofijo;
Tema N 3: Accediendo a datos y programando la lgica de negocio. }
}
3. Acceso a datos.
public boolean Registrar(EntidadCliente package AccesoDatos;
ObjCliente){
try{ import Entidades.EntidadCliente;
String CADENA_SQL= "INSERT INTO Cliente VALUES (" + import java.io.IOException;
"'" + ObjCliente.getIdcliente() + "'," +
"'" + ObjCliente.getCedula_ruc() + "'," + public class Test_AccesoDatos {
"'" + ObjCliente.getNombrecia() + "'," +
"'" + ObjCliente.getNombrecontacto() + "'," + public static void main(String[] args)throws IOException {
"'" + ObjCliente.getDireccion() + "'," + //Creamos el Objeto Cliente y agregamos los campos a Registrar
"'" + ObjCliente.getFax() + "'," + EntidadCliente ObjCliente = new EntidadCliente();
"'" + ObjCliente.getEmail() + "'," + ObjCliente.setIdcliente(13);
"'" + ObjCliente.getTelefonocelular() + "'," + ObjCliente.setCedula_ruc("95874512567");
"'" + ObjCliente.getTelefonofijo() + "')"; ObjCliente.setNombrecia("Minimarket Rosita");
Conexion ObjConeccion = new Conexion(); ObjCliente.setNombrecontacto("Sarita Lopez");
return ObjConeccion.Ejecuta_Sql(CADENA_SQL); ObjCliente.setDireccion("Av Balta #1026 J.L.O Chiclsyo");
}catch (Exception ex){ ObjCliente.setFax("02401");
return false; ObjCliente.setEmail("rositamarket@gmail.com");
} ObjCliente.setTelefonocelular("979568214");
} ObjCliente.setTelefonofijo("074159564");
//Creamos la Objeto de AccesoDatos del Cliente
AccesoCliente aCliente = new AccesoCliente();
if(aCliente.Registrar(ObjCliente)){
System.out.println("Registrado Correctamente");
}else{
System.out.println("Error de Insercin ");
}
}
}

Tema N 3: Accediendo a datos y programando la lgica de negocio.


3. Acceso a datos.
3.2 Lgica del negocio
3.2.1 Programando la lgica del negocio

Tema N 3: Accediendo a datos y programando la lgica de negocio.


3. Acceso a datos.
3.2 Lgica del negocio
3.2.1 Programando la lgica del negocio

//Validacin de la Lgica de Negocio


public boolean Registrar(EntidadOrden ObjOrden){
try{
/* VALIDACION DE EXISTENCIAS
* Validamos si la existencia de productos sea menor igual
* a la cantidad de la orden de Venta
*/
List <EntidadDetalleOrden>List_DetalleOrden = ObjOrden.getList_DetalleOrden();
for (int i = 0; i < List_DetalleOrden.size(); i++) {
EntidadDetalleOrden ObjDetalleOrden = List_DetalleOrden.get(i);
EntidadProducto ObjProducto = ObjDetalleOrden.getEntidadProducto();
if(ObjDetalleOrden.getCantidad() > ObjProducto.getExistencia() ){
System.out.println("Error: La Cantidad de Venta es mayor a la Existencia del
Producto '" + ObjProducto.getDescripcion() + "'");
return false;
}
}

Tema N 3: Accediendo a datos y programando la lgica de negocio.


3. Acceso a datos.
3.2 Lgica del negocio
3.2.1 Uso de entidades representadas en Java

Tema N 3: Accediendo a datos y programando la lgica de negocio.


3. Acceso a datos.
3.2 Lgica del negocio
3.2.1 Uso de entidades representadas en Java

/* CLCULO DEL PRECIO TOTAL(DetalleOrden) Y SUBTOTAL(Orden)


* Calculamos el precio total de cada detalle de orden y
* el subtotal de la orden
*/
Double SubTotal_Orden = 0.0;
for (int i = 0; i < List_DetalleOrden.size(); i++) {
EntidadDetalleOrden ObjDetalleOrden = List_DetalleOrden.get(i);
double PrecioTotal = ObjDetalleOrden.getCantidad() *
ObjDetalleOrden.getPreciounitario();
ObjDetalleOrden.setPreciototal(PrecioTotal);
SubTotal_Orden = SubTotal_Orden + PrecioTotal;
}

Tema N 3: Accediendo a datos y programando la lgica de negocio.

Das könnte Ihnen auch gefallen