1
00:00:00,270 --> 00:00:05,040
Comenzamos una nueva sección con clases y objetos en Java, pero bien vamos a partir un poco de la base

2
00:00:05,060 --> 00:00:10,680
sobre programación orientada a objetos y sobre todo lo que son los objetos, la esencia de la programación.

3
00:00:10,710 --> 00:00:16,590
Pero bueno, va mucho más allá de la programación, porque en realidad los objetos como tales los conocemos

4
00:00:16,590 --> 00:00:20,850
desde siempre, es decir, desde mucho antes de que existiera la programación.

5
00:00:20,970 --> 00:00:21,940
Ya están los objetos.

6
00:00:22,100 --> 00:00:24,060
Bueno, por supuesto, de la vida real.

7
00:00:24,150 --> 00:00:29,470
Por ejemplo, desde niño, cuando comenzamos a hablar, empezamos a mencionar todo tipo de objeto,

8
00:00:29,480 --> 00:00:30,450
interactuamos.

9
00:00:30,540 --> 00:00:34,470
Las primeras palabras siempre son de objetos un avión, un auto.

10
00:00:34,500 --> 00:00:37,440
Papá, mamá, agua, el cielo.

11
00:00:37,550 --> 00:00:40,320
En fin, siempre estamos relacionándonos con objetos.

12
00:00:40,410 --> 00:00:45,660
En la vida real, y justamente el paradigma de la programación orientada a objetos es eso, es tomar

13
00:00:45,660 --> 00:00:49,740
estos objetos de la vida real y llevarlo a un mundo virtual, a la programación.

14
00:00:49,830 --> 00:00:53,550
Tratar de simplificar toda esta complejidad del mundo real.

15
00:00:53,700 --> 00:00:59,850
Por ejemplo, documentos en papel, facturas, objetos físicos como el automóvil, como un avión, el

16
00:00:59,850 --> 00:01:06,720
agua, un vaso, lo que sea cualquier objeto lo podemos palpar y llevar a una aplicación a un programa.

17
00:01:06,870 --> 00:01:12,180
La programación orientada objetos está mucho más cercano a la realidad de lo que realmente se piensa.

18
00:01:12,300 --> 00:01:13,410
Y qué son los objetos?

19
00:01:13,530 --> 00:01:16,860
Entidades que combinan Estado y comportamiento.

20
00:01:17,040 --> 00:01:23,340
El Estado son los atributos o características que tienen en cierto momento, en cierta unidad, tiempo

21
00:01:23,460 --> 00:01:25,140
y comportamiento son las funciones.

22
00:01:25,140 --> 00:01:25,970
Funciona al día.

23
00:01:26,070 --> 00:01:30,140
Los métodos, por lo tanto, todo objeto tiene características y comportamiento.

24
00:01:30,270 --> 00:01:36,450
La característica describen al objeto y comportamiento, es cómo se relacionan, cómo interactúan unos

25
00:01:36,450 --> 00:01:36,930
con otro.

26
00:01:37,220 --> 00:01:38,910
Pero cómo podemos crear un objeto?

27
00:01:39,060 --> 00:01:42,060
De dónde sacamos un objeto bueno desde una clase?

28
00:01:42,180 --> 00:01:47,730
Una clase es un molde, es un prototipo para crear nuestros objetos, nuestras entidades.

29
00:01:47,850 --> 00:01:53,310
Entonces, antes de pensar en objetos tenemos que tener algún diseño, una clase prototipo, para poder

30
00:01:53,310 --> 00:01:58,890
crear múltiples objetos, múltiples instancias del mismo tipo, pero cada una tiene sus características

31
00:01:58,890 --> 00:01:59,520
propias.

32
00:01:59,610 --> 00:02:03,660
Quizás sean similares o muy distintas, pero siempre de un mismo tipo.

33
00:02:04,170 --> 00:02:09,420
Otro tema importante que los objetos siempre son identificables, son únicos en el sistema.

