1
00:00:01,020 --> 00:00:02,400
Bienvenidos a esta elección.

2
00:00:02,400 --> 00:00:06,120
A continuación vamos a revisar el tema de la creación de objetos en Java.

3
00:00:06,120 --> 00:00:07,070
Están listos.

4
00:00:07,110 --> 00:00:14,200
Vamos bien vamos a seguir utilizando nuestro proyecto de creación clases objetos y aunque podríamos

5
00:00:14,200 --> 00:00:21,160
agregar un método main dentro de esta clase no recomendable y lo que vamos a ver más comúnmente es que

6
00:00:21,160 --> 00:00:27,970
se cree otra clase para poner a prueba esta plantilla que hemos creado esta clase que hemos creado.

7
00:00:28,090 --> 00:00:34,480
Así que sobre Defour package vamos a dar clic derecho y vamos a crear una nueva clase y esta clase se

8
00:00:34,480 --> 00:00:42,900
va a llamar prueba personas va a ser el mismo nombre del proyecto la ubicación va a ser en Sors package

9
00:00:43,690 --> 00:00:49,870
el nombre del paquete vamos a dejarlo en blanco y podemos observar la ruta completa donde está depositando

10
00:00:49,930 --> 00:00:54,670
esta clase y damos fuguen finalizar.

11
00:00:54,930 --> 00:01:01,660
Vamos a quitar estos comentarios con control e íbamos a agregar un método main a esta clase así que

12
00:01:01,660 --> 00:01:06,610
escribimos públic Static void main y presionamos la tecla de tabulador.

13
00:01:06,610 --> 00:01:10,810
Si por alguna razón no funcionara este Charcot entonces hay que escribir este código

14
00:01:14,180 --> 00:01:22,560
damos un formato y el código que se debe escribir es públic espacio Static espacio bait espacio Main.

15
00:01:22,670 --> 00:01:28,470
Posteriormente definimos el argumento que vamos a recibir que debe de ser un arreglo de tipo cadena.

16
00:01:28,730 --> 00:01:33,860
Posteriormente vamos a ver el tema de arreglos pero esta es la sintaxis para definir una variable de

17
00:01:33,860 --> 00:01:36,460
tipo arreglo string.

18
00:01:36,480 --> 00:01:42,690
Posteriormente abrimos y cerramos corchetes y el nombre de nuestro argumento o parámetro que estamos

19
00:01:42,690 --> 00:01:48,360
recibiendo en este método se llama Arcs pero este es cualquier nombre podría ser cualquier otro.

20
00:01:48,360 --> 00:01:55,110
Posteriormente abrimos y cerramos nuestras llaves y este es el cuerpo del método main y básicamente

21
00:01:55,110 --> 00:01:59,610
este método main lo necesitamos para ejecutar nuestra clase.

22
00:01:59,610 --> 00:02:05,040
Obviamente ya lo hemos venido trabajando bastante pero poco a poco vamos a ir definiendo más características

23
00:02:05,280 --> 00:02:10,350
de este método para que les vaya quedando más claro conforme avancemos en la explicación de cada uno

24
00:02:10,350 --> 00:02:16,380
de estos elementos bien así que lo que vamos a hacer ahora dentro de este método main es utilizar la

25
00:02:16,380 --> 00:02:24,020
plantilla que hemos definido la clase de persona ahora para poder utilizar esta plantilla.

26
00:02:24,020 --> 00:02:30,200
Necesitamos crear objetos según lo hemos comentado hasta este momento y para crear un nuevo objeto de

27
00:02:30,200 --> 00:02:38,440
nuestra plantilla vamos a hacer lo siguiente ponemos entre comentarios creación de un objeto de tipo

28
00:02:38,680 --> 00:02:45,160
Persona son varios pasos los que se deben de realizar en primer lugar vamos a declarar nuestra variable

29
00:02:45,160 --> 00:02:52,360
de tipo personal ya que la clase que hemos creado es un nuevo tipo como utilizáramos int Nobol o tipo

