1
00:00:00,840 --> 00:00:02,400
Hola y bienvenidos a esta elección.

2
00:00:02,400 --> 00:00:06,760
A continuación vamos a ver el tema de la clase Object en Llada están listos.

3
00:00:06,810 --> 00:00:07,290
Vamos

4
00:00:10,040 --> 00:00:15,980
bien como primer paso cerramos cualquier proyecto que tengamos abierto damos clic derecho Claws y vamos

5
00:00:15,980 --> 00:00:21,860
a crear un nuevo proyecto damos un enfile ni proyecto seleccionamos lleva Maiden ya la aplicación damos

6
00:00:21,860 --> 00:00:24,890
clic en Next y el nombre del proyecto va a hacer ejercicio

7
00:00:27,700 --> 00:00:32,280
clase Object y la depositamos en la carpeta de cursos.

8
00:00:32,300 --> 00:00:37,070
Diagonal lleva el nombre de GRUB hoy va a ser MX con GM globalmente.

9
00:00:37,550 --> 00:00:48,350
La versión 1.0 y dejamos el nombre del paquete vacío y damos fuguen finalizar bien como siguiente paso

10
00:00:48,350 --> 00:00:52,760
vamos a crear una clase que es la clase que vamos a estar comparando cuando trabajemos con la clase

11
00:00:52,790 --> 00:00:53,250
obvie.

12
00:00:54,080 --> 00:00:59,480
Así que sobre nuestro proyecto damos un derecho new Java class el nombre de la clase va a ser empleado

13
00:00:59,960 --> 00:01:05,220
y la depositamos en el paquete de dominio y luego en finalizar

14
00:01:08,020 --> 00:01:09,430
quitamos estos comentarios

15
00:01:16,120 --> 00:01:22,960
ampliamos nuestro código y vamos a agregar los siguientes atributos de nombre y sueldo a nuestra clase

16
00:01:22,960 --> 00:01:24,250
de empleado.

17
00:01:24,310 --> 00:01:32,930
Van a ser de tipo privado el primer atributos de tipo string llamado nombre y el siguiente atributo

18
00:01:35,040 --> 00:01:38,090
es privado de tipo Nobol llamado sueldo.

19
00:01:38,580 --> 00:01:43,830
Posteriormente agregamos un constructor que va inicializar este objeto utilizando los dos atributos

20
00:01:45,000 --> 00:01:50,010
así que creamos un constructor público recibe los dos argumentos

21
00:01:52,760 --> 00:01:59,380
de nombre y sueldo respectivamente y los vamos a utilizar para inicializar los atributos de nuestra

22
00:01:59,380 --> 00:02:05,360
clase el atributo de nombre y el atributo de sueldo

23
00:02:10,000 --> 00:02:16,800
ahora vamos a agregar los métodos jet set de cada atributo damos un derecho Intercorp

24
00:02:19,660 --> 00:02:29,050
damos clic en generar Guedea acceder y seleccionamos los dos atributos.

25
00:02:29,100 --> 00:02:33,240
Hasta aquí es mucho de lo que hemos trabajado con nuestras clases pero en esta lección cómo vamos a

26
00:02:33,240 --> 00:02:36,060
trabajar también con conceptos de la clase Object.

27
00:02:36,390 --> 00:02:44,450
Vamos a sobreescribir los métodos destruí y quals y Skout así que vamos a hacer lo siguiente damos el

28
00:02:44,450 --> 00:02:48,210
derecho insert y vamos a sobreescribir.

29
00:02:48,220 --> 00:02:53,170
El método autodestruyen de la clase obvie este método nuestro en Yale hemos trabajado en elecciones

30
00:02:53,170 --> 00:02:58,390
anteriores pero hasta este momento vamos a entender por completo cómo funciona este método autodestruye

31
00:02:58,990 --> 00:03:03,880
realmente lo que vamos a hacer es sobreescribir el método string de la clase Object.

32
00:03:04,570 --> 00:03:10,210
Así que estamos heredando este método pero si lo escribimos entonces podemos modificar el comportamiento

