Fecha y hora actual: Jueves 17 Ene 2019 05:37
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Curso VB .NET - Tema 1.24 - Como programar una clase, Java

Responder al Tema

Índice del Foro > Visual Basic .NET > Curso VB .NET - Tema 1.24 - Como programar una clase, Java

Autor Mensaje
Tesis
Administrador


Registrado: 04 Mar 2007
Mensajes: 3200
Ubicación: Valencia - España

Mensaje Publicado: Miércoles 13 May 2009 20:43

Título del mensaje: Curso VB .NET - Tema 1.24 - Como programar una clase, Java

Responder citando

Curso de programación en .NET - Tema 1.24 - Como programar una clase, Java.


1. Como programar una clase, Java.

1.1 Objetivos del tema.

Vista la introducción a este tema, vamos a ver la parte propia de cada lenguaje.

1.2 Introducción.
Programar es un tema muy personal, de estilo, de gustos y más si hablamos de un elemento como una clase que luego se integra en un programa, donde los matices son muy importantes y cada cual los ve o aprecia de forma distinta.

No vamos a entrar en todas las posibilidades de las clases, sino se convertiría en un apartado muy extenso, y la pretensión es la de sentar un punto de partida, para que a partir de ahí se siga progresando.

Hay que tener presente que en todo desarrollo de código hay que tener siempre un tratamiento de errores, al cual aun no hemos llegado y que aquí no se contempla, pero de lo cual hay que dejar constancia.

1.3 Declarar un objeto de esa clase.
En este punto es cuando se instancia el objeto, y en el que se queda configurado con los valores por defecto que nosotros hayamos asignado a las variables internas, y a las propiedades.
Código:
ClaseDefinidaExistente Objeto = New ClaseDefinidaExistente();


Ahora hay que escribir la clase, y hay que escribirla en función de esos parámetros que hemos comentado que se han de dar en el inicio del objeto.

    Decidir que tipo de inicialización nos interesa.
    Estudiar cuantas posibilidades de inicio nos puede interesar para escribir las sobre cargas adecuadas.
    Recepción y control de los datos necesarios en la inicialización.
    Valores iniciales de variables y propiedades adecuados.


El esquema de una clase es:
    Declaración de clase, su nombre.
    {
    Declaración de atributos, propiedades,
    Declaración de clases interiores
    Declaración de Métodos
    }


Código:
package tema_24;
public class Ejemplo
{
  String Variable = "Variable inicializada";
  String Propiedad = "Propiedad inicializada";
 
  private Ejemplo()
  {
     // esto impide la creación de un objeto .
  }
  public Ejemplo(String Valor)
  {
     Propiedad = Valor;
  }
}


Este ejemplo nos obliga a declarar el objeto con la siguiente sintaxis.
Código:
Ejemplo Objeto = new Ejemplo("Inicialización");


Impide que se pueda utilizar
Código:
Ejemplo Objeto = new Ejemplo();


Por lo que si nosotros añadimos en el constructor de la clase el siguiente código.
Código:
public Ejemplo(String Valor)
{
   if (Valor != "") {Propiedad = Valor;}
}


Si al inicializar la clase no se recibe un valor adecuado la clase quedaría inicializada con el valor por defecto de la propiedad, sin asumir el valor recibido.

Veamos el resultado.
Código:
package tema_24;
public class Main
{
  public static void main(String[] args)
  {
    Ejemplo Objeto = new Ejemplo("Inicialización");
    System.out.println(Objeto.Variable);
    System.out.println(Objeto.Propiedad);
    Ejemplo Uno = new Ejemplo("");
    System.out.println(Uno.Variable);
    System.out.println(Uno.Propiedad);
  }
}


Que produce el siguiente resultado
Código:
init:
deps-jar:
Compiling 1 source file to
compile:
run:
Variable inicializada
Inicialización
Variable inicializada
Propiedad inicializada
BUILD SUCCESSFUL (total time: 0 seconds)


Como vemos en los ejemplos, la adecuada utilización del constructor es importante.
Por lo tanto ya se ha cubierto una primera etapa que es la de controlar la creación de un objeto de nuestra clase de forma incontrolada.
El siguiente paso es la declaración de las variables.

1.4 Asignar valores a las variables de la clase.
En el momento de declarar las variables de la clase nos encontraremos con dos tipos de variables.
Aquellas que se refieren a datos de la clase, y a las que se refieren a las propiedades que se ven desde el exterior de la clase.

A las variables normales, les podemos dar el tratamiento que habitualmente le damos a las variables de cualquier programa, pero las que se emparejan con las propiedades lo lógico es inicializarlas al valor que nos interese, con el fin de que la clase a la hora de inicializarse no sea imprescindible asignar valor a las propiedades, si no que estas ya dispongan de un valor que pueda ser operativo, y solo sea necesario ajustar para personalizar el objeto.