30
00:02:52,360 --> 00:02:53,160
String.

31
00:02:53,500 --> 00:03:00,880
La clase persona es un nuevo tipo que podemos utilizar así que ponemos persona y definimos el nombre

32
00:03:00,880 --> 00:03:07,270
de nuestra variable hasta este momento únicamente hemos indicado el tipo de nuestra variable y posteriormente

33
00:03:07,270 --> 00:03:14,890
definimos el nombre de la variable por ejemplo persona 1 punto y coma así que hasta este momento únicamente

34
00:03:14,890 --> 00:03:24,390
se ha definido la variable de tipo persona ahora para asignarle un valor a esta variable entonces necesitamos

35
00:03:24,570 --> 00:03:31,170
instancias de nuestra clase persona instancias significa lo mismo que crear un objeto así que vamos

36
00:03:31,170 --> 00:03:42,760
a ver el siguiente código distanciando entre paréntesis creando un objeto de la clase persona así que

37
00:03:42,760 --> 00:03:49,120
para instancias un objeto de nuestra clase persona vamos a utilizar la sintaxis Nioh y posteriormente

38
00:03:49,120 --> 00:03:52,140
definimos el tipo que queremos instancias.

39
00:03:52,150 --> 00:03:59,380
En este caso queremos crear un objeto de la clase persona abrimos y cerramos paréntesis punto y coma

40
00:03:59,890 --> 00:04:05,620
así que esta línea de código va a crear un objeto de nuestra clase persona pero necesitamos asignarlo

41
00:04:05,650 --> 00:04:07,350
a nuestra variable persona 1.

42
00:04:07,390 --> 00:04:13,300
De lo contrario no vamos a poder acceder a este objeto así que esta línea lo que va a hacer es lo siguiente

43
00:04:13,830 --> 00:04:23,630
de nuestra plantilla persona que este es el nombre de la clase la palabra lo que va a ser es que va

44
00:04:23,630 --> 00:04:31,830
a crear un nuevo objeto de tipo Persona pero necesitamos ahora que nuestra variable persona 1

45
00:04:35,730 --> 00:04:41,390
apunte al objeto que se acaba de crear y para que pueda acceder al objeto que se acaba de crear.

46
00:04:41,580 --> 00:04:48,450
Entonces hacemos lo siguiente la variable persona 1 que hemos declarado debe de recibir el valor donde

47
00:04:48,450 --> 00:04:55,020
se ha creado este objeto así que del lado derecho lo que estamos haciendo es creando un objeto y el

48
00:04:55,020 --> 00:05:01,920
valor donde se ha creado este objeto entonces se le proporciona a la persona 1 para que podamos acceder

49
00:05:01,980 --> 00:05:08,130
a este objeto que se ha creado y es que entonces a través de la variable Persona 1 vamos a poder acceder

50
00:05:08,280 --> 00:05:10,340
al objeto persona que se ha creado.

51
00:05:10,350 --> 00:05:11,400
Vamos a hacer esto

52
00:05:15,190 --> 00:05:19,780
accedemos al objeto persona y llamamos al método

53
00:05:23,970 --> 00:05:32,340
desplegar nombre quien si este método aquí me equivoqué deberá de ser desplegar nombres ya que despliega

54
00:05:32,340 --> 00:05:39,120
los nombres de los atributos de nuestra clase así que cambiamos este valor debe de ser desplegar nombres

55
00:05:41,780 --> 00:05:48,110
así que llamamos al método desplegar nombres y para ello vamos a utilizar nuestra variable Persona 1

56
00:05:49,090 --> 00:05:54,140
y observamos que si ponemos punto podemos acceder tanto a los atributos que hemos definido en nuestra

57
00:05:54,140 --> 00:06:01,040
clase los atributos de apellido y nombre pero también podemos acceder al método desplegar nombres.

58
00:06:01,040 --> 00:06:05,510
Así que si damos enter Podemos se va en automático el IDE nos complementa.

