• Lunes 23 de Diciembre de 2024, 03:52

Autor Tema:  Propiedades De La Aplicación  (Leído 3245 veces)

mabrev

  • Miembro MUY activo
  • ***
  • Mensajes: 126
    • Ver Perfil
Propiedades De La Aplicación
« en: Miércoles 17 de Marzo de 2004, 19:39 »
0
Hola:

  Tengo algunas dudas sobre la utilización de las propiedades de la aplicación, según tengo entendido en ellas se pueden almacenar ciertas variables de la aplicación que pueden ser recuperadas después desde cualquier punto de la misma. El problema es que no sé cómo se utilizan exactamente ni si hay que incluir alguna librería específica, podría echarme una mano alguien (se agradecería un pequeño ejemplo de almacenamiento y recuperación de una propiedad).

  Muchas gracias.

Saludos

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Propiedades De La Aplicación
« Respuesta #1 en: Miércoles 17 de Marzo de 2004, 21:19 »
0
Es q eso son exactmante los beans. Te mando un archivo de "core servlets & jsp.pdf" cuya pagina es www.coreservlets.com . Esto te aclaro q es para aplicaciones WEB pero es lo mismo en locales.

/** A simple bean that has a single String property
 *  called message.
 *  <P>
 *  Taken from Core Servlets and JavaServer Pages
 *  from Prentice Hall and Sun Microsystems Press,
 *  http://www.coreservlets.com/.
 *  © 2000 Marty Hall; may be freely used or adapted.
 */

public class StringBean {
  private String message = "No message specified";

  public String getMessage() {
    return(message);
  }

  public void setMessage(String message) {
    this.message = message;
  }
}


Este Bean almacena las properties de las q vos estas hablando. En este caso guarda un String pero podes guardar lo q se te antoje. Para q una clase sea un BEAN debe tener atributos private y metodos getXXX y setXXX publicos obviamente para poder accederlos desde fuera de la clase. El constructor no debe hacer nada. La mayoria de los entornos traen un WIZARD para crear beans donde solo pones el tipo de propiedad y su nombre y te hace el get y el set correspondiente.
Como ves en el ejemplo, para setear un string simplemente llamas a setMessage(TuString) y para getearlo getMessage()

Salu2!!!!! y espero q haya servido y no haber dicho ninguna barbaridad

mabrev

  • Miembro MUY activo
  • ***
  • Mensajes: 126
    • Ver Perfil
Re: Propiedades De La Aplicación
« Respuesta #2 en: Jueves 18 de Marzo de 2004, 09:50 »
0
Hola:

  Lo que pasa es que lo que yo quiero hacer es crear un objeto al inicio de la aplicación con unos valores determinados, y posteriormente acceder a esos valores desde instancias de otras clases distintas a la clase en que fue instanciado el objeto, y no tengo muy claro si puedo hacerlo así.

  Encontré algo sobre propiedades de la aplicación, no estaba demasiado claro, pero creo que no es lo mismo que un bean. De todas formas voy a investigarlo otro poco a ver si saco algo en limpio.

  Muchas gracias por la ayuda.

Saludos

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Propiedades De La Aplicación
« Respuesta #3 en: Lunes 22 de Marzo de 2004, 16:09 »
0
Hola.

Estoy comenzando con java: no me juzguéis duramente si digo alguna tontería, pero... ¿no se podría utilizar una clase con variables de miembro declaradas static?

Chao.

mabrev

  • Miembro MUY activo
  • ***
  • Mensajes: 126
    • Ver Perfil
Re: Propiedades De La Aplicación
« Respuesta #4 en: Martes 23 de Marzo de 2004, 10:20 »
0
Cita de: "Brroz"
Hola.

Estoy comenzando con java: no me juzguéis duramente si digo alguna tontería, pero... ¿no se podría utilizar una clase con variables de miembro declaradas static?

Chao.
Hola:

   No te creas que yo tampoco hace mucho que empecé con Java y seguro que digo muchas más tonterías que tú, de todas formas no se me había ocurrido utilizar variables static, pero puede que sea una buena idea, voy a probar y te cuento.

  Muchas gracias.

Saludos.

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Propiedades De La Aplicación
« Respuesta #5 en: Miércoles 24 de Marzo de 2004, 16:50 »
0
Mira, el uso de atributos STATIC no se si serviria para lo q queres hacer, porque por lo q tengo entendido de lo q vos queres hacer es "compartir"  ciertas propiedades de una clase entre todas esas clases. SI es verdad q los atributos static de una clase son iguales por todas las clases heredadas, pero el problema viene si vos no tenes HERENCIA, o sea, q si vos tenes clases totalmente distintas, el uso de atributos static no te influye en nada. Insisto, yo creo q deberias usar JAVA BEANS porque de distintas clases podes acceder a diferentes propiedades.

Salu2!!!!!!!!!!!!

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Propiedades De La Aplicación
« Respuesta #6 en: Miércoles 24 de Marzo de 2004, 17:49 »
0
Hola nicokiki.

Por supuesto que no voy a rebatir lo que dices, ya que como expuse anteriormente, no tengo apenas idea de Java, pero para aclararme las ideas: ¿acaso no puedo referirne a miembros estáticos de una clase sin heredar de la clase e incluso sin ni tan siquiera instanciar la clase, tan solo con referirme a la variable de forma 'estática'  (es decir: MiClase.miembro en lugar de InstanciaDeMiClase.miembro)? A ver si puedes arrojar un poco más de luz.