33
00:03:10,210 --> 00:03:16,300
por default de la clase obvie seleccionamos los dos atributos que queremos mandar a imprimir y damos

34
00:03:16,300 --> 00:03:17,660
Figa en general.

35
00:03:18,010 --> 00:03:22,660
Podemos observar que no se agrega la notación de Berruguete para indicar que estamos escribiendo el

36
00:03:22,660 --> 00:03:29,350
método de la clase obvie la firma del método es públic regresa un objeto de tipo string el método se

37
00:03:29,350 --> 00:03:34,690
llama autodestruyen no recibe ningún argumento y posteriormente el cuerpo del método únicamente lo que

38
00:03:34,690 --> 00:03:37,090
hace es regresar una cadena.

39
00:03:37,090 --> 00:03:45,210
Si vamos a la implementación por default de la clase Objet podemos dar clic derecho digamos que nave

40
00:03:45,220 --> 00:03:52,800
gay y damos siguen gatos super Implementation en dado caso que no habría este código.

41
00:03:52,800 --> 00:03:57,630
Entonces pueden revisar el Java Doc directamente en Internet ya que esta documentación es el mismo que

42
00:03:57,630 --> 00:04:04,670
está publicado en Java doc del JDK así que podemos observar que la implementación definida en la clase

43
00:04:04,670 --> 00:04:11,360
Object es decir en la clase padre de la clase empleado es este código en el cual imprime el nombre de

44
00:04:11,360 --> 00:04:11,930
la clase.

45
00:04:12,110 --> 00:04:18,770
Posteriormente agrega una arroba y posteriormente lo que hace es concatenar el valor del jazz de nuestra

46
00:04:18,770 --> 00:04:19,330
clase.

47
00:04:19,590 --> 00:04:25,520
Ahora el valor de Jacob es un número que está relacionado con la ubicación de memoria de nuestra clase

48
00:04:26,080 --> 00:04:31,160
pero solamente en este caso hablando de la implementación de la clase obvie nosotros vamos a implementar

49
00:04:31,160 --> 00:04:38,290
a continuación también el método Jarkov y va a ser diferente si damos clic sobre el método Jacob podemos

50
00:04:38,290 --> 00:04:40,030
observar que este es un método nativo.

51
00:04:40,120 --> 00:04:45,460
Esto quiere decir que este método no podemos observar la implementación ya que depende del sistema operativo

52
00:04:45,670 --> 00:04:48,220
y la plataforma en la cual estemos trabajando.

53
00:04:48,220 --> 00:04:55,360
Pero básicamente este método Jacob va a regresar un número único para cada objeto que se cree.

54
00:04:55,520 --> 00:05:00,020
Así que esa es la implementación de la clase padre y eso es lo que estamos haciendo es sobrescribir

55
00:05:00,290 --> 00:05:03,110
el método string de la clase padre de la clase obvie.

56
00:05:03,110 --> 00:05:07,730
Por lo tanto ya no vamos a observar la dirección de memoria de la clase padre sino que vamos a ver la

57
00:05:07,730 --> 00:05:10,250
clase empleado con los atributos de nombre y sueldo.

58
00:05:10,280 --> 00:05:16,010
Si quisiéramos ver además la dirección de memoria entonces tendríamos que hacer lo siguiente Super Punto

59
00:05:16,410 --> 00:05:23,050
string y con eso estaríamos viendo primero la dirección de memoria de nuestro objeto es decir el valor

60
00:05:23,050 --> 00:05:28,630
de Jarkov implementado por la clase obvia y posteriormente estamos concatenando los valores de los atributos

61
00:05:28,810 --> 00:05:35,770
de nuestra clase que estamos implementando así que esa es la definición del método destruí que básicamente

62
00:05:35,800 --> 00:05:41,590
regresa una representación en una cadena de los valores de nuestro objeto y en cualquier momento que

63
00:05:41,590 --> 00:05:42,400
mandemos a llamar.

