1
00:00:00,210 --> 00:00:00,840
Bienvenidos.

2
00:00:00,930 --> 00:00:06,300
Vamos a ver un ejemplo un poco más completo de qué vamos a crear nuestra propia clase decepción para

3
00:00:06,300 --> 00:00:06,930
los usuarios.

4
00:00:06,990 --> 00:00:13,080
La idea es tener una lista de usuarios de ejemplo con el nombre del apellido Leidy y buscar por el Heidy.

5
00:00:13,170 --> 00:00:19,170
Si no lo encuentra lanzar esta acepción, por ejemplo, le podríamos llamar usuario no encontrado excepción.

6
00:00:19,260 --> 00:00:24,000
Entonces la lanzamos y en el controller advances la manejamos y la capturamos.

7
00:00:24,100 --> 00:00:28,710
Bien, lo primero es crear la clase usuario en un package en el package impase.

8
00:00:29,740 --> 00:00:35,770
Entonces creamos un package por acá Models, punto Domain o dominio.

9
00:00:36,010 --> 00:00:38,590
Finalizar una clase usuario.

10
00:00:41,580 --> 00:00:44,160
Finalizar y con atributos

11
00:00:55,440 --> 00:01:01,760
con el Edy nombre y apellido, el Heidy del tipo Intea pero de referencia comenzando con mayúscula Integer.

12
00:01:01,980 --> 00:01:03,420
Bien lo que transceptor.

13
00:01:05,160 --> 00:01:09,150
Por acá source generarte tran setter marcamos todos.

14
00:01:10,530 --> 00:01:16,170
Y también vamos a crear un constructor para inicializar el Heidy, nombre y apellido.

15
00:01:16,710 --> 00:01:22,920
Entonces por acá con clic derecho como siempre Source y General Constructor usando campos.

16
00:01:24,180 --> 00:01:26,370
Usando Fields generar.

17
00:01:27,620 --> 00:01:28,700
Quitamos el súper.

18
00:01:29,870 --> 00:01:34,040
Y también dar la opción para crear al usuario sin parámetros, sin argumentos.

19
00:01:34,370 --> 00:01:38,600
Entonces también con sources generar constructor desde class.

20
00:01:40,080 --> 00:01:49,650
Perfecto generar, quitamos el comentario y el super y lo dejamos así y ordenamos en souffle formato,

21
00:01:50,070 --> 00:01:50,610
estamos listo.

22
00:01:50,640 --> 00:01:58,100
Guardamos nuestra clase servis también la creamos en el РАМКАХ base dentro del package servicies.

23
00:01:59,520 --> 00:02:05,820
Entonces vamos a crear este nuevo package servicies y dentro la clase servis con su interfaz.

24
00:02:05,880 --> 00:02:17,580
Pero primero la interfaz hace click derecho New Interfaz usuario servis OK, finalizando con dos métodos

25
00:02:17,640 --> 00:02:23,010
con dos métodos del contrato, primero para listar y segundo para buscar por el Heidy

26
00:02:28,050 --> 00:02:34,290
bien listar del tipo list importamos de llebaba útil usuario importamos.

27
00:02:39,910 --> 00:02:44,710
Obtener por Heidy y recibe el Heidy, el tipo Intelligent.

28
00:02:46,150 --> 00:02:56,440
Ahora creamos esta clase con click derecho new class usuario servis implementas de implementar, agregamos

29
00:02:56,440 --> 00:03:02,380
la interfaz, buscamos usuario servis, la seleccionamos o qué?

30
00:03:02,540 --> 00:03:03,220
Finalizar.

31
00:03:04,660 --> 00:03:12,850
Lo primero es decorar o marcar esta clase como componente de sprint, pero el tipo servis importamos

32
00:03:13,570 --> 00:03:14,950
perfecto y ya está registrada.

33
00:03:15,070 --> 00:03:20,620
De esta forma, después se puede inyectar en el controlador y la podemos utilizar con inyección dependencia

34
00:03:21,820 --> 00:03:22,470
private

