1
00:00:00,600 --> 00:00:02,580
Hola y bienvenidos a esta elección.

2
00:00:02,580 --> 00:00:06,950
A continuación vamos a ver el tema de contexto estático en Java están listos.

3
00:00:07,020 --> 00:00:11,510
Vamos bien vamos a hacer nuestro proyecto

4
00:00:15,320 --> 00:00:22,020
derecho Clowes y vamos a crear un nuevo proyecto damos un Infinit Project dejamos los valores por default

5
00:00:22,050 --> 00:00:28,040
Java huid Maybe y ya va Application y el nombre del proyecto va a ser ejemplo estatico

6
00:00:32,630 --> 00:00:35,650
y lo depositamos en la carpeta de cursos diagonal Java

7
00:00:39,210 --> 00:00:43,440
quitamos el nombre del paquete y dejamos los demás valores por default y damos siguen finalizar

8
00:00:46,220 --> 00:00:52,070
bien vamos a crear una nueva clase damos clic derecho new Java class y el nombre de la clase va a ser

9
00:00:52,070 --> 00:00:57,510
ejemplo estático dejamos los demás valores por default y damos clic en Finalizar

10
00:01:01,720 --> 00:01:09,680
y vamos a crear una segunda clase llamada persona damos clic derecho sobre el default package new Java

11
00:01:09,680 --> 00:01:13,730
class y el nombre de la clase se llama persona.

12
00:01:13,990 --> 00:01:21,030
Dejamos los demás valores por default y damos clic en Finalizar quitamos los comentarios y vamos a crear

13
00:01:21,030 --> 00:01:27,060
esta clase para poner en práctica el concepto de contexto estático así que agregamos los siguientes

14
00:01:27,060 --> 00:01:28,740
atributos a nuestra clase.

15
00:01:28,740 --> 00:01:31,140
Ya vamos a aplicar el concepto de encapsulamiento.

16
00:01:31,230 --> 00:01:38,710
Por lo tanto vamos a utilizar Privat como modificador de acceso para declarar nuestros atributos declaramos

17
00:01:38,740 --> 00:01:44,980
un primer atributo llamado Heydi persona este atributo va a almacenar el valor de Leidi que le vamos

18
00:01:44,980 --> 00:01:52,360
a asignar a este objeto de tipo persona cada que creemos un objeto positivamente definimos el atributo

19
00:01:52,360 --> 00:01:59,320
de nombre de persona y vamos a agregar ahora algo nuevo que es un atributo estático así que definimos

20
00:01:59,550 --> 00:02:09,070
y agregamos el modificador Static y ese atributo va a ser el tipo entero llamado Contador personas y

21
00:02:09,070 --> 00:02:16,240
la diferencia entre los atributos que son no estáticos y el atributo estático quiere decir que los atributos

22
00:02:16,240 --> 00:02:23,420
que contienen esta thick se asocia con la clase y no con los objetos.

23
00:02:23,440 --> 00:02:26,980
En cambio los atributos que no contienen esta thick se asocia

24
00:02:29,940 --> 00:02:32,490
con un objeto es decir con la instancia

25
00:02:37,810 --> 00:02:43,150
bien así que para empezar esta es la diferencia los atributos no estáticos se asocian con los objetos

26
00:02:43,150 --> 00:02:49,180
que estamos creando así que por cada objeto creado va a contener diferentes valores en cada atributo

27
00:02:49,180 --> 00:02:56,290
que no es estático pero si el atributo es estático entonces se asocia con la clase y por lo tanto los

28
00:02:56,290 --> 00:03:02,830
objetos se acceden al atributo estático todos los objetos van a poder acceder al mismo valor ya que

29
00:03:02,830 --> 00:03:08,800
este valor se asocia con la clase con la plantilla y no con los objetos bien precisamente lo que vamos

30
00:03:08,800 --> 00:03:14,890
a poner en práctica así que vamos a continuar ahora vamos a agregar un constructor con un argumento.

31
00:03:15,040 --> 00:03:20,830
Así que declaramos un constructor de tipo públic se debe de llamar exactamente igual que nuestra clase.

32
00:03:20,830 --> 00:03:28,330
Por ello ponemos persona en mayúscula recibe un argumento que es el nombre que queremos inicializar

33
00:03:28,750 --> 00:03:34,180
y ahora en este ejercicio lo que vamos a hacer es asignar un nuevo valor de manera automática al atributo

34
00:03:34,180 --> 00:03:39,880
de Heydi persona no lo vamos a proporcionar nosotros sino que cada que creemos un nuevo objeto de tipo

35
00:03:39,880 --> 00:03:46,750
persona por medio del atributo estático Contador personas vamos a asignarle un nuevo valor.

36
00:03:46,750 --> 00:03:55,180
Así que utilizamos el operador dis para acceder al atributo Heydi persona y posteriormente si queremos

