1
00:00:00,180 --> 00:00:00,840
Bienvenidos.

2
00:00:00,870 --> 00:00:06,010
Continuamos con un ejemplo de facturas para poner en práctica lo que hemos visto de programación orientada

3
00:00:06,010 --> 00:00:06,450
a objetos.

4
00:00:06,550 --> 00:00:11,100
Bueno, vamos a comenzar primero con el legrama clase para tener alguna idea de cuáles son las clases

5
00:00:11,100 --> 00:00:13,170
que participan en nuestra aplicación.

6
00:00:13,230 --> 00:00:14,370
Cómo se relacionan?

7
00:00:14,460 --> 00:00:15,990
Bueno, más o menos lo que hemos visto.

8
00:00:16,050 --> 00:00:22,470
Pero recuerden, siempre es recomendable tener al menos un pequeño diagrama o esquema de las clases,

9
00:00:22,630 --> 00:00:27,000
realizar algún análisis, los atributos y cómo se relacionan una con otra.

10
00:00:27,150 --> 00:00:28,350
Bien, entonces comencemos.

11
00:00:28,530 --> 00:00:37,020
Vamos a crear la clase factura bien, pero también vamos a tener un cliente que compra productos y está

12
00:00:37,020 --> 00:00:38,070
asociado a esta factura.

13
00:00:38,340 --> 00:00:39,120
Entonces por acá.

14
00:00:39,150 --> 00:00:44,550
Cliente Ok, vamos a tener el detalle de la factura.

15
00:00:45,450 --> 00:00:52,270
Ítem factura le vamos a llamar detalle factura, ítem factura o la línea ok.

16
00:00:52,920 --> 00:00:54,360
Luego tenemos el producto.

17
00:00:56,760 --> 00:00:57,540
Voy a ordenar.

18
00:00:58,380 --> 00:01:02,790
Entonces por acá, cliente, por acá vamos a tener factura por acá.

19
00:01:02,880 --> 00:01:05,880
El item o el detalle y el producto.

20
00:01:06,990 --> 00:01:08,190
Pero cómo se relacionan?

21
00:01:08,310 --> 00:01:12,240
Bueno, un cliente compra productos y se le asigna una factura.

22
00:01:12,300 --> 00:01:16,740
Bueno, en realidad un cliente puede tener varias factura porque puede realizar varias compra, pero

23
00:01:16,740 --> 00:01:19,920
siempre una factura se asocia a un solo cliente.

24
00:01:20,040 --> 00:01:24,060
Entonces un cliente mucha factura, una factura, un solo cliente.

25
00:01:24,300 --> 00:01:30,300
A su vez, la factura puede tener asociado varios ítems, es decir, varios productos que se están comprando.

26
00:01:30,390 --> 00:01:35,130
Pero también se maneja la cantidad, porque la cantidad es parte del detalle y no del producto.

27
00:01:35,250 --> 00:01:41,250
Por lo tanto, en el ítem, en el detalle, se va a indicar cuánto compramos de cada producto y te factura.

28
00:01:41,370 --> 00:01:43,890
Se asocia a un producto, a uno solo, cada línea.

29
00:01:43,980 --> 00:01:46,710
Bien, entonces comencemos con los atributos y las relaciones.

30
00:01:46,740 --> 00:01:51,570
No es tan importante colocar los atributos de la relación, porque eso se indica con la flecha, con

31
00:01:51,570 --> 00:01:54,180
la relación, por ejemplo, de asociación.

32
00:01:54,240 --> 00:02:00,330
Si es un atributo o de agregación, un atributo arreglo que contiene varios elementos.

33
00:02:00,420 --> 00:02:00,780
En fin.

34
00:02:00,840 --> 00:02:03,450
Pero bien, igualmente lo vamos a colocar para variar.

35
00:02:03,480 --> 00:02:07,860
Entonces vamos a colocar el atributo, pero también la línea o la asociación.

36
00:02:07,890 --> 00:02:10,440
Partamos primero por factura, entonces factura.

37
00:02:10,560 --> 00:02:12,930
Va a tener un atributo del tipo cliente.