35
00:03:25,870 --> 00:03:28,480
y la lista del tipo list de usuario.

36
00:03:28,810 --> 00:03:34,330
Pero bien, en este ejemplo, al igual que en los anteriores, los datos de ejemplo lo guardamos en

37
00:03:34,330 --> 00:03:40,300
un ArrayList, en una lista o en un arreglo, porque todavía no hemos visto nada demasiado bueno, pero

38
00:03:40,390 --> 00:03:45,730
en un ejemplo real y después lo vamos a ver, que los registros, los usuarios lo vamos a buscar con

39
00:03:45,730 --> 00:03:50,570
una consulta, ya sea con JPA, con internet o con JS, en fin.

40
00:03:50,620 --> 00:03:56,860
Pero a la tabla a la hace rato, pero por ahora un simple ArrayList y lo tenemos que inicializar en

41
00:03:56,860 --> 00:04:03,100
el constructor, entonces con clic derecho source y creamos un constructor desde la superclase.

42
00:04:04,950 --> 00:04:05,300
O qué?

43
00:04:05,430 --> 00:04:06,090
Generar.

44
00:04:10,000 --> 00:04:11,080
Inicializamos lista

45
00:04:13,960 --> 00:04:20,410
ArrayList, bueno, puede ser una ArrayList, pero también podemos utilizar el helpers, como hemos

46
00:04:20,410 --> 00:04:27,190
visto a raíz y el método as list y separado por Koba podemos agregar los objetos, pero con ArrayList

47
00:04:27,280 --> 00:04:37,750
en este caso sería con el método ADD entonces puntó add new usuario y pasamos el Heidy nombre bello

48
00:04:38,710 --> 00:04:44,290
bueno y datos de ejemplo y Leidy bueno 1 nombre cualquiera.

49
00:04:45,220 --> 00:04:51,310
Por ejemplo Andrés Guzmán y así vamos a crear varios más.

50
00:04:55,210 --> 00:04:56,530
Por ejemplo 1/7.

51
00:05:05,900 --> 00:05:11,330
Por ejemplo, a Pepa García hablalo.

52
00:05:14,140 --> 00:05:20,590
A Lucy, por ejemplo, Fernandes y en fin, datos de ejemplo.

53
00:05:27,700 --> 00:05:32,220
A Paco Rodríguez y a Juan, por ejemplo.

54
00:05:33,870 --> 00:05:34,440
Perfecto.

55
00:05:34,540 --> 00:05:37,470
Bueno, el estar super simple, retornamos la lista.

56
00:05:42,400 --> 00:05:43,620
El buscar por ahí.

57
00:05:44,840 --> 00:05:47,600
Primero inicializamos, por ejemplo, usuario

58
00:05:50,150 --> 00:05:51,880
resultado igual null.

59
00:05:52,580 --> 00:05:54,890
Entonces por defecto no encuentra.

60
00:05:54,950 --> 00:06:01,520
Pero recorremos con un Ford, con un foreach de Yaba y vamos preguntando por el Heidy si son iguales.

61
00:06:01,610 --> 00:06:07,160
Lo encontramos, se lo asignamos a resultado y al final retornamos resultado.

62
00:06:07,250 --> 00:06:14,210
En vez de nul importante que return retorne resultado independiente se null si no lo encontró o si lo

63
00:06:14,210 --> 00:06:14,720
encontró.

64
00:06:15,410 --> 00:06:20,870
Mientras en de cada elemento usuario es del tipo usuario.

65
00:06:21,110 --> 00:06:23,390
Le vamos a llamar un 2 punto.

66
00:06:23,570 --> 00:06:26,270
La lista disputo lista.

67
00:06:27,250 --> 00:06:34,990
Entonces cada elemento de la lista usuarios la vamos tirando yaca, preguntamos con uniforme, entonces

68
00:06:34,990 --> 00:06:42,550
si él un punto Heidi, guet, Heidi, que del tipo integer es igual y es.

69
00:06:43,580 --> 00:06:44,330
Y Heidy?

