1
00:00:10,630 --> 00:00:12,560
Hola Te saludo nuevamente.

2
00:00:12,580 --> 00:00:17,050
Ubaldo Acosta espero que estén listos para comenzar con esta elección.

3
00:00:17,260 --> 00:00:22,700
Vamos a estudiar a continuación el tema de herencia en Java están listos.

4
00:00:22,810 --> 00:00:23,290
Vamos

5
00:00:25,970 --> 00:00:31,560
concepto de herencia en esta elección vamos a estudiar el concepto de herencia.

6
00:00:31,830 --> 00:00:37,590
Una de las formas en que entendemos la herencia son las características que se mantienen de generación

7
00:00:37,650 --> 00:00:40,170
en generación en una familia.

8
00:00:40,170 --> 00:00:47,100
Por ejemplo los abuelos tenían cabello rubio y uno de los hijos hereda esta característica a su vez

9
00:00:47,160 --> 00:00:54,720
el hijo tiene otro hijo que también hereda este cabello rubio por otro lado los mismos abuelos pudieron

10
00:00:54,720 --> 00:01:02,040
haber tenido una hija con cabello castaño y lacio y los nietos pueden heredar también esta misma característica

11
00:01:02,310 --> 00:01:07,750
de tener el cabello castaño y lacio en la programación orientada a objetos.

12
00:01:07,770 --> 00:01:10,500
El concepto de herencia es muy similar.

13
00:01:10,500 --> 00:01:16,800
Definiremos una jerarquía de clases que nos permitirán heredar características entre clases padre e

14
00:01:16,800 --> 00:01:18,390
hijas.

15
00:01:18,540 --> 00:01:26,740
Veamos a continuación algunas características particulares de IAVA herencia en Java.

16
00:01:26,740 --> 00:01:35,260
La herencia es uno de los conceptos más importantes en la programación orientada a objetos o mencionaremos

17
00:01:35,440 --> 00:01:41,860
algunas de las razones más importantes por las cuales aplicaremos este concepto en el diseño de nuestras

18
00:01:41,860 --> 00:01:43,160
clases.

19
00:01:43,180 --> 00:01:52,860
La herencia nos permitirá representar un comportamiento en común evitar duplicación de código también

20
00:01:52,860 --> 00:02:00,480
la herencia es una característica de la programación orientada a objetos y también esta característica

21
00:02:00,690 --> 00:02:04,930
nos permitirá diseñar clases más parecidas al mundo real.

22
00:02:04,950 --> 00:02:11,820
De esta manera la herencia nos permitirá representar características o comportamiento común entre clases

23
00:02:12,330 --> 00:02:19,800
permitiendo definir en la clase padre los atributos o métodos que sean comunes a las clases hijas las

24
00:02:19,800 --> 00:02:25,350
cuales heredarán estos atributos o métodos definidos en la clase padre.

25
00:02:25,350 --> 00:02:32,460
Lo anterior permite evitar duplicar el código entre la clase padre y las clases hijas por lo que cumplimos

26
00:02:32,640 --> 00:02:38,850
con la reutilización de código que es uno de los principales objetivos de la programación orientada

27
00:02:38,940 --> 00:02:46,790
a objetos si aplicamos el concepto de herencia podemos modelar de una manera más sencilla sistemas del

28
00:02:46,790 --> 00:02:48,000
mundo real.

29
00:02:48,170 --> 00:02:55,010
Si ya la definición de objetos es un gran aporte diseñar una jerarquía de clases nos facilitará aún

30
00:02:55,010 --> 00:03:04,900
más el modelado de clases ejemplo de herencia en Java vamos a ver un ejemplo de herencia en Java.

31
00:03:04,900 --> 00:03:11,560
Podemos observar una clase llamada persona la cual como cualquier persona tiene muchas características

32
00:03:12,010 --> 00:03:14,920
pero nos vamos a enfocar a unas cuantas.

33
00:03:14,920 --> 00:03:22,930
Una persona puede tener un nombre puede tener un género edad y una dirección vamos a capturar estas

34
00:03:22,930 --> 00:03:27,740
características en cada uno de los atributos que corresponden en la clase.

35
00:03:27,880 --> 00:03:33,600
Puede tener muchos más pero nos vamos a enfocar en estos para simplificar el ejemplo.

36
00:03:33,640 --> 00:03:39,370
Por otro lado si estamos tratando de modelar un sistema de ventas podríamos tener algunas variantes

37
00:03:39,580 --> 00:03:41,980
de una persona en nuestro sistema.

38
00:03:41,980 --> 00:03:50,050
Por ejemplo la clase empleado y la clase cliente y podemos observar en nuestro diagrama que se utiliza

39
00:03:50,080 --> 00:03:57,750
la palabra extensive para indicar que la clase empleado hereda de la clase padre persona.

40
00:03:57,850 --> 00:04:03,080
De igual manera la clase cliente es una clase hija de la clase persona.

41
00:04:03,220 --> 00:04:10,660
A diferencia de una simple persona un empleado tiene sueldo un empleado también puede tener un Heydi.

42
00:04:10,660 --> 00:04:18,780
Por ello el atributo de Heydi empleado el cual es único para cada empleado y la clase empleado tienen

43
00:04:18,780 --> 00:04:23,090
los métodos para cada atributo creado en esta clase.

44
00:04:23,200 --> 00:04:29,380
Por ejemplo los métodos Goeth hoy día empleado y el método jet set para el atributo de sueldo.

45
00:04:29,530 --> 00:04:35,320
Por otro lado podemos tener un cliente que se registra en el sistema de ventas este cliente puede tener

