Fecha y hora actual: Jueves 17 Ene 2019 04: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.17 - Clases, fases

Responder al Tema

Índice del Foro > Visual Basic .NET > Curso VB .NET - Tema 1.17 - Clases, fases

Autor Mensaje
Tesis
Administrador


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

Mensaje Publicado: Martes 17 Feb 2009 13:03

Título del mensaje: Curso VB .NET - Tema 1.17 - Clases, fases

Responder citando

Curso de programación en .NET - Tema 1.15 - Clases, fases

1. Clases, fases.

1.1 Objetivos del tema.

Desarrollar y comprender las distintas fases por las que pasa un objeto desde que se inicializa hasta que se borra o se elimina del programa.

1.2 Introducción.
Sabemos como crear código en nuestra clase, en las dos caras del mismo, como control de los datos que se asignan a la misma, y como parte de los métodos de la misma.

Pero también tenemos que saber que la vida de una clase pasa por distintas etapas, conociéndolas podremos diseñar mejor y obtener el mejor rendimiento de la misma.
Hay que tener presente que cuando se crea un objeto a partir de la clase que hemos escrito, ese objeto va a pasar por varias fases.

  • Inicialización
  • Ejecución
  • Finalización.


Y esas fases conviene recordarlas a la hora de la explotación de la misma, pues habrá algunas tareas que nos interesen se desarrollen exclusivamente en ese instante, y no posteriormente.

1.3 Iniciar la clase, crear una instancia.
Cuando se crea un objeto a partir de una clase, el primer paso es instanciar ese objeto, con una u otra sintaxis, se dispone de un constructor, un método especializado, que se ejecuta de forma automática al crearse el objeto de la clase en cuestión.

En Java es el método que coincide con el nombre de la clase, en VB se denomina New.

Código:
Clase Ejemplo
   Metodo Constructor()
   Fin Metodo
   Metodo Cuenta(Inicio como entera, Final Como entera)
      .. / ..
   Fin Metodo
Fin Clase


En esa fase disponemos de la posibilidad de reclamar datos necesarios para la correcta ejecución de la clase, y es donde debemos o podemos realizar el control de los mismos.

Código:
Metodo Constructor(Incremento como entera)
   Si Incremento es distinto de 0
      VariableInterna = Incremento
   Fin Condicion
Fin Metodo


También podemos optar por no reclamar ninguna información y arrancar con los datos de nuestra clase inicializados a los valores que nosotros consideremos oportunos.

Código:
Clase Ejemplo
   Crear VariableInterna Entera = 1
   Metodo Constructor()
   Fin Metodo
   Metodo Cuenta(Inicio como entera, Final Como entera)
      .. / ..
   Fin Metodo
Fin Clase


Cualquiera de las dos soluciones es correcta, cual utilizar vendrá marcado por las circunstancias en las que se tenga que utilizar el objeto.

Código:
Clase Ejemplo
   Crear VariableInterna Entera
   Metodo PrimeraInstanciaSolamente()
      VariableInterna = 1
   Fin Metodo
   Metodo Constructor()
      Fin Metodo
   Metodo Cuenta(Inicio como entera, Final Como entera)
      .. / ..
   Fin Metodo
Fin Clase


1.4 Proteger nuestra clase.
Se trata de bloquear el constructor sin argumentos convirtiéndolo en private.
Es en muchas ocasiones imprescindible, sobre todo cuando deseamos exigir datos en la inicialización de la misma, y no deseamos que se inicie una copia de nuestra clase de forma accidental.

Código:
Clase Ejemplo
   Crear VariableInterna Entera
   Metodo PrimeraInstanciaSolamente()
      VariableInterna = 1
   Fin Metodo
   Privado Metodo Constructor()
   Fin Metodo
   Metodo Cuenta(Inicio como entera, Final Como entera)
      .. / ..
   Fin Metodo
Fin Clase


De esa forma no es visible y no se puede utilizar, y es imposible que se use accidentalmente.
Normalmente es muy habitual que necesitemos varios escenarios posibles en el inicio de un objeto, por lo que la solicitud de datos en el constructor se puede volver algo complicada.

En las clases existe el concepto de sobrecarga, esto significa poder escribir varias versiones de un mismo método, - más adelante se expondrá el tema - , ese es el camino más adecuado para poder solventar el problema de los distintos escenarios posibles en el inicio de una clase para los objetos que se derivan de ella.