34
00:02:09,600 --> 00:02:14,610
Es decir, podríamos tener dos objetos que tienen exactamente la misma información, mismos atributos

35
00:02:14,640 --> 00:02:19,890
características por ejemplo, mismo color, mismo tamaño, mismo peso sea exactamente igual.

36
00:02:19,940 --> 00:02:22,310
Pero como entidad son distintas.

37
00:02:22,320 --> 00:02:23,250
Son muy parecidas.

38
00:02:23,270 --> 00:02:29,190
Pueden ser, pero son únicos en el sistema, como por ejemplo crear un auto a partir de una clase,

39
00:02:29,280 --> 00:02:34,680
una plantilla genérica que tiene ciertos atributos, pero estos atributos va a depender de cada objeto.

40
00:02:34,680 --> 00:02:37,950
Cada objeto puede tener valores distinto para estos atributos.

41
00:02:38,010 --> 00:02:43,830
Su comportamiento, su funciones o métodos que también se le conoce como métodos, van a interactuar

42
00:02:43,920 --> 00:02:47,040
de forma diferentes unos con otros, se van a comportar distinto.

43
00:02:47,040 --> 00:02:48,000
No todos son iguales.

44
00:02:48,090 --> 00:02:54,300
Si queremos crear autos, instancia de una clase, automóvil, bueno, todas tienen un color, una característica,

45
00:02:54,420 --> 00:03:00,360
una potencia, una cilindrada, velocidad, un modelo, marca de automóvil, en fin, un motor.

46
00:03:00,380 --> 00:03:01,710
Todo tienen cuatro ruedas.

47
00:03:01,830 --> 00:03:08,250
Entonces, a partir de ese prototipo podemos crear y generar nuestros propios objetos distintos color

48
00:03:08,340 --> 00:03:14,650
distinto, tamaño neumático distinto, tipo de motor, de potencia, de modelo, de marca, en fin.

49
00:03:14,790 --> 00:03:19,590
Entonces, a partir de este molde le damos vida a nuestra aplicación, a nuestro sistema instancia.

50
00:03:19,620 --> 00:03:23,370
Ando creando instancias de la clase que son los objetos.

51
00:03:23,610 --> 00:03:29,270
La programación orientada objetos es un paradigma, va mucho más allá del lenguaje en sí.

52
00:03:29,280 --> 00:03:30,520
Como ya va, ya va.

53
00:03:30,610 --> 00:03:31,410
Eso orienta objetos.

54
00:03:31,530 --> 00:03:36,750
Pero también hay otro lenguaje como Python, como C++, C Echarpe, también PHP.

55
00:03:36,850 --> 00:03:41,610
Bueno, cada uno tiene su implementación, quizá un poco distinta unas con otras, pero siempre hay

56
00:03:41,610 --> 00:03:43,260
un estándar, siempre hay una base.

57
00:03:43,350 --> 00:03:46,350
La clase está conformada por dos partes principales.

58
00:03:46,440 --> 00:03:51,690
Una es el encabezado, que también se le conoce como declaración de la clase, que como mínimo tiene

59
00:03:51,690 --> 00:03:55,350
que tener la palabra clave clase 12 clase y el nombre la clase.

60
00:03:55,380 --> 00:03:57,930
Por ejemplo, automóvil iniciando con mayúscula.

61
00:03:58,050 --> 00:04:03,840
Pero si el nombre compuesto, es decir, está formado por más de una palabra, se separa con una mayúscula.

62
00:04:03,930 --> 00:04:06,330
Por ejemplo, automóvil deportivo.

63
00:04:06,480 --> 00:04:13,440
Las letras de deportivo comienzan con mayúscula automóvil también la con mayúscula y siempre una clase

64
00:04:13,490 --> 00:04:19,560
tiene que estar dentro de un archivo que tiene tensión Java y debe llevar el mismo nombre que la clase,

