1
00:00:10,300 --> 00:00:16,610
Hola te saluda Ubaldo Acosta bienvenidos nuevamente a este curso de programación con aullaba en esta

2
00:00:16,610 --> 00:00:21,520
elección vamos a estudiar el tema de conversión de objetos en Java están listos.

3
00:00:21,520 --> 00:00:21,980
Vamos

4
00:00:25,400 --> 00:00:27,360
conversión de objetos en Llada.

5
00:00:27,630 --> 00:00:33,440
Sabemos que un objeto creado en la memoria siempre va a ser del mismo tipo por lo que su tipo nunca

6
00:00:33,440 --> 00:00:34,760
cambiará.

7
00:00:34,910 --> 00:00:41,420
Sin embargo una variable de cierto tipo puede apuntar a distintos tipos siempre y cuando haya una relación

8
00:00:41,480 --> 00:00:49,180
entre ellos en la figura podemos ver que una variable de tipo empleado puede almacenar referencias de

9
00:00:49,180 --> 00:00:56,830
objetos de tipo empleado o cualquier subclase como puede ser la clase de gerente escritor corrector

10
00:00:57,160 --> 00:00:57,880
etc..

11
00:00:58,840 --> 00:01:04,930
Hay ocasiones en las que es necesario hacer una conversión del tipo de la variable que apunta a un objeto

12
00:01:05,540 --> 00:01:12,220
con el objetivo de ejecutar cierto código o generalizar nuestro código y así soportar múltiples operaciones

13
00:01:12,370 --> 00:01:17,450
para múltiples tipos de datos desde una misma función generalizada.

14
00:01:17,470 --> 00:01:23,140
Esto nos permite reutilizar código entre varios beneficios más de la programación orientada a objetos

15
00:01:23,770 --> 00:01:26,980
y en general de las buenas prácticas de programación.

16
00:01:27,130 --> 00:01:34,400
Si hacemos una conversión a un tipo más específico es decir un tipo inferior en la jerarquía de clases

17
00:01:34,730 --> 00:01:42,650
a un tipo superior se conoce como un casting es decir conversión hacia arriba y si por el contrario

18
00:01:42,860 --> 00:01:50,950
convertimos de un tipo superior a un tipo inferior se conoce como da un casting ese tema se utilizará

19
00:01:50,980 --> 00:01:52,990
en Java en muchísimos casos.

20
00:01:53,020 --> 00:02:00,640
Por ello es importante tenerlo muy claro el casting se realiza de manera automática y no hay necesidad

21
00:02:00,850 --> 00:02:07,660
de escribir algún código de manera explícita debido a que sí es un tipo superior en automático se realiza

22
00:02:07,660 --> 00:02:08,950
la conversión.

23
00:02:08,950 --> 00:02:14,680
Esto es muy similar a los tipos primitivos en Java y la conversión entre ellos.

24
00:02:14,680 --> 00:02:21,100
Por otro lado la conversión hacia abajo o un casting no se realiza de manera automática y es necesario

25
00:02:21,160 --> 00:02:28,310
especificar cuál es el tipo al que queremos convertir y de hecho en caso de realizar una conversión

26
00:02:28,310 --> 00:02:33,300
errónea se lanzará una excepción de tipo clasicas exception.

27
00:02:33,320 --> 00:02:39,890
Más adelante veremos el tema de excepciones para realizar un casting sólo debemos especificar entre

28
00:02:39,890 --> 00:02:47,030
paréntesis el tipo al cual deseamos convertir nuestro tipo de dato y con ello tendremos un tipo de dato

29
00:02:47,240 --> 00:02:54,320
que por consiguiente ya incluye todas las características del tipo más específico recién convertido.

30
00:02:54,320 --> 00:02:55,820
Veamos un ejemplo de esto

31
00:02:58,980 --> 00:03:00,690
conversión de objetos en IAVA

32
00:03:05,560 --> 00:03:07,240
podemos observar en el código.

33
00:03:07,240 --> 00:03:09,130
Un ejemplo de conversión.

34
00:03:09,160 --> 00:03:12,720
Este ejemplo lo vamos a desarrollar a detalle más adelante.

35
00:03:12,730 --> 00:03:18,990
Sin embargo vamos a mencionar varias cuestiones para que entendamos cómo funciona la conversión de objetos.

36
00:03:19,210 --> 00:03:25,540
El objetivo de convertir objetos es poder acceder a los métodos de cada objeto según necesitemos por

37
00:03:25,540 --> 00:03:30,550
ejemplo en la línea 5 estamos creando un objeto de tipo escritor.

38
00:03:30,550 --> 00:03:35,770
Recordemos que este objeto nunca cambia de tipo siempre será el mismo.

39
00:03:35,770 --> 00:03:42,310
Esta referencia es asignada a una variable de tipo empleado es decir a una clase de mayor jerarquía