38
00:02:13,440 --> 00:02:16,170
Entonces cliente en tipo.

39
00:02:16,230 --> 00:02:20,050
Como creamos la clase acá por acá tenemos cliente bien.

40
00:02:20,160 --> 00:02:23,580
De forma automática se crea la relación de forma automática.

41
00:02:23,670 --> 00:02:25,350
Pero en realidad no es correcta.

42
00:02:25,500 --> 00:02:28,680
Acá indica que una factura contiene para el cliente y no es así.

43
00:02:28,770 --> 00:02:30,270
Una factura, un solo cliente.

44
00:02:30,420 --> 00:02:35,070
Entonces tenemos que modificar esta relación que genera forma automática de asociación.

45
00:02:35,070 --> 00:02:39,300
En realidad, o también cliente puede agregar varias factura, pero vamos viendo.

46
00:02:39,720 --> 00:02:44,910
Partamos primero por esta asociación, hacemos un clic, pinchamos factura cliente.

47
00:02:45,120 --> 00:02:49,920
Por tanto, factura tiene un atributo de cliente y esta relación la vamos a eliminar.

48
00:02:50,070 --> 00:02:50,640
Esta de acá.

49
00:02:50,770 --> 00:02:53,700
Entonces Flecha Acá hacemos un clic.

50
00:02:53,790 --> 00:02:54,720
La seleccionamos.

51
00:02:55,740 --> 00:02:59,020
Y delito OK, delito Aikido.

52
00:02:59,280 --> 00:03:05,100
Factura tiene un cliente, pero a su vez factura tiene varios iten factura.

53
00:03:05,250 --> 00:03:07,080
Entonces vamos a crear el atributo.

54
00:03:08,390 --> 00:03:15,320
Por acá items, eh, del tipo por acá tenemos ítem factura, pero no es uno solo, es un arreglo.

55
00:03:15,440 --> 00:03:17,810
Entonces colocamos corchete ok.

56
00:03:18,940 --> 00:03:24,670
De forma automática insiste en colocar la relación de fija, pero la vamos a eliminar, las seleccionamos,

57
00:03:24,790 --> 00:03:26,650
pero hay que seleccionar el rombo, cuidado.

58
00:03:27,010 --> 00:03:31,780
A ver, para no equivocarme que es el rompo, esa voy a eliminar 12 con suprimir.

59
00:03:32,200 --> 00:03:35,650
Perfecto, entonces factura contiene varios item.

60
00:03:35,800 --> 00:03:38,950
Voy a seleccionar agregación esta de acá con el rompo.

61
00:03:39,040 --> 00:03:43,900
Hacemos un clic en factura hacia ítem factura, pero se va a volver a generar de forma automática.

62
00:03:43,990 --> 00:03:44,950
Se fijan acá.

63
00:03:45,070 --> 00:03:48,940
Pero me interesaba crear esta nomÃs, así que hay que volver a eliminar.

64
00:03:49,450 --> 00:03:51,700
Entonces por acá seleccionamos el rombo.

65
00:03:53,110 --> 00:03:54,790
Está acá y la eliminamos.

66
00:03:54,910 --> 00:03:55,360
Listo.

67
00:03:56,350 --> 00:04:02,800
Con el rompo indica que Factura tiene varios ítems de factura, una colección y está perfecto.

68
00:04:02,890 --> 00:04:04,660
Se pueden comprar varios productos.

69
00:04:04,720 --> 00:04:07,520
Cada línea, cada ítem se asocia a un producto.

70
00:04:07,690 --> 00:04:09,340
Entonces, ahora ítem factura.

71
00:04:09,520 --> 00:04:11,050
Vamos a crear un atributo.

72
00:04:12,180 --> 00:04:17,480
Del tipo producto buscamos acá producto Hakata.

73
00:04:17,850 --> 00:04:18,260
Ok.

74
00:04:18,840 --> 00:04:24,360
Se fijan también crea una relación de forma automática, pero en realidad necesito que sea de asociación.

75
00:04:24,670 --> 00:04:29,160
Entonces enmarcamos acá, flecha continua acá y esta de acá le quitamos.