65
00:04:19,620 --> 00:04:20,670
comenzando con mayúscula.

66
00:04:20,770 --> 00:04:23,560
Bueno, son cosas que vamos a ver durante el curso, así que no se preocupen.

67
00:04:23,860 --> 00:04:28,380
Entonces lo principal, la palabra clave class es lo mínimo y el nombre de la clase.

68
00:04:28,530 --> 00:04:30,240
Luego la llave y el cuerpo.

69
00:04:30,360 --> 00:04:34,590
Por ejemplo, después vamos a saber más detalles, pero el modificador públic es opcional.

70
00:04:34,770 --> 00:04:40,410
Después vamos a ver qué pasa si coloco públic y si no se puede ver, tiene públic y quería con un modificador

71
00:04:40,470 --> 00:04:42,150
di fold o por defecto.

72
00:04:42,270 --> 00:04:44,310
Después lo vamos a ver más en detalle y dentro del cuerpo.

73
00:04:44,610 --> 00:04:51,000
Tiene atributos que son las características, el estado y los métodos, el comportamiento, los atributos.

74
00:04:51,120 --> 00:04:55,380
Cuando hablamos de objeto es el Estado y el valor de estos atributos pueden cambiar.

75
00:04:55,380 --> 00:04:57,360
Puede ir variando en el tiempo.

76
00:04:57,450 --> 00:04:59,870
Por ejemplo, un automóvil es kilometraje.

77
00:05:00,210 --> 00:05:04,920
Va cambiando el color, quizá también pueda ir cambiando los neumáticos, va cambiando.

78
00:05:04,980 --> 00:05:09,570
En fin, son características que van a ir modificándose en el tiempo.

79
00:05:09,660 --> 00:05:14,550
En el caso de una persona, un objeto, persona y también en la vida real, esto también se aplica tanto

80
00:05:14,550 --> 00:05:16,350
a la vida real como en el software.

81
00:05:16,530 --> 00:05:22,590
Una persona bueno, un nombre, un apellido, muy probablemente el nombre apellido nunca cambia, pero

82
00:05:22,590 --> 00:05:28,020
sí podría cambiar, por ejemplo, la altura de la persona, la edad, la edad cambia todos los años,

83
00:05:28,170 --> 00:05:32,000
va cambiando el color de pelo si es flaco y gordo.

84
00:05:32,160 --> 00:05:33,080
Todo eso va cambiando.

85
00:05:33,240 --> 00:05:34,110
Son características.

86
00:05:34,210 --> 00:05:39,480
También tiene comportamientos método, correr, saltar, realizar algún tipo de trabajo, en fin.

87
00:05:39,660 --> 00:05:44,620
Y después vamos a ver que la clase en la declaración, en el encabezado arriba, después del nombre

88
00:05:44,620 --> 00:05:51,120
de la clase, podemos utilizar o implementar la herencia con la palabra extent heredar de otra clase

89
00:05:51,290 --> 00:05:52,950
y también distinto tipo de modificadores.

90
00:05:52,980 --> 00:05:58,170
Por ejemplo, el públic, el default si se omite el lastre, el final o final.

91
00:05:58,290 --> 00:06:01,110
En fin, lo vamos a ver más adelante, así que no se preocupen.

92
00:06:01,280 --> 00:06:08,070
Y también podemos representar en un diagrama de clase o m.l. en un lenguaje de modelado, nuestra clases

93
00:06:08,100 --> 00:06:12,480
con el nombre, con los atributos, el tipo de los atributos, con los métodos.

94
00:06:12,510 --> 00:06:17,520
Por lo general se recomienda siempre hacer un diseño antes de escribir nuestro código.

95
00:06:17,580 --> 00:06:21,580
Un diseño de clase y cómo se relacionan unas con otras también.

96
00:06:21,810 --> 00:06:25,830
Otro tema importante de la programación orientada objeto cuando se arrollaba una aplicación no es que