64
00:05:42,400 --> 00:05:48,250
Este método entonces imprime el estado de nuestro objeto ya que imprime los valores de los atributos

65
00:05:48,400 --> 00:05:50,810
de nuestra clase.

66
00:05:50,840 --> 00:05:57,200
Por otro lado lo que vamos a hacer es implementar ahora los métodos y quals y Skout estos dos métodos

67
00:05:57,200 --> 00:06:02,690
son como métodos hermanos y aunque el compilador no nos va a marcar error si es que no implementamos

68
00:06:02,750 --> 00:06:09,020
ambos métodos la recomendación de lapida IAVA nos indica que debemos de implementar el método ICASS

69
00:06:09,290 --> 00:06:11,060
y a la vez el método scout.

70
00:06:11,510 --> 00:06:15,290
Si vamos a implementar uno entonces tenemos que implementar ambos.

71
00:06:15,290 --> 00:06:17,090
Esto debido a que tiene varias ventajas.

72
00:06:17,090 --> 00:06:23,480
Por ejemplo en algoritmos de ordenamiento si agregamos esta clase utilizando el API de conexión que

73
00:06:23,480 --> 00:06:29,750
vamos a ver posteriormente y aplicamos algunos algoritmos de ordenamiento entonces se utilizan los métodos

74
00:06:29,960 --> 00:06:34,480
y las hijas scout para ordenar los objetos dentro de una colección.

75
00:06:34,520 --> 00:06:39,940
Sin embargo eso lo vamos a ver más adelante pero para ello es que se utilizan estos métodos y las hijas

76
00:06:39,940 --> 00:06:45,060
scout para ello es que los vamos a sobreescribir bien así que vamos a sobreescribir el método y quals

77
00:06:45,500 --> 00:06:51,530
para sobreescribir lo podemos escribir directamente el código o podemos apoyarnos decide la implementación

78
00:06:51,530 --> 00:06:55,010
de cada idea puede ser distinta pero el objetivo es el mismo.

79
00:06:55,010 --> 00:07:01,160
Así que en este caso vamos a apoyarnos de Lide vamos a dar clic derecho Intercorp y seleccionamos la

80
00:07:01,160 --> 00:07:08,030
opción de ICAS y Scout podemos observar que nos selecciona ambos métodos nos muestra ambos métodos y

81
00:07:08,030 --> 00:07:13,760
nos pregunta cuáles son los campos que vamos a incluir en la comparación de estos objetos ya que el

82
00:07:13,760 --> 00:07:20,600
método y las hijas scout lo que va a hacer internamente es comparar los objetos de tipo empleado así

83
00:07:20,600 --> 00:07:25,490
que vamos a comparar dos objetos de tipo empleado y seleccionamos los atributos que vamos a comparar.

84
00:07:25,490 --> 00:07:31,340
En este caso vamos a seleccionar los dos atributos así que seleccionamos los dos atributos tanto para

85
00:07:31,340 --> 00:07:39,370
el método y quals y para el método Jacquot y damos clic en generar y podemos observar que el Método

86
00:07:39,520 --> 00:07:46,420
Scout lo que hace es un método público y regresa un entero así que el Método Scout lo que hace es regresar

87
00:07:46,450 --> 00:07:50,440
un valor de tipo entero que representa al objeto que se cree.

88
00:07:50,440 --> 00:07:56,740
En cierto momento habrá cómo consigue un valor único lo que hace es utilizar un algoritmo muy simple

89
00:07:57,390 --> 00:08:01,360
en el cual utiliza el concepto de hojas que básicamente es cualquier número.

90
00:08:01,390 --> 00:08:06,310
En este caso le asignó el valor de 7 pero puede ser cualquier otro número y con este número lo que se

91
00:08:06,310 --> 00:08:09,600
intenta es conseguir un valor único para cada objeto.

92
00:08:09,610 --> 00:08:16,000
Posteriormente hace una operación en este caso utiliza el valor de 59 simplemente para tratar de generar