59
00:06:05,510 --> 00:06:12,110
Desplegar nombres pone los paréntesis para indicar si se le tiene que enviar información al método desplegar

60
00:06:12,110 --> 00:06:14,810
nombres pero en este caso no requiere de ninguna información.

61
00:06:14,810 --> 00:06:20,810
Este método ya que simplemente va a desplegar la información de los atributos que tengamos en esta clase

62
00:06:21,620 --> 00:06:23,660
así que guardamos cambios y ejecutamos

63
00:06:31,570 --> 00:06:37,130
y podemos ver que en este momento ya podemos ejecutar nuestra clase se manda llamar el método desplegar

64
00:06:37,130 --> 00:06:43,370
nombres y lo que observamos es la impresión de los atributos de nuestra clase puesto que ese es el código

65
00:06:43,370 --> 00:06:51,180
que agregamos dentro de nuestra clase mandamos en primera consola los valores de nombre y apellido y

66
00:06:51,180 --> 00:06:57,600
podemos observar que nombre contiene el valor de Nul la palabra reservada Null significa que un objeto

67
00:06:57,630 --> 00:07:04,440
en Java no contiene ningún valor no se ha definido un valor aún así que Null significa ausencia de valor

68
00:07:04,860 --> 00:07:09,870
así que por ello tanto el nombre como el apellido tienen el valor de Null ya que podemos observar que

69
00:07:09,870 --> 00:07:12,400
en ningún momento hemos asignado un valor.

70
00:07:12,570 --> 00:07:18,820
Por lo tanto cuando se mandan a imprimir estos valores entonces su valor es ausencia de valor o Null

71
00:07:20,660 --> 00:07:23,940
pero con esto ya podemos acceder al objeto que se ha creado.

72
00:07:24,020 --> 00:07:31,730
En esta línea a través de la variable Persona 1 así que en resumen la variable persona 1 no es un objeto

73
00:07:31,910 --> 00:07:39,320
sino es una variable y esta variable apunta al objeto que se ha creado pero ahora lo que queremos hacer

74
00:07:39,560 --> 00:07:45,080
es modificar los valores para que no se despliegue el valor de Null o ausencia de valor sino que muestre

75
00:07:45,110 --> 00:07:46,490
algún valor.

76
00:07:46,490 --> 00:07:51,080
Así que para ello vamos a hacer lo siguiente modificamos

77
00:07:55,690 --> 00:08:01,640
los valores de los atributos del objeto persona para poder acceder a los valores y modificarlos.

78
00:08:01,690 --> 00:08:07,840
Vamos a hacer lo siguiente persona 1 punto y podemos observar que podemos acceder directamente a los

79
00:08:07,840 --> 00:08:09,760
atributos de nuestra clase.

80
00:08:10,150 --> 00:08:15,070
Esto vamos a ver más adelante que no es una buena práctica pero debido a que estamos iniciando con IAVA

81
00:08:15,310 --> 00:08:20,710
vamos a utilizar de momento esta sintaxis y posteriormente vamos a ver el tema de encapsulamiento para

82
00:08:20,710 --> 00:08:27,250
que podamos utilizar las mejores prácticas en IAVA así que de momento accedemos al atributo de nuestra

83
00:08:27,250 --> 00:08:34,390
clase llamado nombre y vamos a asignarle un nuevo valor por ejemplo el valor de Juan y podemos observar

84
00:08:36,300 --> 00:08:38,910
que nuestro atributo nombre es de tipo String.

85
00:08:38,910 --> 00:08:45,090
Por lo tanto cuando estamos accediendo a este atributo le tenemos que asignar un valor de tipo string

86
00:08:45,840 --> 00:08:52,050
y ahora vamos a modificar también el valor de apellido utilizando nuestra variable Persona 1 punto accedemos

87
00:08:52,050 --> 00:08:52,800
al apellido

88
00:08:56,150 --> 00:08:58,670
y le asignamos el valor de Pérez.

89
00:08:58,670 --> 00:09:00,890
Ahora vamos a volver a imprimir los valores

