Foros del Web » Programación para mayores de 30 ;) » Java »

dudas :S

Estas en el tema de dudas :S en el foro de Java en Foros del Web. Nueva duda: el constructor "main" tiene q ser public static void para que pueda arrancar la aplicacion, hasta donde yo se ahora, en la clase ...
  #1 (permalink)  
Antiguo 27/11/2008, 11:41
Avatar de sanchy  
Fecha de Ingreso: octubre-2008
Mensajes: 389
Antigüedad: 15 años, 6 meses
Puntos: 9
nueva duda =)

Nueva duda:
el constructor "main" tiene q ser public static void para que pueda arrancar la aplicacion, hasta donde yo se

ahora, en la clase Inicio(donde se encuentra delcarado el main) importo una clase Fachada.
declaro una variable private Fachada f = Fachada.getFachada()
y dentro de constructor llamo a metodos de Fachada:
f.agregarArticulo(blabla, blabla)

el tema es el siguiente:
me subraya la "f" de cuando llamo al metodo y me dice "cannot make a static reference to a non-static field f"

lo solucione haciendo "private static Fachada f = Fachada.getFachada()"

pero no se si es correcto hacer esto o hay otra forma de solucionarlo

gracias desde ya


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

Lo siguiente esta solucionado:
1º DUDA-

los tutoriales de sun me dicen que para mostrar una ventana de error tengo q poner esto:
Código:
JOptionPane.showMessageDialog(frame,
    "Eggs are not supposed to be green.",
    "Inane warning",
    JOptionPane.WARNING_MESSAGE);
cuando lo pongo (y despues de importar todo lo necesario) me salta un error diciendo que no sabe que es "frame"

ayuda :s



2º DUDA-

desde la clase ServiciosUsuario en el paquete servicios hago "throw Exceptions", estas Exceptions pasan por la Fachada y luego llegan a AgregarUsuario en el paquete vistas

todo esto es para manejar las Exceptions en AgregarUsuarios claro. El tema es, como puedo saber de que tipo de Exception se trata para asi ver que resolucion tomar?
Las opciones que tengo son:
- que el los parametros nombre, apellido, usuario, contraseña esten vacios
- que ya exista el usuario dentro del ArrayList



3º DUDA-

mi clases Fachada dentro del paquete servicios tiene que ser un Singleton.
El profesor habia puesto un ejemplo en el que el constructor era privado, y la Fachada se instanciaba solo si era "null" con un "if"

donde escribo esa instancia y ese "if (fachada==null) fachada = new Fachada();" ?

Fachada no sirve para nada mas que para comunicar clases entre si, el constructor debe estar vacio?

como creo la Fachada desde otras clases? private Fachada f? Fachada f = new Fachada()?

y como la uso desde otras clases? f.metodo()? Fachada.metodo()?

estuve probando muchas cosas no se crean q soy un vago q viene a que le arreglen todo, pasa que el programa ya lo tengo hecho de la primera mitad del semestre y lo estoy mejorando en cuanto a diseño. y cuando intento hacer el singleton las llamadas a fachada me salen subrayadas y me dice que no puedo llamar staticamente a un metodo que no es statico... pero no se si hacer todos los metodos static o que :S



bueno gente muchas gracias por leer

Última edición por sanchy; 04/12/2008 a las 19:26
  #2 (permalink)  
Antiguo 29/11/2008, 12:07
Avatar de sanchy  
Fecha de Ingreso: octubre-2008
Mensajes: 389
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: dudas :S

bump :xxxxx
  #3 (permalink)  
Antiguo 29/11/2008, 21:35
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: dudas :S

Hola,

Cita:
Iniciado por sanchy Ver Mensaje
1º DUDA-

los tutoriales de sun me dicen que para mostrar una ventana de error tengo q poner esto:
Código:
JOptionPane.showMessageDialog(frame,
    "Eggs are not supposed to be green.",
    "Inane warning",
    JOptionPane.WARNING_MESSAGE);
cuando lo pongo (y despues de importar todo lo necesario) me salta un error diciendo que no sabe que es "frame"

ayuda :s
Te ayudo con la 1a., 'frame' en ese código indica un objeto de tipo Component.