93
00:08:16,090 --> 00:08:17,440
un número único.

94
00:08:17,440 --> 00:08:24,850
Así que utiliza 59 por el valor de hojas más el Jakobs del valor del atributo de nuestra clase utilizando

95
00:08:24,880 --> 00:08:32,100
el atributo de nombre y para obtener el scout del atributo de nombre utiliza la clase Objects y manda

96
00:08:32,110 --> 00:08:37,810
llamar El Método Scout y la pausa como parámetro el valor del atributo nombre.

97
00:08:37,810 --> 00:08:43,210
Hasta aquí lleva cierto valor numérico el valor de jazz hasta este momento utilizando el atributo de

98
00:08:43,220 --> 00:08:49,930
nombre y la siguiente línea lo que hace es utilizar ahora el atributo de sueldo y le aplica una operación

99
00:08:49,930 --> 00:08:55,300
binaria la cual estamos observando y con esta operación binaria también lo que se intenta es conseguir

100
00:08:55,510 --> 00:08:59,630
un valor entero único para cada uno de los objetos que estamos utilizando.

101
00:08:59,650 --> 00:09:04,540
Aquí lo importante es que interviene el atributo de sueldo para realizar esta operación.

102
00:09:04,810 --> 00:09:09,280
Realmente no es necesario realizar esta operación binaria simplemente que lo que se está intentando

103
00:09:09,310 --> 00:09:12,860
es conseguir un valor único para cada objeto que se cree.

104
00:09:12,910 --> 00:09:17,160
Ahora existe la posibilidad de que este valor realmente no sea único.

105
00:09:17,290 --> 00:09:22,960
Este valor entero que se regrese podría repetirse para diferentes objetos de tipo empleado que se creen.

106
00:09:22,960 --> 00:09:29,350
Sin embargo la idea es conseguir lo más posible y evitar que los valores cascó se repitan para los objetos

107
00:09:29,350 --> 00:09:30,820
que vamos a estar creando.

108
00:09:30,820 --> 00:09:35,830
Aunque es posible que se repitan con esta operación que se está realizando se disminuye al máximo la

109
00:09:35,830 --> 00:09:41,210
posibilidad de que se repita el número entero para diferentes objetos de la clase empleados.

110
00:09:41,290 --> 00:09:43,110
Así que básicamente el método Jacquot.

111
00:09:43,210 --> 00:09:47,640
La idea es conseguir un valor entero único para cada objeto que estamos creando.

112
00:09:47,680 --> 00:09:52,810
Por ello es que están involucrados los atributos de nombre y sueldo ya que se supone que para cada objeto

113
00:09:52,810 --> 00:09:57,070
de tipo empleado los valores de nombre y sueldos son distintos.

114
00:09:57,070 --> 00:10:02,960
Si llegaran a ser iguales entonces el casco debería de ser idéntico eso lo vamos a poner en práctica

115
00:10:03,200 --> 00:10:09,060
cuando creamos la clase de prueba de este ejercicio y como siguiente paso se define el método y cuál

116
00:10:09,080 --> 00:10:15,400
es el método y cuál es lo que va a hacer es regresar un Juliano y este Juliano indica si los objetos

117
00:10:15,400 --> 00:10:18,560
que se están comparando son iguales o son diferentes.

118
00:10:18,700 --> 00:10:23,590
Así que por un lado se va a comparar el objeto en el cual estamos trabajando y va a recibir como argumento

119
00:10:23,800 --> 00:10:26,110
un objeto con el cual se va a comparar.

120
00:10:26,170 --> 00:10:28,630
Primero se compara la referencia.

121
00:10:28,630 --> 00:10:33,330
Si las referencias son iguales entonces quiere decir que los objetos son iguales.

122
00:10:33,520 --> 00:10:35,950
Así que en este momento regresaríamos verdadero.

123
00:10:35,950 --> 00:10:40,210
Ahora si el objeto que estamos recibiendo es igual a nulo entonces quiere decir que los objetos son