70
00:06:46,920 --> 00:06:51,600
Asignamos resultado, entonces el resultado sería igual a U.

71
00:06:51,840 --> 00:06:55,260
El usuario, el usuario encontrada y hacemos un break.

72
00:06:56,690 --> 00:06:57,560
Para salir del foro.

73
00:06:57,830 --> 00:06:59,030
Y por qué nos sigue tirando?

74
00:06:59,330 --> 00:07:01,880
Y finalmente retornamos bien.

75
00:07:01,940 --> 00:07:04,340
Por qué usamos equals y no igual?

76
00:07:04,910 --> 00:07:08,030
Porque también podría ser gué Tait di igual.

77
00:07:10,580 --> 00:07:11,120
Perfecto.

78
00:07:11,210 --> 00:07:14,450
Eso va a funcionar en algunos contextos, no siempre.

79
00:07:14,550 --> 00:07:22,550
Bueno, primero siempre va a funcionar cuando el tipo auto, por ejemplo, esto acá es del tipo primitivo

80
00:07:22,640 --> 00:07:25,370
hint y no de tipo referencia, ya que es un valor.

81
00:07:25,460 --> 00:07:28,940
Si es un valor y no es un objeto perfecto, lo podemos igualar.

82
00:07:29,540 --> 00:07:34,790
Pero como es del tipo de referencia iniciando con mayúscula, es una clase, un tipo de referencia.

83
00:07:34,850 --> 00:07:36,830
Lo tenemos que comparar con equals.

84
00:07:37,040 --> 00:07:41,840
Pero también hay algunos casos que también se puede comparar con igual, pero solamente cuando nuestra

85
00:07:41,840 --> 00:07:48,980
lista de objeto no supera los 128 elementos, ya que esos 128 elementos, la máquina virtual de Java

86
00:07:49,070 --> 00:07:53,840
lo guarda en el caché, lo guarda como valores, pero también como objetos, entonces se pueden comparar

87
00:07:53,840 --> 00:07:54,420
con el igual.

88
00:07:54,470 --> 00:07:58,880
Pero por ejemplo, si no está lista de usuario, por ejemplo, tenemos 1000 usuarios.

89
00:07:58,950 --> 00:08:06,110
Bueno, en realidad más de 128 usuarios ya tenemos que utilizar el método equals, entonces siempre

90
00:08:06,110 --> 00:08:12,620
con el igual va a comprar por instancia, por objetos, por referencia y al ser del tipo Integer una

91
00:08:12,620 --> 00:08:15,110
referencia, un objeto compara estas dos instancias.

92
00:08:15,170 --> 00:08:19,460
Y bueno, en general son distintas porque son diferentes instancias o referencia.

93
00:08:19,550 --> 00:08:26,420
Lo que si es igual es el valor, pero como explicaba, si son 128 o menos 127 o menos, estos valores

94
00:08:26,510 --> 00:08:31,580
lo guardan un caché y se pueden comparar con el igual, mientras que con el método Discours solamente

95
00:08:31,670 --> 00:08:34,280
evalúa o compara por valor y no por instancia.

96
00:08:34,370 --> 00:08:39,600
Entonces con el igual, igual por referencia y por el equals, por el valor que tiene el objeto tellas

97
00:08:39,710 --> 00:08:44,780
es resumiendo que que sea del tipo integer, iniciando con mayúscula un tipo de referencia.

98
00:08:44,870 --> 00:08:48,650
Se comparan los valores con el cuarzo y si es primitivo con igual, igual.

99
00:08:48,740 --> 00:08:53,180
Y si queremos comparar las referencias el objeto usamos también él igual igual.

100
00:08:53,240 --> 00:08:57,890
Pero bueno, es un tema más de la base de yaba, tipos de referencia, tipos primitivos.

101
00:08:57,980 --> 00:08:59,210
En fin, ya estamos listo.

102
00:08:59,300 --> 00:09:02,330
Guardamos y continuamos en la siguiente clase.