Chao. ¡Y que rule, que huele a uña!

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Propiedades De La Aplicación
« Respuesta #7 en: Miércoles 24 de Marzo de 2004, 19:34 »
0
Si, tenes razon. No niego eso, es mas, de la manera q vos propones solucionarlo segurmanete fuinciona, pero creo q no es la mejor manera de hacerlo.
Los metodos "static" al no ver a "this" pueden ser llamados sin instancias de la clase, pero los atributos static son atributos q son compartidos por todos los objetos de una misma clase. Q pasa si declaras a un atributo static como privado??? no podrias verlo desde fuera de la clase salvo q tengas un metodo publico q te lo muestre.
A lo q voy es q si tengo una clase Figura y otra Presupuesto, q como se ve son mas q distintas y no tienen nada de nada q ver, el hecho de q alguna tenga un atributo publico para q la otra lo pueda ver, no va con la OOP. Estas poniendo algo en una clase q no la representa en lo mas minimo. A eso es a lo q quiero llegar, entendes???? Es por eso que propongo el uso de JAVA BEANS. Es mas, creo q en el primer mensaje q hable de esto, dije no estar seguro en un 100 %, pero creo no estar tan alejado.
Bueno, salu2!!! para todos y esta bueno q aparezcan estas pequeñas discusiones q nos llevan a todos a aprender mas y mas

Salu2!!!!!! :comp:

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Propiedades De La Aplicación
« Respuesta #8 en: Jueves 25 de Marzo de 2004, 09:59 »
0
Hola.

Comprendo lo que dices, pero siguiendo el ejemplo que pones, podrían ocurrir cosas así:

Las clases Figura y Presupuesto podrían implementar una interfaz 'ObjetoImprimible', con lo que las dos clases ya tiene algo en común.

Siguiendo el paralelismo, podría ser también que tuvieran un miembro o un método que devolviera una clase 'PaginaAImprimir'. Este método podría ser público. Estoy de acuerdo contigo en que a las dos clases les importa poco este miembro público de la otra clase, ya que en ciertos aspectos no tienen nada que ver una con la otra, peeero, puede haber una tercera clase 'Impresora' a la que sí que le interese y mucho ese miembro, tanto de una clase como de la otra, y que pódría acceder de forma estática a la clase 'PaginaAImprimir'...

Está claro que hay muchas formas de ver las cosas. De todas formas voy pillando el concepto.

Gracias.

mabrev

  • Miembro MUY activo
  • ***
  • Mensajes: 126
    • Ver Perfil
Re: Propiedades De La Aplicación
« Respuesta #9 en: Jueves 25 de Marzo de 2004, 11:05 »
0
Hola:

  No me gusta demasiado la idea de las variables static, pero no acabo de ver claro cómo puedo conseguir lo que quiero con un JavaBean. Lo primero que debo aclarar es que no tengo ni idea de JavaBeans, pero lo que he entendido es que son como una clase, que tiene un propiedades private y métodos públicos para acceder a ellas, además de tener un constructor vacío. ¿Estoy en lo cierto?

  Según como lo he entendido, no veo claro como puedo hacer lo que quiero. En mi clase principal instanciaría la clase y utilizaría los métodos set, pero cuando quiera acceder a las propiedades desde otra clase, ¿cómo referencio a esa instancia del bean?, porque si instancio de nuevo la clase no podría utilizar los métodos get ya que las propiedades no tendrían ningún valor ¿no?

  Espero que se entienda lo que quiero decir y que alguien me lo aclare.

Muchas gracias.

Saludos.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Propiedades De La Aplicación
« Respuesta #10 en: Jueves 25 de Marzo de 2004, 12:04 »
0
A ver que os parece la idea. Lo he probado y funciona correctamente:

Clase que contendrá las 'propiedades'.
Código: Text
  1.  
  2. public class PropiedadesApp {
  3.    public static String prop1=new String(&#34;&#34;);
  4.    public static String prop2=new String(&#34;&#34;);
  5.    public static String prop3=new String(&#34;&#34;);
  6.    public static void loadProps () {
  7.    /* Por supuesto que aquí iría el código adecuado
  8.      * para obtener el valor correspondiente para cada
  9.      * una de las propiedades */
  10.        prop1=&#34;UNO&#34;;
  11.        prop2=&#34;DOS&#34;;
  12.        prop3=&#34;TRES&#34;;
  13.        System.out.println(&#34;Desde PropiedadesApp.loadProps:&#34;);
  14.        System.out.println(&#34;Alguien ha instanciado PropiedadesApp,&#34;
  15.                                       +&#34;se ha llamado al método loadProps&#34;
  16.                                       +&#34;y se ha asignado valor a las variables&#34;);
  17.    }
  18. }
  19.  
  20.  

Clases para probar el tinglado:
Principal:
Código: Text
  1.  
  2. public class Prueba1 {
  3.    public static void main (String[] args) {
  4.        PropiedadesApp.loadProps();
  5.        System.out.println(&#34;Desde Prueba1.main:&#34;);
  6.        System.out.println(&#34;propiedades valor 1:&#34;+PropiedadesApp.prop1);
  7.        System.out.println(&#34;propiedades valor 2:&#34;+PropiedadesApp.prop2);
  8.        System.out.println(&#34;propiedades valor 3:&#34;+PropiedadesApp.prop3);
  9.        Prueba2 pba2=new Prueba2();
  10.    }
  11. }
  12.  
  13.  
Otra:
Código: Text
  1.  
  2. class Prueba2 {
  3.     Prueba2 () {
  4.        System.out.println(&#34;Desde Prueba2.constructor:&#34;);
  5.        System.out.println(&#34;propiedades valor 1:&#34;+PropiedadesApp.prop1);
  6.        System.out.println(&#34;propiedades valor 2:&#34;+PropiedadesApp.prop2);
  7.        System.out.println(&#34;propiedades valor 3:&#34;+PropiedadesApp.prop3);
  8.    }
  9. }
  10.  
  11.  

Abur.