Autor
|
Tema: Ejemplo de 3 capas con java (Leído 59,322 veces)
|
Rijhording
Desconectado
Mensajes: 41
|
Buenas Comunidad, quisiera saber si alguien conoce algun ejemplo de un proyecto diseñado en 3 capas con el lenguaje java, ya que estoy por iniciarme en esto y no se como esta el asunto, ya se lo que es 3 capas pero no me vendria mal un ejemplo basico. Gracias por su ayuda!!
|
|
|
En línea
|
|
|
|
sapito169
Desconectado
Mensajes: 628
|
Yo trabajo con tres capas y pienso que no puedes haber preguntado nada mejor las tres capas son excelentes te ayudan a crear aplicación muy profesional siguiendo todas las cosas buenas que debe tener un buen software reutilización escalabilidad desacoplamiento y lo mas importante a lo que veo muy pocos que hacen es no mesclar la lógica de usuario con la lógica de la aplicación
Con eso te olvidas del maldito código autogenerado con sus horribles 100 líneas que solo sirven para poner el layaut incrustado con la lógica de la aplicación si quieres cambiar de vista sin usar 3 capas tendrías que cambiarlo todo en cambio si usas 3 capas solo cambias la vista
Las 3 capas no es un patrón de diseño debido a que no resuelve un problema estándar si no que te dice de forma estricta como modelar toda la aplicación
Si trabajas con 3 capas + inyección de dependencias + interfaces y clases abstractas te va a quedar un sistema digno de un ingeniero
|
|
« Última modificación: 9 Diciembre 2012, 06:41 am por sapito169 »
|
En línea
|
|
|
|
sapito169
Desconectado
Mensajes: 628
|
Las 3 capas sirven para proyectos muy grandes que quieran perdurar por los siglos de los siglos si no es así mejor trabaja solo en 2 capas
Lamentablemente no es perfecta y e notado cosas muy feas acerca de las 3 capas
Aumenta la cantidad de código enormemente lo que no significa que el código este desordenado al contrario se pone muy desacoplado
Vuelve demasiado lento al principio como siempre hacer algo estricto y muy elaborado (una arquitectura) siempre es lento al principio pero al muy largo plazo devuelve el costo con intereses
No tiene muy buena integración con ides espeto netbenas (cada capa seria un modulo)
No tiene una capa que yo la llamaría de especificación o común en la cual iría todos las clases e interfaces que son comunes en todas las capas
|
|
« Última modificación: 9 Diciembre 2012, 06:44 am por sapito169 »
|
En línea
|
|
|
|
Rijhording
Desconectado
Mensajes: 41
|
pero yo solamente busco un ejemplo para guiarme como debe ser leerme el codigo para entendermelo por mi mismo e buscado en san google y no hay buenos ejemplos si alguien tuviera un ejemplo en java usando 3 capas..gracias y saludos
|
|
|
En línea
|
|
|
|
sapito169
Desconectado
Mensajes: 628
|
Si sigo con el ejemplo lo voy a terminar en casi hora y media para la tarde ya va estar posteado
-yo trabajo con una variación de 3 capas en realidad trabajo con 4 capas con una cuarta que seria la capa común en donde están dos paquetes el paquetes de entidades o (objetos de negocio) y el paquete de interfaces(esas interfaces que son comunes en tre las capas)
Este post es el que mas te va a gustar voy a explicar como se implementa en java 3 capas en un sentido más técnico y en el idioma de un programador casi nadie lo ase así suelen ser demasiado teóricos y no dan un ejemplo concreto El ejemplo es el mas sencillo que se me pueda ocurrir va a ser un sistema para un restaurante que funciona bajo una misma pc sin nada espectacular (inyección de dependencias, clases abstractas) si el ejemplo no va con lo que necesitas puedes avisarme para acomodarlo a tu caso
- las capas por recomendación serian paquetes en netbenas además serian modulos
-para la capa común iría en com.PollitosPeru.sistemaVenta.comun
-en la capa de datos irían clases que se conecten con la fuente de base de datos siendo el caso mas común conectarse con una base de datos relacional con jdbc o alguna especificación de jpa yo hago el ejemplo con jdbc siendo el nombre del paquete com.PollitosPeru.sistemaVenta.datos además una clase que represente mi conexión en particular ConexionPollito importara a com.PollitosPeru.sistemaVenta.comun
-en la capa de lógica de negocio estar en el paquete com.PollitosPeru.sistemaVenta.logica aca pondré mi lógica de negocio y solo lógica por ningún motivo importara del paquete javax.swing o alguna librería grafica con excepción de que llame a las clases que representen modelos como javax.swing.table.AbstractableModel o javax.swing.TableModel solo hará importaciones a la capa de datos y a la capa común no habrá sin ninguna excepción importaciones al paquete java.sql o javax.sql o alguno que se equivalente
-en la capa de vista hira dentro del paquete com.PollitosPeru.sistemaVenta.vista aqui abra las todos los formularios las clases que sean hijos nietos o vistnientos de Componet si es formulario comenzar con Frm como FrmLoguin FrmCaja y si es panel comenzara con Pan como PanCabeseraCaja PanDetalleCaja aca también pondrás las clases que hagan gráficos estadísticos o impriman reportes
|
|
« Última modificación: 9 Diciembre 2012, 06:53 am por sapito169 »
|
En línea
|
|
|
|
sapito169
Desconectado
Mensajes: 628
|
package com.pollitosperu.sistemaVentas.comun.Entidades; /** * * @author luis */ public class Producto { private int codigo; private int cantidad; public int getCodigo() { return codigo; } public void setCodigo(int codigo) { this.codigo = codigo; } return nombre; } public void setNombre (String nombre ) { this.nombre = nombre; } public int getCantidad() { return cantidad; } public void setCantidad(int cantidad) { this.cantidad = cantidad; } public String getDescripcion () { return descripcion; } public void setDescripcion (String descripcion ) { this.descripcion = descripcion; } }
package com.pollitosperu.sistemaVentas.comun.Interfases; import com.pollitosperu.sistemaVentas.comun.Entidades.Producto; import java.util.ArrayList; public interface IdaoProducto { public void agreagProducto(Producto producto); public void eliminaProducto(int codigo); public void modificaProducto(int codigo, Producto producto); public ArrayList<Producto> listaProductos(); }
|
|
« Última modificación: 26 Abril 2010, 00:45 am por sapito169 »
|
En línea
|
|
|
|
sapito169
Desconectado
Mensajes: 628
|
package com.pollitosperu.sistemaVentas.datos; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author luis */ public class ConexionPollito { if (conection == null) { try { conection = DriverManager. getConnection("jdbc:mysql://localhost:3306/pollitosperu", "root", "root"); ex.printStackTrace(); Logger.getLogger(ConexionPollito.class.getName()).log(Level.SEVERE, null, ex); } } return conection; } }
package com.pollitosperu.sistemaVentas.datos; import com.pollitosperu.sistemaVentas.comun.Entidades.Interfases.IdaoProducto; import com.pollitosperu.sistemaVentas.comun.Entidades.Producto; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; /** * * @author luis */ public class DBdaoProducto implements IdaoProducto { private Connection connection = new ConexionPollito (). getConection(); public void agreagProducto(Producto producto) { try { CallableStatement statement = connection. prepareCall("{call agreagaProducto (?,?,?)}"); statement.setString("nombre", producto.getNombre()); statement.setInt("cantidad", producto.getCantidad()); statement.setString("descripcion", producto.getNombre()); statement.executeUpdate(); ex.printStackTrace(); } } public void eliminaProducto(int codigo) { try { statement.setInt("cod", codigo); statement.executeUpdate(); ex.printStackTrace(); } } public void modificaProducto(int codigo, Producto producto) { try { CallableStatement statement = connection. prepareCall("{call modificaProducto (?,?,?,?)}"); statement.setInt("cod", codigo); statement.setString("nom", producto.getNombre()); statement.setInt("cant", producto.getCantidad()); statement.setString("descrip", producto.getNombre()); statement.executeUpdate(); ex.printStackTrace(); } } public ArrayList<Producto> listaProductos() { ArrayList<Producto> productos = new ArrayList<Producto>(); try { ResultSet resultSet = statement. executeQuery(); while (resultSet.next()) { Producto producto = new Producto(); producto.setNombre(resultSet.getString("nombre")); producto.setCodigo(resultSet.getInt("codigo")); producto.setCantidad(resultSet.getInt("cantidad")); producto.setDescripcion(resultSet.getString("descripcion")); productos.add(producto); } return productos; ex.printStackTrace(); return null; } } }
|
|
|
En línea
|
|
|
|
sapito169
Desconectado
Mensajes: 628
|
package com.pollitosperu.sistemaVentas.logica; import com.pollitosperu.sistemaVentas.comun.Entidades.Interfases.IdaoProducto; import com.pollitosperu.sistemaVentas.comun.Entidades.Producto; import com.pollitosperu.sistemaVentas.datos.DBdaoProducto; import java.util.ArrayList; /** * * @author luis */ public class DaoProducto implements IdaoProducto { private DBdaoProducto daoProducto = new DBdaoProducto(); public DaoProducto() { } public void agreagProducto(Producto producto) { daoProducto.agreagProducto(producto); } public void eliminaProducto(int codigo) { daoProducto.eliminaProducto(codigo); } public void modificaProducto(int codigo, Producto producto) { daoProducto.modificaProducto(codigo, producto); } public ArrayList<Producto> listaProductos() { return daoProducto.listaProductos(); } }
package com.pollitosperu.sistemaVentas.vista; import com.pollitosperu.sistemaVentas.comun.Entidades.Producto; import com.pollitosperu.sistemaVentas.logica.DaoProducto; import java.util.ArrayList; import java.util.Iterator; import javax.swing.DefaultListModel; /** * * @author luis */ public class FrmProducto extends javax. swing. JFrame { ...... private void jButton1ActionPerformed (java. awt. event. ActionEvent evt ) { DaoProducto daoProducto = new DaoProducto(); Producto producto = new Producto(); producto.setNombre(txtnombre.getText()); producto.setDescripcion(txtDescripcion.getText()); producto. setCantidad(Integer. parseInt(txtCantidad. getText())); daoProducto.agreagProducto(producto); } private void jButton2ActionPerformed (java. awt. event. ActionEvent evt ) { DaoProducto daoProducto = new DaoProducto(); daoProducto.eliminaProducto(1); } private void jButton4ActionPerformed (java. awt. event. ActionEvent evt ) { DaoProducto daoProducto = new DaoProducto(); ArrayList<Producto> productos = daoProducto.listaProductos(); Iterator iterator = productos. iterator(); jList1.setModel(defaultListModel); defaultListModel.clear(); while (iterator.hasNext()) { Producto producto = new Producto(); producto = (Producto) iterator.next(); defaultListModel.addElement(producto.getNombre()); } } private void jButton3ActionPerformed (java. awt. event. ActionEvent evt ) { DaoProducto daoProducto = new DaoProducto(); Producto producto = new Producto(); producto.setNombre(txtnombre.getText()); producto.setDescripcion(txtDescripcion.getText()); producto. setCantidad(Integer. parseInt(txtCantidad. getText())); daoProducto. modificaProducto(Integer. parseInt(txtcodigo. getText()), producto ); } }fin de clase
|
|
« Última modificación: 26 Abril 2010, 00:50 am por sapito169 »
|
En línea
|
|
|
|
|
Rijhording
Desconectado
Mensajes: 41
|
|
Re: Trauma
« Respuesta #9 en: 26 Abril 2010, 23:41 pm » |
|
me gustaria ver tus interfaces de usuario para guiarme ps xq el resto esta comprensible ok man gracias saludos..
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ejemplo basico de cola en java
Java
|
chaarlyyyy
|
3
|
15,127
|
16 Julio 2010, 06:06 am
por danielo-
|
|
|
un ejemplo de troyano en java
« 1 2 »
Java
|
AngelCruel
|
10
|
9,482
|
13 Agosto 2010, 18:28 pm
por 1mpuls0
|
|
|
Cálculos Java, mi primner ejemplo
Java
|
Meta
|
2
|
5,808
|
9 Febrero 2011, 02:10 am
por Meta
|
|
|
Programacion java por capas
Programación General
|
tastian
|
0
|
2,983
|
12 Abril 2013, 20:06 pm
por tastian
|
|
|
3 capas y MVC con Java
Dudas Generales
|
Panic Fryam All
|
0
|
2,137
|
11 Noviembre 2021, 18:58 pm
por Panic Fryam All
|
|