90
00:09:05,640 --> 00:09:11,480
mandamos a llamar de nueva cuenta el método desplegar nombres antes de mandar a imprimir vamos a imprimir

91
00:09:11,510 --> 00:09:16,850
un salto de línea así que mandamos a llamar el método LNA para que no se agregue un salto de línea

92
00:09:20,420 --> 00:09:26,610
y podemos observar en la primera prueba los valores fueron nulos pero en esta segunda prueba estamos

93
00:09:26,610 --> 00:09:31,490
accediendo a los valores de Juan en el nombre y apellido Pérez.

94
00:09:31,490 --> 00:09:36,830
Así que con esto ya estamos modificando correctamente los valores de los atributos de nuestra clase.

95
00:09:37,140 --> 00:09:43,680
Ahora hasta este momento lo que hemos hecho es lo siguiente Por un lado se creó la clase persona que

96
00:09:43,680 --> 00:09:44,640
es este archivo

97
00:09:49,360 --> 00:09:58,830
con los dos atributos y con un método desplegar nombres por otro lado lo que hicimos fue crear un nuevo

98
00:09:58,860 --> 00:10:05,730
objeto de tipo persona y por otro lado creamos una variable llamada persona 1 de tipo persona

99
00:10:08,850 --> 00:10:15,540
y esta variable persona 1 apunta al objeto que se ha creado de la clase persona y lo que hizo esta variable

100
00:10:15,540 --> 00:10:22,070
Persona 1 de tipo Persona es que accedió a los atributos de nuestro objeto y los modificó.

101
00:10:22,140 --> 00:10:27,840
Por ello es que cuando se mandó a llamar el método desplegar nombres lo que imprime son los atributos

102
00:10:27,930 --> 00:10:30,910
del objeto y no los valores de la clase.

103
00:10:30,960 --> 00:10:37,470
Básicamente lo que estamos haciendo aquí es que la plantilla de persona crea un objeto a su semejanza

104
00:10:37,800 --> 00:10:44,370
es decir con los atributos y métodos que hemos definido en nuestra plantilla pero los valores no se

105
00:10:44,370 --> 00:10:46,800
están modificando en nuestra clase.

106
00:10:46,800 --> 00:10:51,840
Aquí únicamente tenemos la plantilla sino que los valores se están modificando en el objeto que se ha

107
00:10:51,840 --> 00:10:55,470
creado y se creamos más objetos entonces

108
00:10:58,480 --> 00:11:04,720
cada uno de los objetos tiene acceso a sus propios atributos así que los valores no porque modifiquemos

109
00:11:04,870 --> 00:11:11,320
los valores del objeto que se ha creado en este momento cada uno de los objetos va a tener sus propios

110
00:11:11,320 --> 00:11:17,980
valores así que vamos a escribir el siguiente código para comprobar esto vamos a crear un segundo objeto

111
00:11:24,230 --> 00:11:26,470
creamos un segundo objeto de tipo personal.

112
00:11:26,540 --> 00:11:32,000
Para ello podemos utilizar la misma variable que ya hemos definido o podemos definir una nueva variable

113
00:11:32,330 --> 00:11:39,420
en este caso para hacerlo más sencillo vamos a definir una nueva variable llamada personados y a diferencia

114
00:11:39,420 --> 00:11:45,660
de como lo hicimos en las primeras líneas podemos crear en la misma línea tanto la variable y asignarle

115
00:11:45,660 --> 00:11:51,720
la referencia del nuevo objeto creado así que creamos un nuevo objeto de tipo persona utilizando la

116
00:11:51,720 --> 00:11:56,360
palabra NIU y posteriormente abrimos y cerramos paréntesis.

117
00:11:56,360 --> 00:12:00,960
Esta es la sintaxis para crear nuestro nuevo objeto y el objeto que se está creando.

118
00:12:00,960 --> 00:12:06,570
Asignamos su referencia a la variable personados así que a través de la variable personados es que vamos