En el tutorial de java, 'frame' era un ejemplo de cómo crear un message box, pero tienes que cambiar la variable 'frame', por una instancia que tu hayas creado de algún formulario o componente. Por ejemplo ...

JFrame myFrame = new JFrame();
JOptionPane.showMessageDialog(myFrame, ...

En ese caso, creas un JFrame que tiene de nombre 'myFrame', y se lo pasa como el primer parámetro a showMessageDialog() con el objetivo de indicar el componente donde se va a desplegar el diálogo.

myFrame puede ser cualquier objeto de tipo java.awt.Component o puede ser 'null', para indicar que va a utilizar el 'default frame'.

Saludos,
  #4 (permalink)  
Antiguo 29/11/2008, 22:10
Avatar de sanchy  
Fecha de Ingreso: octubre-2008
Mensajes: 389
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: dudas :S

buenisimo gracias!!

lo mas importante ahora es el tema de manejar las Exceptions, alguien sabe algo?
  #5 (permalink)  
Antiguo 30/11/2008, 06:16
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: dudas :S

Hola:

La clase Exception en el constructor admite un texto, puedes poner lo que quieras.

De todas formas, lo mejor es que hagas tus propias clases de excepcion, heredando de Exception. Harías, por ejemplo, CamposVaciosException y UsuarioYaExisteException. Así puedes poner lo que quieras en ellas.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #6 (permalink)  
Antiguo 30/11/2008, 06:19
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: dudas :S

Aquí tienes un ejemplo del patrón singleton. En tu caso, en vez de Connection, sería la fachada.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #7 (permalink)  
Antiguo 01/12/2008, 07:29
Avatar de sanchy  
Fecha de Ingreso: octubre-2008
Mensajes: 389
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: dudas :S

gracias!

el tema es q no entiendo como manejar las exceptions, las tengo q declarar yo mismo? "si el campo es vacio throw CamposVaciosException" ???
  #8 (permalink)  
Antiguo 02/12/2008, 20:44
 
Fecha de Ingreso: noviembre-2007
Mensajes: 37
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: dudas :S

Holas!!!!
Cuando un campo es vacio yo suelo poner el bloque try catch
try {
............
........
.........//Aqui va tu codigo
}
catch (NullPointerException) {
System.out.println("LLENE LOS CAMPOS NECESARIOS) }
//Aqui van las excepciones que hubieran

SUERTE!

Y para lo de error....es facil...
Colocas: JOptionPane.showMessageDialog(null,"VERIFIQUE LOS DATOS","ERROR",JOptionPane.ERROR_MESSAGE); y listo....
  #9 (permalink)  
Antiguo 02/12/2008, 21:06
Avatar de sanchy  
Fecha de Ingreso: octubre-2008
Mensajes: 389
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: dudas :S

NullPointerException no tiene pinta de funcar si el campo tiene un espacio en blanco por ejeplo.

gracias igual. ya logre manejar todo el tema de exceptions con IFs
  #10 (permalink)  
Antiguo 04/12/2008, 19:26
Avatar de sanchy  
Fecha de Ingreso: octubre-2008
Mensajes: 389
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: dudas :S

el primer post actualizado con una nueva duda =)
  #11 (permalink)  
Antiguo 06/12/2008, 05:42
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: dudas :S

Hola:

Si haces las cosas desde el main, que es static, sólo puedes referencias atributos y métodos static de la misma clase. La que tú has dado es una posible solución, aunque no es la más elegante desde el punto de vista de orientación a objetos.

Lo habitual suele ser que el main() apenas haga nada, sólo hacer un new de la clase y quizás alguna cosa más, pero poco. Luego, en el constructor de la clase o en algún método que se llame desde el main(), se hace el resto de las cosas, ya sin necesidad de que todo sea static. Ahí va una especie de ejemplo

Código:
public class Principal {
   private Fachada f=null;
   public static void main (String [] args) {
      Principal p = new Principal();
      p.comienzaATrabajar();
   }
   public Principal () {
      // inicializacion
      f = Fachada.getFachada();
   }
   public void comienzaATrabajar() {
     // Aquí tu código que hace cosas. Ya no es necesario que
     // las cosas sean static.
     f.metodoDeFachada();
   }
}
__________________
Apuntes Java
Wiki de Programación
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:05.