Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - sapito169

#151
las librerías externas siempre deben estar en todas las maquinas en las que las instales tu programa

Ademas esas librerías deben estar correctamente configuradas en el jar principal



#152
Java / Re: Ejemplo de 3 capas con java
8 Octubre 2012, 21:04 PM
Cita de: raao10 en  8 Octubre 2012, 17:43 PM
Hola!! q tal por aca me estoy iniciando en el mundo de los sistemas en 3 capas y me ha parecido fabuloso el aporte de todos.. pero me gustaria si me pudieran ayudar en la parte en donde muestra un arreglo para visualizar una tabla de los datos... q no he podido entender... aunque hice el ejemplo no me sale.
codigo completo

Código (java) [Seleccionar]

public class Main {
public static void main(String[] args) {
RepositorioTarea repositorioTarea = new RepositorioTarea();
ServicioTarea servicioTarea = new ServicioTarea(repositorioTarea);
FrmPrincipal frmPrincipal = new FrmPrincipal(servicioTarea);
frmPrincipal.setVisible(true);
}
}



Código (java) [Seleccionar]

import java.awt.BorderLayout;

public class FrmPrincipal extends JFrame {

private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JTextField txtTareaNombre;
private JTable table;

private ServicioTarea servicioTarea;

public FrmPrincipal(ServicioTarea servicioTarea) {
this.servicioTarea = servicioTarea;
init();
}

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
FrmPrincipal frame = new FrmPrincipal();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public FrmPrincipal() {
init();
}

private void init() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);

JPanel panel = new JPanel();
contentPane.add(panel, BorderLayout.NORTH);
panel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));

JLabel lblNewLabel = new JLabel("Tarea");
panel.add(lblNewLabel);

txtTareaNombre = new JTextField();
panel.add(txtTareaNombre);
txtTareaNombre.setColumns(10);

JButton btnAgrega = new JButton("agrega");

panel.add(btnAgrega);

JScrollPane scrollPane = new JScrollPane();
contentPane.add(scrollPane, BorderLayout.CENTER);

table = new JTable();
scrollPane.setViewportView(table);
table.setModel(new DefaultTableModel(new Object[][] {}, new String[] {
"Codigo", "Descripcion", "fecha" }));
btnAgrega.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
servicioTarea.agregar(new Tarea(null, txtTareaNombre.getText(),
null));

List<Tarea> tareas = servicioTarea.tareas();
DefaultTableModel defaultTableModel = (DefaultTableModel) table
.getModel();
defaultTableModel.setRowCount(0);
for (Tarea tarea : tareas) {
defaultTableModel.addRow(new Object[] { tarea.getId(),
tarea.getNombre(), tarea.getDate() });
}
}
});
}

}


Código (java) [Seleccionar]

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;

public class RepositorioTarea {
private HashMap<Integer, Tarea> hashMap = new HashMap<>();

public void agregar(Tarea tarea) {
int size = hashMap.size();
hashMap.put(size + 1,
new Tarea(size + 1, tarea.getNombre(), tarea.getDate()));
}

public List<Tarea> listar() {
ArrayList<Tarea> respuesta = new ArrayList<>();
Collection<Tarea> values = hashMap.values();
for (Tarea tarea : values) {
respuesta.add(new Tarea(tarea.getId(), tarea.getNombre(), tarea
.getDate()));
}
return respuesta;
}

}



Código (java) [Seleccionar]

import java.util.Date;
import java.util.List;

public class ServicioTarea {

private final RepositorioTarea repositorioTarea;

public ServicioTarea(RepositorioTarea repositorioTarea) {
this.repositorioTarea = repositorioTarea;
}

public void agregar(Tarea tarea) {
tarea.setDate(new Date());
repositorioTarea.agregar(tarea);
}

public List<Tarea> tareas() {
return repositorioTarea.listar();
}
}


Código (java) [Seleccionar]

import java.util.Date;

public class Tarea {
private Integer id;
private String nombre;
private Date date;

public Tarea(Integer id, String nombre, Date date) {
this.id = id;
this.nombre = nombre;
this.date = date;
}

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getNombre() {
return nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}

public Date getDate() {
return date;
}

public void setDate(Date date) {
this.date = date;
}

}


porfavor respondeme te lo suplico
#153
usa un Jdialog envés de JFrame
#154
denada
#155
la segunda es la correcta y yo jamas lo haría de la primera forma

estas en el año 2012 donde las computadores tienen alrededor de 2 gigas de ran y incluso le puedes poner 4 o 6 mas de ran si te quedas sin memoria las memorias ran son baratas