En el ejemplo anterior podemos observar los dos tipos de variables.

1.5 Asignar valores a las propiedades de la clase.
Un objeto deriva de una clase, y ese objeto debe tener unas características, para que las tenga podemos:
    Asignar los valores de sus propiedades en el momento de inicializar el objeto.
    Asignar a posteriori vía métodos o propiedades.
    Inicializar todas las variables en el momento de su declaración.
    Utilizar las propiedades para asignar valores.
    Asignar los valores de sus propiedades en el momento de inicializar el objeto equivale a recibir sus valores en el constructor.

Código:
public Ejemplo(String Valor)
{
   Propiedad = Valor;
}


Asignar los valores en la declaración equivale a:
Código:
String Propiedad = "Propiedad inicializada";


Asignar a posteriori implica recibir valores en la línea de argumentos de un método.
Código:
public void Metodo(String Valor)
{
   Propiedad = Valor;
}


La última alternativa es utilizar el camino de las propiedades, que en Java no podemos utilizar directamente pero si que no hay ningún problema en implementarlo, si recordamos lo visto en temas anteriores, veremos que para devolver el dato de una variable que emparejamos con una propiedad podíamos escribir lo siguiente:
Código:
public String MetodoPropiedad()
{
   return DatoInterno;
} // fin del método


y para la asignación de valores:
Código:
public void MetodoPropiedad(String dato)
{
   DatoInterno = dato;
} // fin del método


Evidentemente los ejemplos son minimalistas.
Pero a partir de ahí podemos desarrollar lo siguiente, para la captura de sus valores.
Código:
public String ValorGet()
{
   return Propiedad;
} // fin del método


Y para el filtrado del valor de la propiedad, variable miembro, atributo.
Código:
public void ValorSet(String dato)
{
   if (dato.equals("") == false)
   {
      Propiedad = dato;
   }
} // fin del método


Los valores de las propiedades se asignan en el apartado Set de la propiedad en cuestión y es ahí donde hay que escribir el código adecuado para su validación, como de costumbre es un apartado que nunca hay que olvidar, no solo se ha de asignar el dato, sino que también hay que validarlo previamente.
Código:
package tema_24;
public class Ejemplo
{
  String Variable = "Variable inicializada";
  String Propiedad = "Propiedad inicializada";
  private Ejemplo()
  {
     // esto impide la creación de un objeto.
  }
 
  public Ejemplo(String Valor)
  {
     if (Valor.equals("") == false) {Propiedad = Valor;}
  }
 
  public void Metodo(String Valor)
  {
     Propiedad = Valor;
  }
 
  public String ValorGet()
  {
     return Propiedad;
  } // fin del método
 
  public void ValorSet(String dato)
  {
     if (dato.equals("") == false)
     {
        Propiedad = dato;
     }
  } // fin del método
}


Para probarlo
Código:
package tema_24;
public class Main
{
  public static void main(String[] args)
  {
    Ejemplo Objeto = new Ejemplo("Inicialización");
    System.out.println(Objeto.Variable);
    System.out.println(Objeto.Propiedad);
    System.out.println(Objeto.ValorGet());
    Objeto.ValorSet("Nuevo Valor");
    System.out.println(Objeto.ValorGet());
    System.out.println(Objeto.Propiedad);
  }
}



El resultado de la ejecución del main es el siguiente:
Código:
init:
deps-jar:
Compiling 1 source file to
compile:
run:
Variable inicializada
Inicialización
Inicialización
Nuevo Valor
Nuevo Valor
BUILD SUCCESSFUL (total time: 0 seconds)


Los valores de la propiedad se devuelven en ValorGet, y la asignación se realiza en ValorSet.
O también se podría escribir como GetValor o SetValor, pero quedarían separadas en la ayuda del entorno de programación.
Si no deseamos que nos modifiquen el valor de la propiedad, con no escribir el método queda resuelto.

1.6 Utilización de los objetos de una clase.
La utilización de los objetos declarados de una clase, dependerá de la implementación de la clase en cuestión, que es la que le proporciona los recursos a los objetos.
La utilización del objeto, una vez declarado, será:
    Asignar valores a las propiedades, si estas lo requieren o lo necesita el código, y si no se ha hecho ya en la declaración del objeto.
    Hacer uso de los métodos disponibles de la clase en el momento adecuado.
    Finalizar el objeto, si procede, o dejar que la salida del procedimiento acabe con el mismo.


El uso dependerá evidentemente del tipo de clase que se haya implementado.
La codificación del uso de la clase puede hacerse bajo dos estilos de código.
El primero podría decirse que es el habitual.
    Definir
    Usar
    Y no realizar acciones especificas de finalización, o utilizar la clase de liberación de recursos.

Código:
Ejemplo Objeto = new Ejemplo();


Java no exige que se desarrolle código para el borrado y la eliminación de objetos, aunque si nosotros nos encargamos de eliminarlos cando no hagan falta, mejor y más rápido actuará el sistema.