40
00:03:42,520 --> 00:03:46,330
según nuestro diagrama de clases de la lámina anterior.

41
00:03:46,330 --> 00:03:52,930
Esto se conoce como un casting por lo que no requiere ninguna sintaxis especial para hacer una conversión

42
00:03:52,990 --> 00:03:55,430
hacia arriba en la jerarquía de clases.

43
00:03:55,660 --> 00:04:02,200
Lo único que sucede es que ya no es posible acceder a los métodos creados en la clase escritor sino

44
00:04:02,200 --> 00:04:06,550
que sólo están disponibles los métodos de la clase empleado.

45
00:04:06,640 --> 00:04:12,790
Por ello si quisiéramos mandar a llamar algún método de la clase escritor directamente no sería posible

46
00:04:13,120 --> 00:04:19,780
ya que la variable que estamos usando es de tipo superior y no puede acceder directamente a los métodos

47
00:04:19,870 --> 00:04:22,700
de la clase de menor jerarquía.

48
00:04:22,940 --> 00:04:28,240
Es aquí donde entra el tema de conversión de objetos ya que podemos acceder a los métodos de la clase

49
00:04:28,260 --> 00:04:29,300
escritor.

50
00:04:29,300 --> 00:04:34,990
Sin embargo necesitamos convertir la variable de tipo empleado en la línea 10.

51
00:04:35,030 --> 00:04:39,330
Podemos observar esta conversión que se conoce como Dawn casting.

52
00:04:39,380 --> 00:04:46,040
La sintaxis es muy simple sólo debemos poner entre paréntesis el tipo de dato al cual queremos convertir

53
00:04:46,340 --> 00:04:52,610
y posteriormente la variable a convertir pero debe haber una relación en la jerarquía de clases de los

54
00:04:52,610 --> 00:04:55,650
tipos de datos que deseamos convertir.

55
00:04:55,670 --> 00:05:01,750
Esto es muy similar a la conversión de tipos primitivos pero con las ventajas del manejo de objetos.

56
00:05:01,790 --> 00:05:07,760
Otra forma de hacer esto es ahorrarnos la variable y convertirlo en la misma línea de código.

57
00:05:07,760 --> 00:05:10,390
Esto lo podemos ver en la línea 15.

58
00:05:10,550 --> 00:05:16,460
Este tipo de conversión es muy común por lo que debemos entender que no hay necesidad de crear una variable

59
00:05:16,730 --> 00:05:23,820
y realizar la asignación para que podamos ejecutar la conversión de objetos ciertamente es una sintaxis

60
00:05:23,970 --> 00:05:30,780
más compleja pero una vez que nos acostumbremos será fácil detectar lo que sucede básicamente en la

61
00:05:30,780 --> 00:05:31,390
conversión.

62
00:05:31,410 --> 00:05:38,640
En la misma línea comienza por la misma sintaxis que es escribir entre paréntesis el tipo deseado y

63
00:05:38,640 --> 00:05:41,450
posteriormente la variable a convertir.

64
00:05:41,460 --> 00:05:48,090
Lo siguiente es envolver entre paréntesis estos dos elementos y con ello prácticamente tendremos acceso

65
00:05:48,300 --> 00:05:55,650
como si fuera la variable ya convertida al tipo deseado con acceso a los métodos y atributos de la clase

66
00:05:55,650 --> 00:06:03,830
de menor jerarquía cabe mencionar que si es un casting en lugar de un casting no hay necesidad de especificar

67
00:06:04,100 --> 00:06:10,820
el tipo de dato a convertir ya que el compilador detectará que la clase es de mayor jerarquía y se hará

68
00:06:10,880 --> 00:06:17,690
una conversión en automático observamos en la línea 10 que una vez que hemos hecho la conversión hacia

69
00:06:17,690 --> 00:06:24,980
abajo podemos utilizar cualquiera de los métodos del tipo de menor jerarquía pero con más detalle.

70
00:06:24,980 --> 00:06:31,460
Por ejemplo supongamos que la clase escritor ha definido un método llamado G.T tipo de escritura en

71
00:06:31,460 --> 00:06:37,510
texto el cual nos indicará si el escritor escribe a mano o a computadora.

72
00:06:37,550 --> 00:06:44,390
Así podemos ya acceder a este método el cual no es accesible desde la clase empleado pero sí desde la

73
00:06:44,390 --> 00:06:51,290
clase de escritor de esta manera haciendo una conversión de datos es posible acceder a los métodos y

74
00:06:51,590 --> 00:06:58,070
atributos de las clases de menor jerarquía y así recuperar la funcionalidad que al momento de utilizar.

75
00:06:58,070 --> 00:07:02,120
Tipos más genéricos o de mayor jerarquía se pierde.

76
00:07:02,480 --> 00:07:07,970
Vamos a realizar a continuación un ejercicio para poner en práctica el manejo de conversión de objetos.