37
00:03:55,180 --> 00:04:01,440
acceder al atributo estático utilizando dice Vamos a ver que no es posible no podemos acceder.

38
00:04:01,440 --> 00:04:04,620
No nos muestra el atributo Contador personas.

39
00:04:04,750 --> 00:04:11,500
Esto debido a que el operador dis se asocia con el contexto dinámico y los atributos o métodos estáticos

40
00:04:11,680 --> 00:04:20,470
se asocian con la clase con el contexto estático y lo que significa es lo siguiente Nuestra clase en

41
00:04:20,470 --> 00:04:28,320
este caso la clase de persona primero se debe de levantar en memoria para que pueda ser utilizada así

42
00:04:28,320 --> 00:04:31,140
que en este momento estamos en el contexto estático

43
00:04:35,150 --> 00:04:42,400
y una vez que esta clase ya se levantó en memoria entonces podemos crear objetos y estos objetos entonces

44
00:04:42,400 --> 00:04:44,680
ya estamos en el contexto dinámico

45
00:04:49,550 --> 00:04:55,730
por lo tanto los objetos sí pueden acceder al contexto estático pero el contexto estático no puede acceder

46
00:04:55,730 --> 00:05:02,600
al contexto dinámico ya que aún no ha sido creado así que en este sentido no podemos acceder al contexto

47
00:05:02,840 --> 00:05:08,420
estático no puede acceder al contexto dinámico pero el contexto dinámico sí puede acceder al contexto

48
00:05:08,420 --> 00:05:14,750
estático ya que una vez que se ha cargado la clase en memoria entonces los objetos sí pueden acceder

49
00:05:14,810 --> 00:05:20,990
a la clase es decir al contexto estático y por lo tanto los atributos o métodos estáticos que se declaren

50
00:05:20,990 --> 00:05:26,570
dentro de esta clase se van a asociar con la clase por lo tanto el atributo de Contador persona

51
00:05:30,980 --> 00:05:36,910
se va a asociar con nuestra clase y los objetos lo que van a hacer es acceder a este valor todos los

52
00:05:36,910 --> 00:05:45,710
objetos que se creen van a acceder al mismo valor a diferencia de los atributos no estáticos entonces

53
00:05:45,760 --> 00:05:51,770
eso se asocian con los objetos y cada objeto va a tener su propio valor pero en particular los atributos

54
00:05:51,830 --> 00:05:58,580
estáticos van a compartir su valor con todos los objetos que se creen de tipo persona y por ello es

55
00:05:58,580 --> 00:06:00,030
que el operador dis.

56
00:06:00,140 --> 00:06:06,800
Si recordamos el operador DIS es un apuntador a los objetos al objeto que se está disputando en este

57
00:06:06,800 --> 00:06:12,830
momento pero quiere decir que ya debemos de haber creado el objeto y por lo tanto estamos en el contexto

58
00:06:12,830 --> 00:06:19,160
dinámico pero si estamos en el contexto estático aún no se han creado objetos ya que solamente se ha

59
00:06:19,160 --> 00:06:20,990
cargado la clase en memoria.

60
00:06:20,990 --> 00:06:27,440
Esto quiere decir que el operador dis no puede acceder al contexto estático y por lo tanto no puede

61
00:06:27,440 --> 00:06:32,570
utilizar los atributos o métodos estáticos bien vamos a continuar.

62
00:06:32,570 --> 00:06:39,140
Una vez explicado esto entonces quiere decir que no podemos hacer dis punto Contador persona ya que

63
00:06:39,140 --> 00:06:43,760
nos marcaria error por lo tanto lo que tenemos que hacer es asignarle un nuevo valor

64
00:06:46,370 --> 00:06:52,220
utilizando el atributo estático Contador persona Contador personas.

65
00:06:52,610 --> 00:06:57,650
Sin embargo por cada vez que mandemos a llamar este constructor esto quiere decir que queremos un objeto

66
00:06:57,650 --> 00:07:02,840
de tipo persona entonces le vamos a asignar un nuevo valor para asignarle un nuevo valor.

67
00:07:03,020 --> 00:07:08,750
Vamos a incrementar primero este contador y posteriormente una vez incrementado el valor se lo asignamos

68
00:07:08,750 --> 00:07:15,300
al atributo hoy de persona y de esta manera entonces vamos a inicializar el valor del atributo Heydi

69
00:07:15,320 --> 00:07:23,150
persona y ahora lo que hacemos es inicializar el atributo de nombre y le asignamos el valor de nuestro

70
00:07:23,150 --> 00:07:29,870
argumento que estamos recibiendo bien y ahora generamos los métodos jet set para cada atributo podemos