119
00:12:06,570 --> 00:12:12,840
a poder acceder al objeto que se está creando en este momento cada que veamos la palabra New es porque

120
00:12:12,840 --> 00:12:17,850
se está creando un nuevo objeto en memoria así que en este momento se crea un nuevo objeto en memoria

121
00:12:18,120 --> 00:12:21,360
y se asigna una referencia en memoria para este objeto.

122
00:12:21,360 --> 00:12:25,540
Así que esta referencia del objeto que se está creando se asigna a la variable persona.

123
00:12:25,650 --> 00:12:30,560
Por ello es que a través de la variable Persona 1 es que pudimos acceder al objeto que se creó.

124
00:12:30,570 --> 00:12:36,830
En esta línea y de igual manera en este momento estamos creando un nuevo objeto se le asigna un valor

125
00:12:36,920 --> 00:12:42,720
en memoria a este objeto que se conoce como referencia y esa referencia se le asigna a la variable Persona

126
00:12:42,720 --> 00:12:47,780
2 para que podamos acceder al objeto que se está creando en este momento.

127
00:12:47,780 --> 00:12:54,320
Así que a través de la variable personados ahora es que vamos a acceder al nombre vamos a asignarle

128
00:12:54,400 --> 00:12:55,000
el valor

129
00:12:57,900 --> 00:13:08,610
de Carla y el apellido le asignamos el valor de Gómez y a través de la variable Persona 2 mandamos a

130
00:13:08,610 --> 00:13:13,620
llamar el método desplegar nombres pero antes de desplegar los nombres vamos a ser lo siguiente imprimimos

131
00:13:13,620 --> 00:13:17,830
también un salto de línea para que no se junte la impresión de estos valores.

132
00:13:17,970 --> 00:13:25,190
Guardamos cambios y ejecutamos y podemos observar en esta prueba lo que estamos observando son los valores

133
00:13:25,190 --> 00:13:27,200
nulos del primer objeto.

134
00:13:27,200 --> 00:13:32,440
Posteriormente se modificaron los valores a Juan Pérez y hemos creado un segundo objeto.

135
00:13:32,510 --> 00:13:38,690
En este segundo objeto tenemos los valores de Karla Gómez así que no se combinaron los valores de Juan

136
00:13:38,690 --> 00:13:43,500
Pérez sino que cada uno de los objetos ahora contiene sus valores.

137
00:13:43,610 --> 00:13:49,250
El primer objeto que se ha creado el cual está referenciado por la variable Persona 1 accede a estos

138
00:13:49,250 --> 00:13:49,820
valores.

139
00:13:49,820 --> 00:13:57,250
Juan Pérez y el segundo objeto que se creó apuntado por la variable Persona 2 contiene los valores de

140
00:13:57,250 --> 00:13:58,560
Karla Gómez.

141
00:13:58,570 --> 00:14:02,770
Así que cada uno de los objetos que se crea tiene sus propios valores.

142
00:14:02,770 --> 00:14:09,400
En resumen lo que hemos hecho es lo siguiente tenemos nuestra clase persona tenemos los atributos y

143
00:14:09,400 --> 00:14:16,690
los métodos y cada vez que utilizamos la palabra Niu es que se crea un objeto así que creamos dos objetos

144
00:14:19,380 --> 00:14:26,220
ya que tenemos en nuestro código dos veces la palabra reservada nio y posteriormente creamos dos variables

145
00:14:26,400 --> 00:14:30,270
para poder acceder a estas referencias de los objetos que se han creado.

146
00:14:30,300 --> 00:14:37,420
Creamos la variable de persona 1 y apunta al objeto que se creó en la primera línea.

147
00:14:37,560 --> 00:14:41,190
La primera vez que se mandó a llamar nio y la persona 2

148
00:14:45,300 --> 00:14:48,150
Accede al segundo objeto que se creó.

149
00:14:48,150 --> 00:14:54,660
En esta línea de código cuando se mandó llamar esteño y cada uno de estos objetos contiene sus valores.