76
00:04:30,820 --> 00:04:34,840
ESTAC Suprimir ya tenemos nuestro diseño con las relaciones.

77
00:04:34,960 --> 00:04:38,500
Ahora faltaría los atributos, por ejemplo, producto acá.

78
00:04:38,980 --> 00:04:39,850
Atributo.

79
00:04:41,920 --> 00:04:49,180
El código o Heidy del producto del tipo Tellas, pues set de la clase o primitiva ok, pero también

80
00:04:49,180 --> 00:04:56,700
va a tener un nombre y precio, entonces el new atributo nombre del tipo string.

81
00:04:57,770 --> 00:04:59,000
Por acá buscamos Tric.

82
00:05:00,030 --> 00:05:00,530
Ok.

83
00:05:01,590 --> 00:05:02,040
Y.

84
00:05:03,740 --> 00:05:09,230
Precio del tipo intuyas o 2 golpéeme, puede ser.

85
00:05:10,620 --> 00:05:14,290
Y ten factura, tiene producto y tiene la relación asociación.

86
00:05:14,380 --> 00:05:18,520
Por lo tanto, producto es atributo de liten factura, pero también maneja la cantidad.

87
00:05:19,180 --> 00:05:24,780
Entonces new atributo cantidad del tipo entero.

88
00:05:27,500 --> 00:05:31,510
Acá, creo, la relación no importa, la vamos a eliminar, suprimir.

89
00:05:31,940 --> 00:05:34,790
Es importante que la cantidad esté siempre en el detalle.

90
00:05:35,030 --> 00:05:40,850
Acá hay séptica la cantidad de producto que se está comprando o que se compró nunca en producto, ya

91
00:05:40,850 --> 00:05:43,430
que no es parte del estado interno del objeto producto.

92
00:05:43,520 --> 00:05:46,730
El objeto bruto tiene otras características, siempre la cantidad.

93
00:05:46,860 --> 00:05:48,890
Va, por ejemplo, en inventario.

94
00:05:48,980 --> 00:05:50,270
También podríamos tener inventario.

95
00:05:50,300 --> 00:05:54,860
Bueno, pero es otro tema que maneja la cantidad de producto disponible en la tienda, pero también

96
00:05:54,860 --> 00:06:00,680
tiene la cantidad que se compra en la factura de cada producto y eso después se descuenta del inventario.

97
00:06:00,860 --> 00:06:01,970
Pero nunca van producto.

98
00:06:02,030 --> 00:06:02,990
Producto siempre.

99
00:06:03,020 --> 00:06:09,160
Por general el s cabu o código, el Heidy nombre, precio, color, características.

100
00:06:09,230 --> 00:06:14,630
En fin, el ítem maneja el producto que se está comprando cada ítem y su cantidad del producto.

101
00:06:15,050 --> 00:06:21,560
La factura contiene el cliente que compra, por ejemplo la cantidad de elementos o items que está comprando,

102
00:06:21,650 --> 00:06:25,280
que sería el detalla, pero también un Heidy identificador.

103
00:06:25,400 --> 00:06:28,160
Entonces por acá vamos a crear un atributo.

104
00:06:28,340 --> 00:06:34,190
Típicamente se le conoce como folio, folio de la factura o el Heidy del tipo.

105
00:06:34,280 --> 00:06:36,860
Bueno, depende de la empresa, pero puede ser numérico.

106
00:06:36,920 --> 00:06:40,940
También puede ser un string si está compuesto con caracteres alfanuméricos.

107
00:06:41,030 --> 00:06:43,550
En fin, para el ejemplo del tipo integer.

108
00:06:44,520 --> 00:06:46,700
Entonces Folia OK.

109
00:06:48,180 --> 00:06:51,900
Y siempre los atributos son privat, se fijan con menos.

110
00:06:52,110 --> 00:06:55,260
Qué más podría tener como un título o descripción?

111
00:06:55,770 --> 00:06:57,870
Por ejemplo, compra de artículos de oficina.

112
00:07:00,390 --> 00:07:01,230
Descripción.