71
00:07:29,870 --> 00:07:35,380
apoyarnos de lide o en este caso como estamos comenzando vamos a generarlo manualmente así que para

72
00:07:35,390 --> 00:07:42,640
el atributo de Heydi persona vamos a generar su método jet set así que escribimos públic ya que debe

73
00:07:42,660 --> 00:07:51,110
ser un método público va a regresar un tipo entero y el método se va a llamar Get Heydi persona podemos

74
00:07:51,110 --> 00:07:55,330
observar que estamos utilizando la notación de camello o de altas y bajas.

75
00:07:55,330 --> 00:08:00,700
Esto quiere decir que la letra y se debe de convertir en mayúscula y posteriormente por cada palabra

76
00:08:00,700 --> 00:08:08,450
que tengamos también la primera letra comienza en mayúscula y agregamos el prefijo de Get y así que

77
00:08:08,490 --> 00:08:13,830
con esto ya estamos creando el método GET Heydi persona y básicamente este método lo que va a hacer

78
00:08:13,890 --> 00:08:16,360
es regresar el valor de Heydi persona.

79
00:08:16,440 --> 00:08:24,720
Así escribimos Guichón diez Heydi persona recordemos que es opcional pero para que nos vayamos familiarizando

80
00:08:24,720 --> 00:08:30,660
con esta sintaxis vamos a utilizar en todo momento 10 cuando trabajemos con los atributos de nuestra

81
00:08:30,660 --> 00:08:34,620
clase excepto los atributos que sean estáticos.

82
00:08:34,680 --> 00:08:43,620
Ahora definimos el método Zet así escribimos públic Veidt set Heydi persona así que se agrega el prefijo

83
00:08:43,620 --> 00:08:50,610
de set y en este caso si vamos a recibir un parámetro el parámetro va a ser el valor que queremos asignar

84
00:08:52,140 --> 00:08:58,410
en este caso va a ser un argumento de tipo entero llamado Heydi persona y lo vamos a utilizar para inicializar

85
00:08:58,470 --> 00:09:00,840
el valor de atributo de persona

86
00:09:03,590 --> 00:09:08,960
sin embargo debido a que el constructor ya inicia alisó este valor de Heydi persona podríamos omitir

87
00:09:09,020 --> 00:09:15,200
este método así que vamos a ponerlo entre comentarios debido a que este valor Heydi persona se va a

88
00:09:15,200 --> 00:09:19,620
modificar a través del constructor y no a través del método Zep.

89
00:09:19,670 --> 00:09:24,560
Esto quiere decir que no siempre debemos de generar el método jet set sino que dependiendo de lo que

90
00:09:24,560 --> 00:09:31,340
necesitemos es que podemos agregar ciertos métodos incluso en nuestra clase podríamos tener los métodos

91
00:09:31,340 --> 00:09:38,030
G.T y ser para todos los atributos y no utilizarlos ya que debemos de preparar la funcionalidad de nuestra

92
00:09:38,030 --> 00:09:41,290
clase para ser utilizada en un futuro.

93
00:09:41,300 --> 00:09:46,910
Esto quiere decir que nuestro programa no necesariamente va a utilizar todos los métodos pero la plantilla

94
00:09:47,060 --> 00:09:53,330
ya debe estar preparada para ser utilizada en un futuro así que en este caso el método set de persona

95
00:09:53,600 --> 00:09:59,900
no lo vamos a utilizar ya que no vamos a permitir la modificación del valor Heydi persona directamente

96
00:10:00,200 --> 00:10:05,960
sino que se va a modificar únicamente a través del constructor de la clase así que poco a poco vamos

97
00:10:05,960 --> 00:10:09,820
a empezar a tener más claro el uso de los métodos jet set.

98
00:10:09,940 --> 00:10:12,550
No siempre debemos de tener ambos.

99
00:10:12,590 --> 00:10:19,900
Ahora definimos el método G.T para el atributo de nombre así que agregamos públic regresa un valor de

100
00:10:19,900 --> 00:10:30,380
tipo string y se llama Goeth nombre no recibe ningún parámetro y únicamente regresa el valor del atributo

101
00:10:30,380 --> 00:10:41,630
de nombre y agregamos el método C.T Public Veidt set nombre recibe un argumento de tipo string llamado

102
00:10:41,630 --> 00:10:46,850
nombre y lo que hacemos es inicializar los atributos de nombre con este argumento que estamos recibiendo

103
00:10:50,900 --> 00:10:57,330
y ahora vamos a agregar un método para poder acceder al atributo Contador personas no para modificarlo

104
00:10:57,450 --> 00:11:00,410
ya que únicamente se va a modificar a través del constructor.

105
00:11:00,510 --> 00:11:06,240
Por lo tanto no vamos a agregar un método Zet Contador personas pero si queremos saber el valor de este