150
00:14:54,660 --> 00:15:01,140
En este caso el primer objeto tiene los valores de Juan Pérez y el segundo objeto tiene los valores

151
00:15:01,140 --> 00:15:05,140
de Karla Gómez y podemos observar que la plantilla no se altera.

152
00:15:05,160 --> 00:15:11,970
Esta contiene la base o la estructura para crear estos objetos pero la plantilla no se modifica lo que

153
00:15:11,970 --> 00:15:15,650
se modifica son los valores de los objetos que hemos creado.

154
00:15:15,750 --> 00:15:21,350
Ahora finalmente un detalle es que estos objetos se depositan en algún lugar de la memoria.

155
00:15:21,420 --> 00:15:28,530
Por ejemplo si ponemos algún valor hexadecimal podríamos decir que es la dirección de memoria 0 x 3

156
00:15:28,530 --> 00:15:33,600
3 3 y este es el valor de memoria donde se encuentra este objeto.

157
00:15:33,600 --> 00:15:39,960
A esta dirección de memoria se le conoce como referencia del objeto y realmente lo que almacena la variable

158
00:15:39,960 --> 00:15:44,780
Persona 1 es el valor de la referencia de la memoria del objeto.

159
00:15:44,910 --> 00:15:48,800
Por ejemplo en este caso el valor de 0 x 3 3 3.

160
00:15:49,050 --> 00:15:55,110
Así que de esta manera es que la variable Persona 1 es que realmente apunta al objeto que se ha creado

161
00:15:55,410 --> 00:16:00,750
en esta dirección de memoria y cada vez que utilizamos la palabra reservada Anneo es que se crea un

162
00:16:00,750 --> 00:16:04,850
objeto y se le asigna una referencia en memoria dinámicamente.

163
00:16:04,950 --> 00:16:07,550
Esto lo hace en automático el compilador de Java.

164
00:16:07,710 --> 00:16:13,620
La máquina virtual de Java y la segunda vez que se mandó llamar la palabra reserva Danio se creó este

165
00:16:13,620 --> 00:16:21,720
segundo objeto y se depositó por ejemplo en la referencia de memoria 0 4 4 4.

166
00:16:21,720 --> 00:16:27,600
Esto es por poner un ejemplo es el nombre de la referencia en memoria y este valor es que realmente

167
00:16:27,600 --> 00:16:30,120
se le asignó a la variable Persona 2

168
00:16:33,970 --> 00:16:39,450
por ello es que esta variable Persona 2 puede acceder al objeto que se creó en esta memoria.

169
00:16:39,520 --> 00:16:45,820
De esta manera es que las variables realmente almacenan la dirección de memoria de los objetos.

170
00:16:45,910 --> 00:16:51,220
Esta característica en otros lenguajes se le conoce como apuntadores ya que podemos observar que la

171
00:16:51,220 --> 00:16:56,300
variable Persona 1 realmente está apuntando a la referencia de memoria del objeto.

172
00:16:56,350 --> 00:17:02,410
Por ello es que almacena este valor de la referencia de memoria y cada vez que creamos un objeto se

173
00:17:02,410 --> 00:17:08,360
le asigna una referencia en memoria y son las variables las que almacenan estas referencias.

174
00:17:08,410 --> 00:17:14,080
Por lo tanto estas variables apuntan al objeto bien poco a poco vamos a ir viendo a más detalle cada

175
00:17:14,080 --> 00:17:19,780
uno de estos elementos pero con esto ya tenemos las bases de tanto la creación de una clase en Java

176
00:17:20,170 --> 00:17:26,170
y la creación de objetos a su vez también modificamos cada uno de los valores de nuestros objetos y

177
00:17:26,170 --> 00:17:32,680
podemos acceder a la modificación de los valores de estos atributos de cada objeto bien eso es todo

178
00:17:32,680 --> 00:17:35,210
por esta elección y nos vemos en el siguiente vídeo.

179
00:17:35,290 --> 00:17:35,890
Saludos.
