Hola te saluda nuevamente Ubaldo Acosta.
Espero que estés listo para comenzar con esta elección.
A continuación vamos a estudiar el tema de contexto estático.
Están listos.
Vamos contexto estático y contexto dinámico
comencemos esta lección diferenciando el contexto estático del contexto dinámico para comenzar a crear
objetos de una clase.
Primero se debe cargar la clase en memoria por medio de lo que se conoce como class loader cargador
de clases.
Aquí entra por primera vez el concepto de contexto estático y podrá ser utilizado hasta que la clase
se elimine de la memoria que normalmente ocurre cuando se detiene el proceso de la máquina virtual de
Java es decir que la clase está cargada durante todo el proceso de la ejecución de nuestra aplicación.
Una vez que la clase ya está cargada en memoria es posible empezar a crear objetos de dicha clase.
A esto se le conoce como contexto dinámico ya que en este momento ya es posible crear objetos y empezar
a interactuar entre los mismos.
En resumen el contexto estático se carga primero que el contexto dinámico y por lo tanto también las
clases que vayamos a utilizar se cargan en primera instancia posteriormente se crea el contexto dinámico
y una vez que ya está cargado el contexto dinámico ya se pueden crear los objetos de las clases que
se hayan cargado en memoria como podemos observar en la lámina el contexto estático tiene una mayor
duración que el contexto dinámico y de hecho el contexto estático incluye el contexto dinámico pero
no al revés el operador dis solo tiene uso cuando se ha creado un objeto de una clase por lo tanto no
es posible utilizar este operador dentro del contexto estático el contexto estático lo podemos trabajar
en el código Java por medio de la palabra estática la cual explicaremos a continuación.
Palabra estática
podemos utilizar la palabra Static para interactuar con el contexto estático por ejemplo si definimos
un atributo o un método como estatico lo que estamos indicando es que el atributo o método pertenecen
a la clase y no al objeto por ejemplo si queremos un atributo sin usar la palabra Static que es como
normalmente los definimos cada que creamos un objeto.
También se creará una variable asociada al objeto que se crea.
Pero si definimos el atributo como estático estamos indicando que el atributo sólo se crea una vez.
Así que sin importar cuántos objetos se creen sólo habrá una variable la cual se asocia a la clase y
no al objeto.
Y si un objeto accede al valor de la variable estática leerá el mismo valor que los demás objetos.
Y si un objeto modifica el valor estático todos los demás objetos accederán al mismo valor ya que este
valor está almacenado en la clase y no en los objetos de dicha clase.
Utilizando la palabra Static es posible interactuar con la clase sin necesidad de haber creado un objeto
de la misma.
Por ejemplo podemos acceder a atributos y o métodos sin necesidad de haber instancias o ningún objeto
de la clase que deseamos utilizar con el uso de la palabra estática ya sea en el atributo o en el método
que deseamos acceder.
Podremos usar directamente el atributo o método sin necesidad de generar un objeto de la clase sólo
colocando el nombre de la clase el operador punto y finalmente el nombre del atributo.
Un método estático definido en la clase normalmente los atributos o métodos estáticos.
Si deseamos que sean accedidos desde otras clases deberán contener el modificador de acceso públic para
que no tengan ningún problema en ser accedidos.
Por lo tanto los atributos o métodos marcados con la palabra Static se les conoce como miembros de la
clase o métodos de clase ya que pertenecen a la clase y no a los objetos que se crean de dicha clase
palabra Static y palabra dis
Veamos a continuación.
Un ejemplo del uso del operador dis y también mencionando el contexto estático
bien una vez que hemos mencionado el contexto estático y el contexto dinámico podemos aclarar lo siguiente
el operador dice asocia con el contexto dinámico y debido a que el contexto estático carga primero que
el contexto dinámico el operador dis no funciona dentro del contexto estático.
Es por esta razón que en el método main o cualquier otro método estático no es posible utilizar el operador
dis así que esto se muestra en el código y si quisiéramos utilizar este operador nos marcaría un error
de compilación ya que el operador dis no puede ser utilizado dentro del contexto estático.
Sin embargo un método dinámico sí puede acceder a un método estático ya que este contexto ya ha sido
creado.
Ahora podemos acceder a un método dinámico desde un método estático siempre y cuando creemos un nuevo
objeto.
De esta manera es que un objeto puede acceder tanto a los métodos no estáticos como a los métodos estáticos.
Sin embargo un método estático aunque pueda ser accedido por medio de un objeto.
Lo correcto es que utilice el nombre de la clase y no el nombre del objeto ya que recordemos que los
métodos estáticos o atributos estáticos pertenecen a la clase y no a los objetos
ejemplos de código estático Veamos a continuación un ejemplo para entender a más detalle el contexto
estático por un lado estamos creando la clase ejemplo Attic y por otro lado estamos creando la clase
persona
así que en este código vamos a ver un pequeño ejemplo de cómo podemos trabajar con la palabra static.
Por un lado estamos definiendo un atributo de tipo estático llamado contador de personas al declarar
esta variable como estática lo que buscamos es que cada vez que creamos un objeto de tipo persona vamos
a incrementar el valor de esta variable.
Esto lo podemos lograr utilizando el constructor de la clase por ello dentro del constructor de esta
clase lo que vamos a hacer es que cada vez que se manda a llamar este constructor es decir cada que
creamos un objeto entonces incrementamos el contador de personas y debido a que esta variable se asocia
a la clase y no a cada uno de los objetos entonces podremos saber cuántos objetos de tipo Persona se
han creado contabilizándose con nuestra variable estática la cual se está asociando a la clase.
Así cada vez que mandamos a llamar el constructor de la clase podemos incrementar la variable Contador
personas con cada llamada al constructor.
Una vez que se ha incrementado esta variable estática este valor aplica para todos los objetos creados.
Por lo tanto cada que incrementamos esta variable puede ser consultada por todos los objetos que creemos
y de esta manera es que esta variable no comienza desde cero.
Cada que creamos un nuevo objeto sino que se queda en el último valor y se incrementa una vez más.
Esto debido a que esta variable pertenece a la clase y no a los objetos una vez que ya tenemos el nuevo
valor podemos entonces asignar el nuevo valor al atributo Heydi persona así.
En esta línea podemos asignar el valor del contador actual y cada que estamos creando un objeto cada
que llamamos a este constructor.
El Heydi persona va a ser diferente para cada uno de los objetos que creemos.
Es decir que este valor va a ser único por cada objeto.
Otra sección importante de este código es la línea 27 en donde estamos creando el método GET Contador
personas para poder consultar cuántos objetos de tipo Persona se han creado y también podemos observar
que este método es estático.
Ahora en el método main el cual también es estático vamos a hacer uso de la clase persona en primer
lugar creamos un objeto de tipo Persona y asignamos el valor de Juan al atributo de nombre con ayuda
del constructor de la clase así que aquí creamos un nuevo objeto se manda a llamar el constructor de
nuestra clase el cual inicialmente está en cero sin embargo en este momento lo incrementamos y una vez
que lo hemos incrementado en la persona la primera vez que creamos un objeto de tipo persona se le asigna
el valor de 1.
Debido a que lo hemos incrementado anteriormente y cada vez que queremos un nuevo objeto como se muestra
entonces este contador se va a ir incrementando y le va a asignar siempre un valor único a nuestro Heydi
persona.
Aquí algo importante mencionar es que desde que estamos utilizando la palabra neo quiere decir que ya
estamos trabajando con el contexto dinámico así que de esta manera es como vamos a combinar el contexto
estático pero también podremos crear objetos es decir empezar a trabajar con el contexto dinámico y
por lo tanto al crear el objeto persona.
El constructor de la clase se encarga de asignar el Heydi persona.
En esta línea con un valor único al incrementar la variable Contador persona la cual al ser estática
permite que el conteo de objetos persona sea el correcto y sea único para cada uno de los objetos que
se están creando de tipo personal.
En este código estamos omitiendo la implementación del método string para la clase persona el cual se
debe agregar para observar el estado del objeto impreso.
En esta línea.
Finalmente una vez que ya se han terminado de crear los objetos de tipo personal respectivos podemos
mandar a imprimir el número total de objetos personas que se han creado con ayuda del método GET Contador
personas y aquí es donde podemos observar la anotación que hemos platicado para mandar a llamar.
Un método estático público de una clase basta con colocar el nombre de la clase seguido del nombre del
método estático es decir que aquí no estamos utilizando la variable P 1 sino que directamente estamos
utilizando el nombre de la clase punto.
El método estático o el atributo estático de la clase ya que como hemos comentado los métodos estáticos
pertenecen a la clase y no a los objetos.
Sin embargo también podríamos acceder por medio de la variable P 1.
También podríamos mandar a llamar el método GET Contador personas.
Sin embargo esto no es recomendable sino que los métodos estáticos sí los vamos a utilizar de esta forma
se recomienda que utilicemos el nombre de la clase punto el nombre del método estático.
Posteriormente vamos a ver que existe otro tipo de notación también para el contexto estático pero de
momento si estamos manejando de esta manera el código tenemos que especificar el número de la clase
junto el nombre del método estático.
Con esto concluimos el uso del contexto estático en Java.