106
00:11:06,240 --> 00:11:12,600
contador para saber cuántos objetos de tipo personas se han creado ya que cada vez que se crea un objeto

107
00:11:12,600 --> 00:11:19,080
de tipo persona se está incrementando esta variable y como se asocia con la clase entonces y mandamos

108
00:11:19,080 --> 00:11:25,380
a llamar el valor de esta variable Contador persona vamos a saber cuántos objetos se han creado de tipo

109
00:11:25,380 --> 00:11:33,490
persona así que para ello vamos a agregar el siguiente método públic va a ser de tipo Static ya que

110
00:11:33,490 --> 00:11:38,290
lo que va a utilizar en nuestra variable estática Contador personas por lo tanto también vamos a definir

111
00:11:38,290 --> 00:11:44,520
un método estático y este método estático se va a asociar con la clase y no con los objetos.

112
00:11:44,560 --> 00:11:50,020
Sin embargo como hemos comentado el contexto estático se carga primero y posteriormente el contexto

113
00:11:50,020 --> 00:11:50,810
dinámico.

114
00:11:50,950 --> 00:11:58,970
Así que los objetos sí van a poder hacer uso de este método estático así que definimos el método Public

115
00:11:59,040 --> 00:12:10,510
Static regresa un entero llamado Get Contador personas utilizando la notación de altas y bajas y básicamente

116
00:12:10,510 --> 00:12:13,300
lo que hacemos es regresar el valor de Contador personas.

117
00:12:13,510 --> 00:12:19,120
Recordemos que el contexto estático no puede acceder al contexto dinámico por lo tanto no podemos usar

118
00:12:19,120 --> 00:12:22,240
Diz y posteriormente acceder a Contador personas.

119
00:12:22,300 --> 00:12:28,270
Esto no es posible ya que se asocia con el contexto dinámico cuando ya creamos nuestros objetos así

120
00:12:28,270 --> 00:12:34,080
que únicamente vamos a regresar la variable Contador personas bien y con esto ya tenemos nuestra clase.

121
00:12:34,120 --> 00:12:38,640
Por último vamos a agregar el método string vamos a validar manualmente.

122
00:12:38,770 --> 00:12:43,010
Es un método público para que pueda ser accedido desde otras clases.

123
00:12:43,150 --> 00:12:51,490
Regresa un tipo string y el método se va a llamar string no reciben ningún argumento y lo que va a hacer

124
00:12:51,520 --> 00:12:53,980
es regresar los valores de nuestro objeto.

125
00:12:53,980 --> 00:13:00,460
En este caso los atributos no estáticos y también podría regresar el valor del atributo estático así

126
00:13:00,460 --> 00:13:08,780
que vamos a analizar lo siguiente Vamos a crear la cadena retorné vamos a regresar el valor de la persona

127
00:13:11,490 --> 00:13:21,030
con k tenemos el valor de allí persona posteriormente con k tenemos el valor de nombre dos puntos espacio

128
00:13:22,910 --> 00:13:29,000
con k tenemos el valor de nombre y finalmente concatenados también el valor del atributo estático

129
00:13:33,420 --> 00:13:34,650
Contador personas

130
00:13:40,050 --> 00:13:41,140
punto y coma.

131
00:13:41,420 --> 00:13:46,920
Y podemos observar que con esto ya tenemos la definición de nuestro método string para que cuando mandemos

132
00:13:46,920 --> 00:13:51,840
a imprimir un objeto de tipo Persona a consola entonces en automático se va a mandar a llamar.

133
00:13:51,840 --> 00:14:00,390
Este método es opcional agregar la notación de averigue no es necesario pero podemos ver que si le agregamos

134
00:14:00,660 --> 00:14:06,930
entonces en automático también el ítem reconoce que este método se está escribiendo de la clase padre

135
00:14:06,930 --> 00:14:09,990
de todas las clases en Java que es la clase obvie.

136
00:14:10,050 --> 00:14:15,090
Como hemos comentado esto lo vamos a ver a detalle posteriormente ya que debemos de ver más temas para

137
00:14:15,090 --> 00:14:20,580
entender a detalle esto pero para utilizarlo es más sencillo simplemente vamos a escribir este código

138
00:14:21,030 --> 00:14:23,280
y posteriormente lo vamos a explicar a detalle.

139
00:14:23,370 --> 00:14:29,400
Una vez que ya hemos visto los temas de herencia y sobrecarga de métodos bien de momento vamos a utilizarlo

140
00:14:29,430 --> 00:14:35,040
únicamente vamos a dejar hasta aquí este video y en el siguiente video vamos a continuar con la creación

141
00:14:35,100 --> 00:14:38,930
de la prueba del ejemplo estático nos vemos en el siguiente video.

142
00:14:39,030 --> 00:14:39,630
Saludos.