113
00:07:02,180 --> 00:07:03,090
Del tipo String.

114
00:07:04,980 --> 00:07:05,330
Ok.

115
00:07:05,610 --> 00:07:08,340
Te meteme cliente y te meten a sus líneas.

116
00:07:08,520 --> 00:07:10,350
TB podría tener una fecha, por ejemplo.

117
00:07:14,100 --> 00:07:15,900
Fecha del tipo Date.

118
00:07:16,200 --> 00:07:23,430
Bueno, acá no me muestra doit se fijan por defecto, pero la indicar acá date el activo y la indico

119
00:07:23,550 --> 00:07:25,440
y colocamos fecha que la fecha de la factura.

120
00:07:25,500 --> 00:07:26,370
Cuando se emite.

121
00:07:26,520 --> 00:07:26,890
Ok.

122
00:07:27,480 --> 00:07:28,290
Y eso sería.

123
00:07:28,470 --> 00:07:33,540
Ahora que tengo listo la factura con los atributos, voy a ordenar bien.

124
00:07:33,630 --> 00:07:34,230
Qué me falta?

125
00:07:34,320 --> 00:07:35,370
Bueno, algunos métodos.

126
00:07:35,400 --> 00:07:36,930
Por ejemplo bueno, Metodio.

127
00:07:36,930 --> 00:07:41,340
Importante lo lletra en setter no es tan importante, aunque igualmente lo podremos colocar, pero se

128
00:07:41,340 --> 00:07:44,820
asume de que van a estar por lo general los mismos constructores.

129
00:07:44,910 --> 00:07:45,570
Entonces.

130
00:07:45,570 --> 00:07:48,810
Como métodos que van en la tercera parte de la clase.

131
00:07:48,870 --> 00:07:52,050
Primero nombre atributos y acá los métodos.

132
00:07:52,830 --> 00:07:56,130
Entonces por acá new operación los métodos.

133
00:07:56,850 --> 00:07:58,800
Por ejemplo calcular total

134
00:08:01,590 --> 00:08:02,610
el tipo de ratón.

135
00:08:02,970 --> 00:08:04,530
Qué objeto va a retornar?

136
00:08:04,630 --> 00:08:07,970
Bueno, el total podría ser un Tobruk por acá, un doble.

137
00:08:08,340 --> 00:08:10,620
Acá podríamos agregar parámetros o argumento.

138
00:08:10,630 --> 00:08:14,550
El método, la visibilidad se pùblico protected private.

139
00:08:14,760 --> 00:08:19,160
Si es húmedo, abstracto, en fin, si es estático y varias configuraciones.

140
00:08:19,230 --> 00:08:25,350
Pero calcular total tiene argumento un método que retorna un doble ok público.

141
00:08:25,620 --> 00:08:26,400
Calcular total.

142
00:08:26,850 --> 00:08:27,690
Qué otro método?

143
00:08:29,030 --> 00:08:31,190
Derecho New Operación.

144
00:08:32,160 --> 00:08:38,760
Ver detalles, ver el detalle completo, la factura, el cliente, su línea, sus productos, en fin,

145
00:08:38,790 --> 00:08:39,240
todo.

146
00:08:39,390 --> 00:08:42,060
Barton nar un tipo string, por ejemplo.

147
00:08:42,450 --> 00:08:44,450
Argumento nada ok.

148
00:08:44,940 --> 00:08:47,370
Se fijan que otro método importante podría tener.

149
00:08:47,440 --> 00:08:51,330
Bueno, por ahora eso ahora en factura podría tener también un método.

150
00:08:51,690 --> 00:08:52,560
Vamos a hacer un clic.

151
00:08:53,100 --> 00:08:53,880
Operación.

152
00:08:55,040 --> 00:09:03,620
Bueno, cada línea le tengo que calcular el total, también el importe calcular importe qué precio por

153
00:09:03,620 --> 00:09:09,470
cantidad, es decir, la cantidad de la línea por el precio, el producto también va a retornar un topo

154
00:09:10,430 --> 00:09:11,420
sin argumento.