124
00:10:40,210 --> 00:10:45,250
distintos ya que en este caso no habría nada más que comparar los objetos serían distintos.

125
00:10:45,250 --> 00:10:51,490
Por lo tanto regresaríamos falso también comparamos si las clases el tipo de clase que se está utilizando

126
00:10:51,540 --> 00:10:54,900
se está comparando son distintos entre cada uno de los objetos.

127
00:10:54,970 --> 00:10:58,360
Entonces regresamos falso ya que tampoco no hay nada más que comparar.

128
00:10:58,420 --> 00:11:03,610
Las clases son distintas y si hemos llegado hasta este punto de la comparación entonces lo que tenemos

129
00:11:03,610 --> 00:11:08,740
que hacer es una conversión del objeto que estamos recibiendo que es de tipo Object lo vamos a convertir

130
00:11:08,770 --> 00:11:14,860
a tipo empleado para que podamos comparar estos objetos así que le asignamos a una variable de tipo

131
00:11:14,860 --> 00:11:21,720
empleado llamada Poder esto de igual manera todo lo hizo el IDE para realizar esta comparación y pregunta

132
00:11:21,870 --> 00:11:26,160
si el valor de sueldo es diferente al sueldo del otro objeto que estamos recibiendo.

133
00:11:26,370 --> 00:11:31,920
Si los valores son diferentes entonces regresa falso ya que los objetos con un atributo que tenga distinto

134
00:11:32,150 --> 00:11:35,580
quiere decir que el contenido de los objetos son distintos.

135
00:11:35,580 --> 00:11:41,730
En dado caso de que sean iguales entonces continúa con la comparación y ahora pregunta utilizando el

136
00:11:41,730 --> 00:11:44,010
método de la clase objects.

137
00:11:44,130 --> 00:11:49,530
Pregunta si el atributo de nuestra clase que estamos comparando con la otra clase que estamos recibiendo.

138
00:11:49,680 --> 00:11:54,750
Si estos valores de nombre son diferentes entonces regresa falso.

139
00:11:54,750 --> 00:12:00,150
De lo contrario si llegamos hasta este punto de la comparación quiere decir que los atributos de sueldo

140
00:12:00,210 --> 00:12:01,530
y nombre son iguales.

141
00:12:01,590 --> 00:12:07,140
Por lo tanto lo que va a hacer es regresar verdadero así que podemos observar que este método es realmente

142
00:12:07,140 --> 00:12:12,110
lo que está haciendo es comparar los valores de los atributos de la clase empleado.

143
00:12:12,270 --> 00:12:18,780
Por ello están comparándose el atributo de sueldo y nombre respectivamente y si los atributos son iguales

144
00:12:18,990 --> 00:12:20,820
entonces regresamos verdadero.

145
00:12:21,000 --> 00:12:23,460
Si son diferentes entonces regresamos falso.

146
00:12:23,460 --> 00:12:30,120
En esto podemos resumir el método y únicamente compara si los atributos de nuestra clase del objeto

147
00:12:30,120 --> 00:12:35,430
que estamos comparando con los valores del objeto que estamos recibiendo si son iguales entonces regresa

148
00:12:35,430 --> 00:12:42,140
verdadero y si la comparación de cada uno de los atributos es diferente entonces regresa falso.

149
00:12:42,300 --> 00:12:48,000
Hasta aquí la explicación de cada uno de los métodos y estos métodos están definidos en la clase obvie.

150
00:12:48,210 --> 00:12:54,400
Así que por ello todos estos métodos destruyen a Skout e igual los estamos escribiendo de la clase o

151
00:12:54,440 --> 00:12:59,490
bien bien vamos a detener hasta aquí este vídeo y en el siguiente vídeo vamos a crear la clase de prueba

152
00:12:59,640 --> 00:13:02,340
para poner en práctica estos métodos.

153
00:13:02,460 --> 00:13:03,900
Nos vemos en el siguiente vídeo.

154
00:13:03,900 --> 00:13:04,500
Saludos.