46
00:04:35,320 --> 00:04:39,360
como atributos un identificador una cliente.

47
00:04:39,610 --> 00:04:46,180
También podemos tener una fecha de alta o registro y también podemos indicar si es un cliente especial

48
00:04:46,240 --> 00:04:47,080
o VIP.

49
00:04:47,230 --> 00:04:54,550
Para tales casos asignamos las variables descritas en la clase cliente así como los métodos respectivos.

50
00:04:54,550 --> 00:05:00,960
En este ejemplo no estamos indicando cómo concluimos y cómo llegamos al diseño de estas clases.

51
00:05:01,030 --> 00:05:07,750
Sin embargo el proceso general es identificar los actores es decir las entidades que generalmente serán

52
00:05:07,750 --> 00:05:14,860
nuestras clases e identificar cómo interactúan estas entidades en nuestro sistema y a partir de las

53
00:05:14,860 --> 00:05:21,610
necesidades de nuestro sistema podemos ir anotando cuáles son las características es decir atributos

54
00:05:22,150 --> 00:05:29,500
y cuál es la funcionalidad es decir métodos que debe de tener cada entidad que estemos analizando.

55
00:05:29,500 --> 00:05:35,950
Una vez que se han encontrado estas entidades con sus atributos y métodos vemos y existen características

56
00:05:36,220 --> 00:05:42,450
o funcionalidad en común y ahí es precisamente como llegamos a este tipo de diseños.

57
00:05:42,760 --> 00:05:49,300
Podemos observar que la clase persona es la clase padre y que las clases empleado y cliente extienden

58
00:05:49,300 --> 00:05:57,140
de la clase persona es decir que van a heredar las características de la clase persona esto permite

59
00:05:57,320 --> 00:06:03,740
que no tengamos que repetir el código ya definido en la clase persona y una vez que creamos un objeto

60
00:06:03,740 --> 00:06:10,890
de tipo empleado o cliente en automático también tendrá las características de la clase persona.

61
00:06:11,030 --> 00:06:17,260
En la siguiente lámina veremos un ejemplo más visual de esto ejemplo de herencia en Java

62
00:06:22,160 --> 00:06:29,010
en la lámina podemos observar del lado izquierdo la definición de dos clases con herencia este es una

63
00:06:29,010 --> 00:06:34,320
forma en que podemos imaginar visualmente lo que ocurre con la definición de una clase.

64
00:06:34,320 --> 00:06:40,580
Una vez que manejamos el concepto de herencia según el diagrama de clases que mostramos en la lámina

65
00:06:40,580 --> 00:06:47,180
anterior la clase de persona tiene varios atributos privados y varios métodos también que son públicos

66
00:06:47,810 --> 00:06:49,220
como se observa.

67
00:06:49,220 --> 00:06:56,390
Sin embargo los atributos privados no se heredan ya que precisamente son privados y pertenecen únicamente

68
00:06:56,390 --> 00:06:58,760
a la clase donde se definen.

69
00:06:58,760 --> 00:07:02,390
Sin embargo lo que sí se hereda en este caso son los métodos públicos.

70
00:07:02,390 --> 00:07:08,890
Por ello estos métodos en automático pasan a ser parte también de la clase empleado.

71
00:07:08,930 --> 00:07:15,560
Así que un objeto empleado puede utilizar tanto los métodos públicos de la clase persona así como los

72
00:07:15,560 --> 00:07:19,970
métodos definidos dentro de su misma clase de tipo empleado.

73
00:07:19,970 --> 00:07:25,880
Por ello el objeto creado de tipo empleado contiene los métodos de la clase persona que son heredados

74
00:07:26,030 --> 00:07:34,470
como el nombre el nombre del género etc. Pero además contiene sus propios métodos como son hoy empleado

75
00:07:34,600 --> 00:07:42,890
el sueldo el sueldo etc. Y este es el objeto completo de tipo empleado el cual hereda características

76
00:07:43,130 --> 00:07:48,920
de la clase persona así que los atributos privados de la clase persona no se heredan.

77
00:07:48,920 --> 00:07:55,230
Sin embargo los métodos públicos de la clase persona sí se heredan a la clase empleado.

78
00:07:55,550 --> 00:08:01,650
Debemos notar que lo que restringe la herencia en Java son los modificadores de acceso.

79
00:08:01,820 --> 00:08:08,390
Por lo tanto debemos poner particular atención en el tipo de modificador de acceso que tiene el atributo

80
00:08:08,450 --> 00:08:16,000
o el método ya que de esto depende que se hereden o no los atributos o métodos recordemos que son cuatro

81
00:08:16,000 --> 00:08:17,800
modificadores de acceso en total.

82
00:08:17,980 --> 00:08:22,020
Pero por ahora estamos simplificando únicamente a dos.

83
00:08:22,150 --> 00:08:29,620
Es decir pruebe y públic en un curso posterior vamos a ver a detalle cada uno de esos atributos y cuáles

84
00:08:29,620 --> 00:08:36,850
son los que se heredan y cuáles no. En resumen cuando visualicemos una clase que hereda de otra podemos

85
00:08:36,850 --> 00:08:43,420
imaginarnos a esta clase como el conjunto de sus propios atributos y métodos así como la suma de los

86
00:08:43,420 --> 00:08:51,160
atributos o métodos heredables de la clase o clases padre ya que puede recibir herencia de una clase

87
00:08:51,160 --> 00:08:57,750
padre o de una clase abuelo es decir una clase padre de su propia clase padre.