En el siguiente ejemplo, podemos observar como se han escrito varias versiones del constructor en el cual se ha declarado distintas versiones de la misma variable, String, Integer, aunque no tiene porque cambiar el nombre de la variable.

Código:
Clase Ejemplo
   Privado Metodo Constructor()
   Fin Metodo
   Privado Metodo Constructor(EscenarioUno como String)
   Fin Metodo
   Privado Metodo Constructor(EscenarioDos como Entera)
   Fin Metodo
Fin Clase


Pero también se puede crear con distintas variables en cada uno de ellos.

Código:
Clase Ejemplo
   Privado Metodo Constructor(EscenarioUno como String)
   Fin Metodo
   Privado Metodo Constructor(EscenarioUno como String, OtraVariable como Entera)
   Fin Metodo
Fin Clase


Podemos observar como en este ejemplo se mantiene el nombre de la variable, pero se añade una nueva en la segunda versión del mismo.

1.5 Ejecución de la clase.
La clase no se ejecuta, se ejecuta una instancia de la misma, en el objeto que de ella se crea.
El punto de inicio es el constructor de la misma.

La ejecución del objeto, se iniciará en una fase inicial cuando se declara y se inicializa el mismo, y en segundas fases cuando se reclama la ejecución de cualquiera de sus métodos.

La finalización de la ejecución de cualquiera de sus métodos no implica que deje de ser utilizado el objeto y que éste deje de consumir recursos.

La ejecución permanecerá activa hasta que se ejecute una asignación de "nothing" o "null", al objeto que de ella se deriva, o bien hasta que desaparezca el mismo de la memoria por finalizar el procedimiento o programa que lo reclama, o bien finalicemos la misma con el método de finalización previsto en el lenguaje.

Tengamos presente que mientras no se ejecute una de estas acciones, el objeto estará consumiendo recursos del sistema.

1.6 Finalización de la clase.
Las clases, sus objetos, mientras están en uso, están consumiendo recursos, lo que se traduce en memoria del sistema, por lo que conviene que cuando un objeto deje de ser útil lo liberemos, puesto que eso permitirá disponer de más recursos al sistema.

Los sistemas suelen incluir un sistema de inspección que investiga que objetos no están siendo utilizados, para liberar el espacio que ocupan, pero eso implica que hasta que esa situación se produce, el recurso está ocupado y sin poder ser utilizado por otros programas. De ahí la importancia de finalizar el uso del objeto cuando dejemos de utilizarlo en nuestro programa, para evitar esa ocupación inadecuada de recursos, sin que tenga que ser la finalización del procedimiento o del programa el que acabe con él, lo que es una demora en el tiempo.

La finalización de un objeto se puede conseguir con la ejecución de un método de finalización, runFinalize, o Finalize, en cada lenguaje tendrá un nombre.

El método de finalización puede pertenecer a la misma clase, o bien al sistema.

El "recolector de basura", normalmente pertenece al sistema en uso, no a la clase que se diseña, al objeto que está en uso.

Código:
System.Recolectar
Clase.Finalizar


Sin embargo hay que asegurarse de que ese método se ejecute, ya que podría darse la situación de que no fuera llamado por el sistema, por lo tanto hay que comprobar en el lenguaje en uso si esa situación puede darse.

También conviene comprobar si el lenguaje utilizado dispone de métodos que obliguen a la hora de la finalización de la ejecución del programa a la inspección de la existencia de métodos de finalización sin ejecutar todavía.

1.7 Ejercicios propuestos.
Los ejercicios los proponemos en el tema personalizado del lenguaje, Java o Visual Basic.

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

Dudas al instanciar clases heredadas

MMCA Java 0 Viernes 26 Ene 2018 21:34 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Clases

angeljonh C, C#, Visual C++ 2 Miércoles 30 Ago 2017 06:20 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Curso de PHP-WordPress avanzado

wordpressadict PHP 1 Domingo 27 Nov 2016 19:59 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Curso fundamentos de programación

Yaser Programación en general 0 Miércoles 18 May 2016 00:28 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Curso de Desarrollo en Inteligencia Artificial

JL Iglesias Feria Programación de juegos o videojuegos 7 Miércoles 02 Dic 2015 18:20 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,