97
00:06:25,830 --> 00:06:31,680
esté formada por un solo objeto, sino son muchos objetos que forman este sistema y estos objetos interactúan

98
00:06:31,740 --> 00:06:32,450
unos con otros.

99
00:06:32,580 --> 00:06:38,420
Se envían mensajes, unos son atributos de otro, es decir, un objeto está compuesto por otros objetos,

100
00:06:38,460 --> 00:06:39,920
son atributos, son parte.

101
00:06:40,050 --> 00:06:47,070
Ejemplo un automóvil podría tener un atributo que es otro objeto el estanque de gasolina o bencina,

102
00:06:47,160 --> 00:06:48,930
el motor y a su vez cada uno.

103
00:06:48,930 --> 00:06:54,210
Este objeto tiene su complejidad, su propia característica y su propio comportamiento, y eso también

104
00:06:54,240 --> 00:06:56,340
es una característica de la programación.

105
00:06:56,400 --> 00:06:57,080
Orienta objetos.

106
00:06:57,210 --> 00:06:59,150
La modularidad que tiene fin.

107
00:06:59,220 --> 00:07:03,380
Y así un montón de cosas que no quiero extender mucho en esta clase de introducción.

108
00:07:03,480 --> 00:07:08,580
Por último, veamos cómo crear un objeto, cómo se instancia en el lenguaje Java con el operador NIU.

109
00:07:08,730 --> 00:07:09,360
Algo vimos.

110
00:07:09,420 --> 00:07:12,900
Hemos visto bastante también sobre, sobre todo con los arreglos.

111
00:07:12,960 --> 00:07:15,690
Recuerde que lo real también son referencias, son objetos.

112
00:07:15,780 --> 00:07:18,210
La clase string también se puede crear con el new.

113
00:07:18,300 --> 00:07:23,410
A pesar de que tiene su forma simplificada en la literal, entonces con el operador New lo que hace

114
00:07:23,410 --> 00:07:25,620
es reservar en memoria para este objeto.

115
00:07:25,710 --> 00:07:31,230
Para esta instancia, entonces reserva espacio un guarda en una dirección en la memoria que tengamos

116
00:07:31,230 --> 00:07:37,620
disponible y se asigna a una variable bien, pero no es que asigne el objeto, sino que asigna una referencia

117
00:07:37,740 --> 00:07:38,550
hacia el objeto.

118
00:07:38,640 --> 00:07:43,200
Recuerden que el objeto está guardado en la memoria, en una dirección, en un puntero.

119
00:07:43,350 --> 00:07:48,900
Entonces, en la variable se asigna la referencia hacia el objeto y esta variable por supuesto que tiene

120
00:07:48,900 --> 00:07:51,920
que ser del tipo de la clase, como estamos viendo automóvil.

121
00:07:52,200 --> 00:07:57,630
Entonces niu el nombre de la clase paréntesis, porque ahí se está invocando, se está llamando a un

122
00:07:57,630 --> 00:08:02,460
constructor de la clase, que es un método especial, que después vamos a ver que permite crear instancias.

123
00:08:02,460 --> 00:08:07,340
El objeto y también inicializar puede llevar parámetros o argumentos o no?

124
00:08:07,440 --> 00:08:12,960
Por ejemplo, si queremos inicializar el objeto con datos por defecto, con algún tipo de dato con características

125
00:08:13,020 --> 00:08:16,140
en los atributos, podemos pasar estos datos en el constructor.

126
00:08:16,290 --> 00:08:23,370
Por ejemplo, el color, el modelo del automóvil, el entrada, el motor F como argumentos y el constructor

127
00:08:23,460 --> 00:08:26,720
obtenemos estos parámetros y inicializar en atributo.

128
00:08:26,880 --> 00:08:31,500
Bueno, sin extenderme tanto, quedamos hasta acá y continuamos en la siguiente clase.