mira una computadora barata de escritorio común y corriente no se va a quedar sin ran por crear 20 o 30 objetos en memoria y si tienes miles pues los sacas paginados de 20 en 20

mira no entiendo por que la mayoría prefiere variaciones de la primera solución yo pienso por que no conocen bien cuales son las ventajas y desventajas de la segunda

mira cualquier diseño que muestre la intención del código es mejor que otro que no la muestre en el segundo caso hay una clase llamada alumno la cual auto documenta que se trabaja con alumnos el diseño muestra la intención

cualquier diseño que reduzca las lineas de código es en esencia mejor .El mejor código es el que no se escribe  agregar mas lineas de código lo único es que agrega mas complejidad innecesaria.la única manera de evitar complejidad es evitándola

la segunda forma es mejor por que una correcta separación de responsabilidades comensemos que hay una clase que se encargada de la conexión a base de datos (que posierto deberia llamarse base de datos no como tu la llamaste) otra de vista y otra de tu clase alumno

por decir tu clase alumno puede tener mas métodos como nombreCompleto puedeGurdarseEnBaseDeDatos etc y estos metodos pueden modificarse en un solo lugar ademas habria un lugar para poner esos metodos de forma ordenada.

en el segundo caso debido a que cada clase tiene una responsabilidad diferente cada clase tiene una sola razón para cambiar.Por ejemplo que tal si se te ocurre un dia que no te gusta que se presente los alumnos en una tabla y quieres mostrar tus alumnos en una bonito arbol con la ultima libreria de moda pues solo cambias la clase del formulario y la unica clase que cambiaria seria la del formulario.

En el segundo caso digamos que quieres mejorar el rendimiento de tu aplicación,aunque pienso que te preocupas innecesariamente, pues solo cambiarias la clase conexion para usar un pool de conexiones solo tocarias la clase conexion pero no tocarías las otras clases

la optimisacion prematura es la madre de todos los desastres mira no te preocupes demasiado en el rendimiento preocúpate en que tus clases sigan una correcta separación de responsabilidades y que tus clases griten lo mas que puedan su intencion.

si el diseño no es optimo pero funciona regular esta bien tratar de alcanzar la perfección no solo es tonto sino imposible.si nadie se queja del rendimiento entonces no existe problema de rendimiento. si luego de realizar pruebas empíricas objetivas basadas en la realidad,objetivas ,es decir en números usando una erramienta que no te mienta (sin subjetividad) se demuestra que existe problemas de rendimiento pues lo solucionas

profavor porfavor responde me si no me deprimo
#156
Java / Re: joptionpane con botones.
20 Septiembre 2012, 18:07 PM
 >:D


int valor = JOptionPane.showOptionDialog(null, "mensaje", "titulo", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE, null,null, null);
        System.out.print(valor);
#157
Java / Re: ¿Cómo puedo saber mi nivel en java?
18 Septiembre 2012, 03:58 AM
ojala hubiera mas gente que pase del nivel elemental

elemental =conoces los conceptos básicos como herencia poilformismo threads herencia es decir conoces la sintaxis,no intercambias la palabra java con eclipse

basico= realizaste un proyecto real de forma exitosa que funcione y que tenga muy pocos bugs y que no apeste el diseño de la interfase de usuario,que cumpla las necesidades básicas con del cliente

intermedio=conoces de temas como patrones tdd prinsipios solid, prinsipios de empaquetado,patrones scrabs,pruebas funcionales conoses de arquitectura ,conoces lo que es cohesion y desacoplamiento y sabes como apliacarlo de forma practica y real en el lenguaje

eres un adulto=te comportas profesionalmente, no necesitas de nadie que te diga que debes hacer (no mircomanagment), organizas tu propio tiempo y te comprometes a fechas y dices la verdad siempre aunque a todo el mundo le duela, no te comprometes a fechas que no puedes cumplir,no temes decir que no cuando te quieren obligar a hacer basura,dice que si pero lo dice con responsabilidad y compromiso,y tu puedes leer tu propio código como si estuvieras leyendo español,el resto de de los programadores pueden leer el código y entenderlo.

tu productividad esta por encima del promedio y los bugs son muchísimo menos que lo normal puedes realizar una arquitectura donde sea posible cambiar funcionalidades completas sin que todo el el sistema colapse miserablemente por todas partes y tengas que estar dando vueltas como un perro que persigue su cola
#158
Java / Re: [Duda] Interfaces (objetos).
17 Septiembre 2012, 06:06 AM
mira es raro de que te intereses y te descuenta de esos detalles se nota que tienes madera para ser arquitecto por que la mayoría ni le interesa y/o ni lo entiende y/o ni sabe que existe este tipos de cosas  ;-)