155
00:09:13,100 --> 00:09:19,280
Entonces, calcular importe sería el total de cada línea precio el producto por la cantidad de la línea.

156
00:09:19,640 --> 00:09:23,060
Mientras que calcular total es el total de la factura.

157
00:09:23,180 --> 00:09:28,430
Es decir, va a iterar con un for por cada ítem y ver sumando los importes de cada uno.

158
00:09:28,610 --> 00:09:29,420
Es decir, el total.

159
00:09:29,990 --> 00:09:32,450
Ahora faltaría cliente los atributos.

160
00:09:33,380 --> 00:09:34,670
Por ejemplo, atributo.

161
00:09:34,940 --> 00:09:35,660
Nombre.

162
00:09:37,660 --> 00:09:38,520
Del tipo atómico.

163
00:09:40,620 --> 00:09:44,460
Igual podría incluir el apellido, pero quizá el cliente también puede ser una empresa.

164
00:09:44,550 --> 00:09:45,720
Entonces, con el nombre?

165
00:09:45,810 --> 00:09:46,290
Está bien.

166
00:09:46,410 --> 00:09:52,170
Si un cliente persona en nombre puede ser el nombre completo nombre, apellido o también se puede manejar

167
00:09:52,170 --> 00:09:54,030
tipos de cliente, pero lo dejamos simple.

168
00:09:54,150 --> 00:09:56,280
Recuerden cliente entonces nombre.

169
00:09:56,850 --> 00:09:59,050
Íbamos a tener un número fiscal.

170
00:09:59,160 --> 00:10:04,260
Entonces atributo que típicamente se le conoce como RUT o NIF o CIF.

171
00:10:04,800 --> 00:10:08,910
Por ejemplo NIF del tipo bueno alfanumérico.

172
00:10:09,510 --> 00:10:10,560
Buscamos el tipo String.

173
00:10:13,570 --> 00:10:14,380
Vamos a ordenar.

174
00:10:15,610 --> 00:10:20,980
Voy a quitar las relaciones que agregó de forma automática esta de acá y también voy a agregar voy a

175
00:10:20,980 --> 00:10:24,100
eliminar esta lejos como por acá, esta la quito.

176
00:10:25,200 --> 00:10:26,190
Bien acá.

177
00:10:30,340 --> 00:10:31,750
Ese sería nuestro diseño principal.

178
00:10:31,810 --> 00:10:33,190
Por supuesto, puede ir cambiando.

179
00:10:33,280 --> 00:10:37,030
Podríamos agregar cosas, quitar cosas en el transcurso del desarrollo.

180
00:10:37,120 --> 00:10:37,400
En fin.

181
00:10:37,480 --> 00:10:42,520
Pero esta es la base y por eso es importante tener un esquema, algún análisis, diseño mínimo.

182
00:10:42,650 --> 00:10:46,210
Y la idea que siempre sea lo más simple posible, no con tanto detalle.

183
00:10:46,330 --> 00:10:48,100
Acá puse que factura contiene un cliente.

184
00:10:48,250 --> 00:10:52,750
Ya, pero el cliente también puede tener varias facturas, es decir, cliente podría tener un arreglo

185
00:10:52,840 --> 00:10:53,410
de factura.

186
00:10:53,530 --> 00:10:54,150
Llega envidia.

187
00:10:54,160 --> 00:10:58,390
La relación sería con rombo, se fijan, pero el rombo estaría en el cliente.

188
00:10:58,490 --> 00:11:03,880
Entonces el cliente podría agregar varias facturas, pero también todo depende de cómo lo queramos manejar.

189
00:11:04,000 --> 00:11:04,600
Nada más.

190
00:11:04,660 --> 00:11:07,630
Continuamos la siguiente clase creando estas clases.

191
00:11:07,730 --> 00:11:13,180
Bueno, valga la redundancia, vamos a crear cada una clase con sus atributos y vamos a comenzar nuestro

192
00:11:13,180 --> 00:11:17,260
ejemplo ya programando según nuestro diagrama.

193
00:11:17,320 --> 00:11:18,010
Nos vemos.
