1 00:00:00,180 --> 00:00:04,560 Bien, continuamos con relaciones de objeto bueno en la programación orientada objeto y que en la vida 2 00:00:04,560 --> 00:00:08,370 real los objetos se relacionan y también se componen unos con otros. 3 00:00:08,460 --> 00:00:14,880 Por ejemplo, un automóvil podría estar compuesto de otro objeto, un motor, por ejemplo, cuatro ruedas, 4 00:00:15,000 --> 00:00:15,870 un estanque. 5 00:00:15,960 --> 00:00:20,520 También va a tener asociado un dueño o propietario que sería el conductor. 6 00:00:20,640 --> 00:00:26,670 En fin, son diferentes objetos que podrían componer el automóvil y de esa forma no tenemos una sola 7 00:00:26,670 --> 00:00:32,070 clase que hace todo, sino que dividimos en diferentes clases que sean componiendo una a otra. 8 00:00:32,190 --> 00:00:38,550 Eso se le conoce como granularidad, que hace que nuestro código sea mucho más escalable y también más 9 00:00:38,550 --> 00:00:40,470 fácil de mantener y reutilizables. 10 00:00:40,570 --> 00:00:46,350 Bueno, una de la idea de la programación orientada objeto vamos a comenzar primero con un pequeño diagrama 11 00:00:46,440 --> 00:00:46,980 o M.L. 12 00:00:47,070 --> 00:00:52,320 También la idea de que antes de programar nuestro código, nuestras clases, tengamos algún esquema 13 00:00:52,440 --> 00:00:52,740 igual. 14 00:00:52,770 --> 00:00:57,990 Cuando creamos tablas del anciano es importante hacer un diagrama, por ejemplo relacional entre la 15 00:00:57,990 --> 00:00:59,280 tabla con los objetos. 16 00:00:59,280 --> 00:01:01,470 Lo mismo tengo que tener relaciones. 17 00:01:01,560 --> 00:01:07,410 Nuestra clase que van a participar en nuestro contexto o aplicación bien diferentes herramientas. 18 00:01:07,420 --> 00:01:11,260 Por ejemplo, podemos utilizar un preclo, pero también tenemos estar. 19 00:01:11,260 --> 00:01:17,490 Súmele la versión 1 es open source, pero de las 2, la 3 y hay que pagar. 20 00:01:17,580 --> 00:01:20,600 Entonces recomendaría si van a usar Star o M.L. 21 00:01:20,730 --> 00:01:26,220 Utilicen la 1 que también se le conoce como versión 5, pero también tenemos algo Hummel. 22 00:01:26,340 --> 00:01:28,770 Esas serían las 3 herramientas que recomiendo. 23 00:01:28,890 --> 00:01:31,290 Voy a utilizar un velo en la página. 24 00:01:31,290 --> 00:01:33,330 Es un pré local de pintor. 25 00:01:33,420 --> 00:01:38,880 Bueno, Acadé es un sistema escritorio para Linux, pero también se puede cargar esta herramienta. 26 00:01:38,970 --> 00:01:42,600 Un vuelo para Windows, para Mackintosh y por supuesto para Linux. 27 00:01:42,750 --> 00:01:46,680 Se lo cargan, los comprimen y el ejecutable umpire lo puntuó. 28 00:01:46,680 --> 00:01:49,860 EXE en el caso Windows se encuentra en la carpeta bin. 29 00:01:49,980 --> 00:01:55,040 Perfecto, entonces es para diseñar nuestra clase un diagrama o MLE. 30 00:01:55,170 --> 00:01:56,760 Bien, hacemos un clic en class. 31 00:01:57,000 --> 00:02:02,610 Bueno, esto es bien resumido porque en verdad súmele podría dar para un curso completo nuestra primera 32 00:02:02,610 --> 00:02:03,150 clase. 33 00:02:03,280 --> 00:02:07,170 Bueno, automóvil ok, ahí tenemos. 34 00:02:08,400 --> 00:02:12,180 Vamos a tener otra clase, por ejemplo, persona. 35 00:02:12,450 --> 00:02:12,840 Ok. 36 00:02:13,320 --> 00:02:13,830 Qué más? 37 00:02:14,130 --> 00:02:14,790 Otra más. 38 00:02:15,180 --> 00:02:15,690 Con un clic. 39 00:02:15,720 --> 00:02:16,590 Siempre con un clic. 40 00:02:17,040 --> 00:02:17,730 Motor. 41 00:02:18,480 --> 00:02:19,020 Ok. 42 00:02:19,500 --> 00:02:20,250 Otra más. 43 00:02:20,550 --> 00:02:23,640 Vamos a tener rueda en singular. 44 00:02:23,730 --> 00:02:24,450 Un solo objeto. 45 00:02:24,510 --> 00:02:26,610 Pero el automóvil tiene cuatro ruedas. 46 00:02:26,970 --> 00:02:28,260 Y por último, un estanque. 47 00:02:28,530 --> 00:02:29,670 Con esto es más que suficiente. 48 00:02:29,720 --> 00:02:30,960 Bueno, podríamos tener mucho más. 49 00:02:31,050 --> 00:02:34,260 La radio, por ejemplo, las puertas, ventanas. 50 00:02:34,290 --> 00:02:35,550 En fin, cada componente. 51 00:02:35,550 --> 00:02:37,830 Un auto podría ser un objeto distinto. 52 00:02:39,840 --> 00:02:41,760 Entonces el estanque de bencina. 53 00:02:41,850 --> 00:02:43,470 O dicen perfecto. 54 00:02:43,590 --> 00:02:45,950 Un automóvil está relacionado a este objeto. 55 00:02:45,960 --> 00:02:46,230 De hecho. 56 00:02:46,230 --> 00:02:50,760 Se componen cada uno de estos tipos son atributos de la clase automóvil. 57 00:02:50,850 --> 00:02:51,270 Entonces. 58 00:02:51,270 --> 00:02:54,150 Bueno, no necesario colocar los atributos en el diagrama. 59 00:02:54,240 --> 00:02:55,260 Solamente las relaciones. 60 00:02:55,290 --> 00:03:02,430 Por ejemplo, si quiero indicar que tanque es un atributo de automóvil, es una relación de asociación. 61 00:03:03,270 --> 00:03:09,930 Entonces marcamos flecha flecha continua, un clic en automóvil y un clic en el tanque. 62 00:03:09,990 --> 00:03:10,430 Perfecto. 63 00:03:10,440 --> 00:03:11,010 Ahí tenemos. 64 00:03:11,160 --> 00:03:14,640 Eso indica que está en que forma parte de automóvil. 65 00:03:14,730 --> 00:03:18,840 Es un atributo, por supuesto privado y del tipo del estanque. 66 00:03:18,960 --> 00:03:23,660 Está asociado a una relación estructural, una relación fuerte, pero también persona. 67 00:03:24,790 --> 00:03:26,590 Ese conductor también motor. 68 00:03:28,310 --> 00:03:33,230 Y acá hay que tener cuidado, porque Rueda es una colección, es una agrupación, no es una sola rueda. 69 00:03:33,350 --> 00:03:39,320 El automóvil tiene cuatro ruedas, por lo tanto es una relación de composición o agregación. 70 00:03:39,410 --> 00:03:41,750 Automóvil está compuesto por cuatro ruedas. 71 00:03:41,830 --> 00:03:46,100 Entonces, composición es cuando hablamos de uno o más sujeto con el rombo. 72 00:03:46,220 --> 00:03:47,030 Cualquiera de los dos. 73 00:03:47,240 --> 00:03:50,030 La diferencia es que el rombo oscuro es una semántica. 74 00:03:50,150 --> 00:03:52,940 Quiere decir que hay una dependencia debida. 75 00:03:53,030 --> 00:03:55,820 Es decir, la rueda no puede existir sin el automóvil. 76 00:03:56,010 --> 00:03:57,200 Y tenemos agregación. 77 00:03:57,200 --> 00:03:58,970 Que lo mismo agregación composición. 78 00:03:59,030 --> 00:04:01,670 Pero agregación no tiene una dependencia de día. 79 00:04:01,730 --> 00:04:03,800 Es decir, puede existir sin el automóvil. 80 00:04:03,920 --> 00:04:04,340 Se fijan. 81 00:04:04,380 --> 00:04:11,180 Pero también puede estar asignado automóvil, mientras que composición no tiene que estar obligatoriamente 82 00:04:11,300 --> 00:04:14,240 obligadamente asociado a un automóvil. 83 00:04:14,640 --> 00:04:16,250 Bien, vamos a colocar esta acá. 84 00:04:16,370 --> 00:04:16,940 Agregación. 85 00:04:17,060 --> 00:04:17,870 Hacemos un clic. 86 00:04:18,960 --> 00:04:26,340 No se marcó a ese clic automóvil y clic acá, y el rombo queda justo en el lado del automóvil que indica 87 00:04:26,340 --> 00:04:32,460 la colección automóvil tiene un arreglo de ruedas de cuatro ruedas, se fijan y listo. 88 00:04:32,550 --> 00:04:33,720 Ahí tenemos el diseño. 89 00:04:33,810 --> 00:04:36,780 Faltaría los atributos, por ejemplo, de cada uno. 90 00:04:36,900 --> 00:04:41,530 Partamos por persona que vean simple un click derecho new atributo. 91 00:04:42,270 --> 00:04:45,090 Hacemos un clic el tipo bien por defecto vienen. 92 00:04:45,090 --> 00:04:53,130 Creo que acá del tipo String yo lo tengo configurado como lenguaje Java viene por defecto con C++, 93 00:04:53,280 --> 00:04:58,500 por lo tanto vienen en minúscula, pero da lo mismo, pueden colocar con mayúscula minúscula para el 94 00:04:58,500 --> 00:05:00,180 caso del diagrama un M.L. 95 00:05:00,330 --> 00:05:00,960 Da igual. 96 00:05:02,190 --> 00:05:11,130 El nombre te vamos a colocar nombre deja están los modificadores de visibilidad o acceso private protected 97 00:05:11,130 --> 00:05:13,760 public se fijan por defecto private ok. 98 00:05:15,170 --> 00:05:20,870 Otro más atributo también podemos colocar métodos ya, pero solamente vamos a colocar atributos, los 99 00:05:20,870 --> 00:05:26,240 métodos que tras setter, por lo general en CML no es necesario indicar porque se asume por defecto 100 00:05:26,240 --> 00:05:31,220 que debieran tener y eltren setter bien atributos apellido. 101 00:05:33,980 --> 00:05:38,110 Del tipo String lo pueden escribir o buscar, ok. 102 00:05:39,560 --> 00:05:44,450 Con estos dos está bien, podríamos tener, no sé, dirección, correo, en fin, perodo con está bien, 103 00:05:44,450 --> 00:05:44,780 sí. 104 00:05:44,870 --> 00:05:51,050 Más que nada para ver relación objeto de como vemos una clase súmele se conforma por tres parte primero 105 00:05:51,110 --> 00:05:55,190 el nombre, luego vienen los atributos y en el tercero los métodos. 106 00:05:55,490 --> 00:06:00,920 Luego el estanque va a tener capacidad, entonces atributo del tipo entero. 107 00:06:01,100 --> 00:06:06,140 Vamos a ver Integer, aunque también podría ser primitivo, da lo mismo. 108 00:06:08,720 --> 00:06:13,150 Capacidad de tanque, pero solamente capacidad, porque estamos dentro de la clase tanque. 109 00:06:13,390 --> 00:06:14,310 Private Ok. 110 00:06:14,660 --> 00:06:22,070 Bueno, se fijan quen o ML cuando es privat se coloca un signo menos cuando es públic un signo más cuando 111 00:06:22,070 --> 00:06:29,240 protected un símbolo gatto cuando difficult es como una cola chancho y va el nombre del atributo. 112 00:06:30,200 --> 00:06:37,010 El tipo gato, a diferencia en Java, que es el tipo espacio, el nombre del atributo o variable con 113 00:06:37,010 --> 00:06:40,460 el modificador private se fijan qué más tenemos capacidad? 114 00:06:40,580 --> 00:06:41,540 Bueno, con eso estamos bien. 115 00:06:41,600 --> 00:06:43,040 Para qué más motor? 116 00:06:44,720 --> 00:06:50,210 Un atributo del tipo doble, pues sea con mayúscula. 117 00:06:50,330 --> 00:06:51,410 Creo que te meta. 118 00:06:51,620 --> 00:06:54,530 Bueno, en mayúscula o primitivo en minúscula. 119 00:06:58,340 --> 00:06:59,120 Cilindrada. 120 00:06:59,240 --> 00:07:03,130 De hecho, ya lo tenemos en el código, pero lo tenemos directamente en la clase automóvil. 121 00:07:03,260 --> 00:07:06,950 Ahora la idea que este motor y motor sea a su vez atributo de automóvil. 122 00:07:07,130 --> 00:07:13,520 Entonces, si queremos obtener la cilindrada del automóvil, primero invocamos billet motor y motor 123 00:07:13,760 --> 00:07:14,810 jet cilindrada. 124 00:07:14,900 --> 00:07:16,030 Bueno, ok. 125 00:07:16,890 --> 00:07:18,270 Podría tener también un tipo. 126 00:07:20,700 --> 00:07:21,320 Tipo moto. 127 00:07:23,280 --> 00:07:28,890 Para el caso del Humble lo dejar de tipo string, pero podría ser perfectamente un enumeras por un en 128 00:07:28,890 --> 00:07:32,700 un tipo motor, por ejemplo diesel o bencina. 129 00:07:32,790 --> 00:07:33,970 Y si no queremos complicar más? 130 00:07:34,020 --> 00:07:34,490 Puede ser. 131 00:07:34,720 --> 00:07:36,300 También soy del tipo poster. 132 00:07:36,360 --> 00:07:42,030 Sí, del tipo rotativo lineal b4, b6, b12. 133 00:07:42,120 --> 00:07:43,380 En fin, cualquier tipo de motor. 134 00:07:43,770 --> 00:07:45,210 Lo dejamos simple. 135 00:07:45,720 --> 00:07:48,740 Ve, incineró o dícele private ok. 136 00:07:50,210 --> 00:07:54,950 Ruedas Bueno, Rueda puede tener fabricante un atributo 137 00:07:57,860 --> 00:08:00,950 del tipo string, okay. 138 00:08:02,290 --> 00:08:03,280 También va a tener. 139 00:08:04,250 --> 00:08:11,240 Aró, por ejemplo, del tipo entero en Teyá o Primitivo, da lo mismo. 140 00:08:11,420 --> 00:08:11,920 Ok. 141 00:08:13,270 --> 00:08:14,380 Y un ancho. 142 00:08:19,740 --> 00:08:24,480 También del tipo Tellas, aunque quizás sería mejor Double podríaser decimal. 143 00:08:26,650 --> 00:08:29,290 Y ahí tenemos, hacemos un clic en La Flecha. 144 00:08:30,320 --> 00:08:32,660 Ok, acá están los componentes. 145 00:08:32,840 --> 00:08:36,560 Entonces el motor está formado por estos objetos, que a su vez son atributo. 146 00:08:38,300 --> 00:08:45,470 Cada uno es atributo de la clase motor, pero en ML como práctica no se indican los nombre atributos 147 00:08:45,620 --> 00:08:51,530 de la clase relacionada de los tipo, solamente el nombre atributo, por ejemplo estri double integer 148 00:08:51,680 --> 00:08:52,700 y con eso estamos listo. 149 00:08:52,820 --> 00:08:58,010 Bueno, tampoco se suele utilizar los lletra setter porque es dar mucho detalle y se asume que tiene 150 00:08:58,010 --> 00:08:58,490 que ser así. 151 00:08:58,640 --> 00:08:59,840 No es un curso Omella. 152 00:08:59,930 --> 00:09:05,420 La idea de ver cómo lo más simple posible para no complicarnos tanto y extendernos tanto. 153 00:09:05,570 --> 00:09:11,140 Pero ya con esto tienen una buena introducción para comenzar a realizar su diagrama y siempre las relaciones. 154 00:09:11,150 --> 00:09:18,350 Por ejemplo, flecha continua indica que es un atributo relación de asociación es parte automóvil. 155 00:09:18,440 --> 00:09:21,890 Está compuesto por esta clase de proyectos objeto que son atributos. 156 00:09:22,340 --> 00:09:28,910 Cuando rombo es muy parecido, pero de colección tiene un arreglo de rueda, pero también tenemos flecha 157 00:09:28,910 --> 00:09:29,570 punteada. 158 00:09:29,690 --> 00:09:36,800 Relación de dependencia no es atributo, pero si utiliza un objeto o alguna clase, como por ejemplo 159 00:09:36,800 --> 00:09:41,690 cuando utilizamos una clase para instanciar con el operador new dentro de algún método. 160 00:09:41,810 --> 00:09:47,510 Pero no es atributo, solamente lo utilizamos el objeto distanciamos y hacemos algo con él. 161 00:09:47,600 --> 00:09:53,180 O bien cuando se pasa por argumento en algún método, también recibimos un objeto como argumento. 162 00:09:53,270 --> 00:09:58,700 Si hacemos algo con el sujeto, también una relación de dependencia es una relación más débil versus 163 00:09:58,760 --> 00:10:02,600 una de asociación que más fuerte es un atributo la clase. 164 00:10:02,810 --> 00:10:05,900 Acá no solamente lo utiliza por ejemplo el main. 165 00:10:06,050 --> 00:10:08,360 La clase con el método main utiliza varias clases. 166 00:10:08,360 --> 00:10:08,900 Se fijan? 167 00:10:09,050 --> 00:10:09,710 Revisemos. 168 00:10:09,800 --> 00:10:14,030 Acá tenemos el método main, utiliza automóvil. 169 00:10:14,150 --> 00:10:15,290 En fin, se fijan. 170 00:10:15,440 --> 00:10:18,800 Pero automóvil no es atributo de la clase. 171 00:10:19,220 --> 00:10:23,270 La utiliza entonces y sería una relación de dependencia con línea punteada. 172 00:10:23,360 --> 00:10:24,920 También tenemos para la herencia. 173 00:10:25,670 --> 00:10:32,600 Se fijan que continua y también se utiliza para interfaz para interfaces, aunque se suele usar interface 174 00:10:32,720 --> 00:10:38,030 con línea punteada o discontinua como ésta, pero termina en triángulo para implementar interfaces. 175 00:10:38,150 --> 00:10:45,080 Se le conoce como relación de realización de interfaces que realiza algún contrato, alguna implementación. 176 00:10:45,140 --> 00:10:46,220 Bueno, pero después vamos a ver. 177 00:10:46,370 --> 00:10:47,630 Pero bien, eso es todo. 178 00:10:47,750 --> 00:10:53,300 Continuamos la siguiente clase ya con el código vamos a crear esta clase, implementar los atributos, 179 00:10:53,360 --> 00:10:57,470 las relaciones y vamos a comenzar a relacionar nuestros objeto. 180 00:10:57,590 --> 00:10:58,250 Nos vemos.