Citar¿Si tengo una clase que implementa una interfaz, pero en dicha clase creo un método que no está definido en la interfaz funcionaría? o me veo límitado a los métodos de la interfaz?.

mira la respuesta es simple clara y sin anbiguedades ni matieses si es posible

el segundo punto es que esta pregunta no es de opinión es un echo objetivo de la realidad y por lo tanto es totalmente comprobable ademas solo hay dos respuestas
las cuales son es posible y no es posible.En esos casos no preguntes experimenta descubre lo por tu cuenta recuerda que comprobarlo es muy fácil y esta a tu alcance

por que preguntas si tu mismo lo as demostrado?



#159
mira des pues de un poco de intenten-tos llegue a una solución definitiva que soluciona elegantemente el problema descrito pero es muy complicado de entender para un prinsipante disculpa que el código este desordenado pero es que lo escribí de madrugada

mira esta solución es buena por que permite que ninguna clase sepa de la existencia de otra es decir un buen desacoplamiento

ademas si no lo haces de esta forma tu programa jamas se serrara ocupara recursos y luego como es costumbre se le echara la culpa al lenguaje diciendo que java es lento

Código (java) [Seleccionar]

package com.ejemplo;

import javax.swing.JFrame;
import javax.swing.WindowConstants;

public class Main {
public static void main(String[] args) {
Sitema sitema = new Sitema();
final PanelCredensiales panelCredensiales = new PanelCredensiales(sitema);
panelCredensiales.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
panelCredensiales.setVisible(true);
final JFrame jFrame = new JFrame();
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
System.out.println("xd");
sitema.ingresoCorrecto(new EventoIngreso() {

@Override
public void accion() {
jFrame.setVisible(true);
panelCredensiales.dispose();
}
});

}
}

Código (java) [Seleccionar]

package com.ejemplo;

public abstract class EventoIngreso {
protected abstract void accion();
}

Código (java) [Seleccionar]

package com.ejemplo;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class PanelCredensiales extends JDialog {

private final JLabel lblUsuario = new JLabel("usuario");
private final JLabel lblClave = new JLabel("clave");
private final JTextField txtClave = new JTextField();
private final JTextField txtUsuario = new JTextField();
private final JButton btnAceptar = new JButton("btnAceptar");
private final Sitema sitema;

public PanelCredensiales(Sitema sitema) {
this.sitema = sitema;
intiUi();
}

private void intiUi() {
setLayout(null);
setSize(150, 200);

lblUsuario.setBounds(10, 10, 100, 10);
getContentPane().add(lblUsuario);

txtUsuario.setBounds(110, 30, 100, 20);
getContentPane().add(txtUsuario);

txtClave.setBounds(110, 10, 100, 20);
getContentPane().add(txtClave);

lblClave.setBounds(10, 30, 100, 10);
getContentPane().add(lblClave);

btnAceptar.setBounds(60, 60, 50, 20);
getContentPane().add(btnAceptar);

btnAceptar.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
sitema.ingresoCorrecto();

}
});
}

}

[code]
package com.ejemplo;

public class Sitema {
private EventoIngreso eventoIngreso;
public void inicio(){

}

public void ingresoCorrecto() {

eventoIngreso.accion();
}

public void ingresoCorrecto(EventoIngreso eventoIngreso) {
this.eventoIngreso=eventoIngreso;

}
}
[/code]
#160
Java / Re: Rendimiento aplicaciones Java
13 Septiembre 2012, 03:50 AM
java no es lento es un mito

comencemos por decir que java solia ser un lenguaje "nuevo" pero ahora que tiene algunos años mas a pasado por muchas versiones y a mejorado
Java siempre fue un lenguaje interpretado y cuando se solia(pasado) comparar con sus predesesores c c++ claro que les ganaban en velocidad y en esos tiempos java resien nasia y no tenia tantos años y optimisaciones las computadoras tenian menos recursos.Un celular actual es mas potente que las computadoras de ese tiempo.

A partir de ese momento salieron a quejar disiendo java es lento java no sirve.Eso 8es una tonteria tenemos suficientes recursos para programar en java estamos en el 2012 los que se quejan son parsonas desubicadas y com poco conocimiento que siguen pensando que java sigue teniendo el mismo rendimiento que en sus primeras versiones

Java no es lento. los que son lentos son los programadores ineptos que hacen m"#$a en ves de codigo y luego se ponen a llorar y por no aceptar su ineptitud le echan la culpa al lenguaje.