Java borra los objetos cuando determina que no se van a utilizar más. Este proceso es conocido como recolección de basura.

Cuando un objeto no dispone de referencias, es cuando el recolector de basura de Java lo elimina.
Las referencias a un objeto desaparecen cuando sale del entorno en el que se ha creado, o si le asignamos una referencia a nulo.

El recolector periódicamente libera la memoria ocupada por los objetos que no se van a necesitar más, es un barredor de marcas que escanea dinámicamente la memoria de Java buscando objetos, marcando aquellos que han sido referenciados.

Después de investigar todos los posibles paths de los objetos, los que no están marcados (esto es, no han sido referenciados) se les conoce como basura y son eliminados.

Con el método gc de la clase System, se obliga a la recuperación de los recursos libres del sistema.
Java controla el recolector de elementos no utilizados del sistema, es un servicio que reclama de forma automática la memoria que no se utiliza.

1.7 Secuencia de uso de un objeto.
El objeto creado como instancia de una clase, cuando se libera, ejecuta el método finalize de la clase.
Este método existe por defecto.

Ese método se ejecuta siempre de forma predeterminada antes de liberar el objeto.
Por lo tanto todas aquellas acciones que sean imprescindibles realizar antes de que se destruya el objeto se deben realizar en ese método.

Por ejemplo realizar el cierre de archivos, o de una conexión con base de datos.
Para finalizar el uso de un objeto se establece a Nulo, y a partir de ahí la referencia al mismo no es posible.
Código:
Objeto = null;


También podemos preguntar por
Código:
If (Objeto == null ) ...


Lo que nos permite saber si un objeto sigue haciendo referencia a algún recurso.
El ejemplo que sigue expresa de forma bastante efectiva la secuencia y el funcionamiento del método finalize.
Este es el código principal del ejemplo, donde se crean los objetos para la prueba.
Código:
package tema_24;
public class Main
{
  public static void main(String[] args)
  {
     int Cont = 0;
     while (Cont < 100)
     {
        Nueva Objeto = new Nueva();
        Objeto.MiMetodo();
        Objeto.Sombreado();
     }
     }
}


Y este es el módulo con el código de la clase del ejemplo.
Código:
package tema_24;
public class Nueva
{
  @Override
  public void finalize()
  {
     System.out.println("Se ejecuta el método finalize");
  }
}


Al ejecutarlo podemos observar como se va alternando la ejecución del método finalize, de la clase Nueva.

1.8 Recuperar los recursos utilizados que están libres.
Podemos utilizar el método gc o el runFinalization para dicha tarea.
El método gc está diseñado para la gestión de los recursos liberados en memoria sin utilizarse, dispone de métodos para la gestión y recuperación de dichos recursos.

El recolector de elementos no utilizados realiza un seguimiento de los objetos asignados en la memoria administrada, y los reclama. De forma periódica, el recolector de elementos no utilizados reclama la memoria asignada a los objetos para los que no existen referencias válidas.

La recolección de elementos no utilizados se produce de forma automática, cuando una solicitud de memoria no puede satisfacerse utilizando la memoria libre que queda disponible.

La recolección de elementos no utilizados consta de los siguientes pasos:
    El recolector de elementos no utilizados busca los objetos administrados a los que se hace referencia en el código administrado.
    El recolector de elementos no utilizados intenta finalizar los objetos a los que no se hace referencia.
    El recolector de elementos no utilizados libera los objetos a los que no se hace referencia y reclama la memoria utilizada por estos objetos.


Durante la recolección de elementos no utilizados, el recolector no liberará un objeto si encuentra una o varias referencias al mismo en el código administrado.

El recolector de elementos no utilizados no reconoce, sin embargo, las referencias a objetos desde el código no administrado y puede liberar objetos que se estén utilizando exclusivamente en código no administrado, a menos que se le impida hacerlo de forma explícita.


Autor del curso: casiopea


Normas del foro
Aprende a postear correctamente usando las etiquetas
Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

¿como puedo obtener un dato de un radiobutton

jose mansilla Programación para dispositivos móviles 0 Jueves 27 Sep 2018 16:08 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Ayuda con TestNG Parametrico en java netbeans

baltigo Java 0 Sábado 30 Jun 2018 01:37 Ver último mensaje
El foro no contiene ningún mensaje nuevo

COmo puedo entrar a los Menus de una Verifone V...

manuelomeli Temas generales 0 Miércoles 23 May 2018 19:58 Ver último mensaje
El foro no contiene ningún mensaje nuevo

AYUDA: COMO RECONECTO VB6 A MYSQL SIN PERDER LA...

rjaguin Visual Basic y VBA 2 Miércoles 09 May 2018 22:27 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Publicar Aplicación web JAVA en tomcat

Irvin Java Web 1 Viernes 13 Oct 2017 17:54 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,