[Música] es momento de hablar sobre el segundo coach para el que es el alto acoplamiento y una pésima cohesión o baja cohesión antes de explicarlo ella antes de hacerlo como un ejemplo hay que hacer una pequeña exposición para que esto queda un poco más claro si hablamos de lo que es lo ideal lo ideal y qué vamos a buscar en cualquier desarrollo del software es que tengamos un bajo acoplamiento y una buena cohesión pero en pocas palabras qué significa esto es no me dice nada déjeme planteárselos en varios ejemplos en este caso tenemos que la
cada uno de esos cubos son o representan clases esto es un alto acoplamiento y una baja cohesión ya voy a explicar en detalle qué es cada una de estos puntos y lo ideal sería que buscáramos un bajo acoplamiento y una alta cohesión pero realmente qué exceso de alta cohesión que es un bajo acoplamiento déjenme exponerlo de otra manera las desventajas que podríamos tener con un alto cumplimiento es que un cambio en un módulo genera o provoca un efecto dominó o un efecto de ondas de agua en el cual un cambio puede y va a afectar
muchos otros módulos el ensamblaje de módulos puede requerir más esfuerzo o tiempo debido a que la dependencia o hay mayor dependencias en esos módulos un módulo en particular puede ser más difícil de reutilizar y probar porque se deben incluir módulos dependientes o sub módulos ahora que posibles soluciones haya el alto acoplamiento bueno podría ser que la clase a tiene un atributo que se refiere a la clase b que la clase haya más servicios de un objeto ve que la clase a tiene algún método que hace referencia a ve a través de algún tipo de retorno
parámetro a es una subclase o implementar la clase b lo que nosotros queremos diseñar es que nuestros componentes sean auto contenidos autosuficientes e independientes con un objetivo y un propósito bien definido aunque aquí está hablando propiamente de componentes es decir alguna pequeña pieza de código esto se aplica en general a toda la programación orientada a objetos nosotros queremos diseñar componentes en este caso clases o módulos que sean auto contenidos autosuficientes e independientes con un objetivo y un propósito bien definido pues estamos hablando de la cohesión a quién nos referimos pero nuevamente déjenme tratar de plantearles
esto nuevamente en la cabeza lo ideal es que tienen es tener un bajo acoplamiento y una muy buena cohesión la cohesión se refiere a lo que hace la clase o el módulo eso es lo que puede hacer esto es lo que hace ese módulo propiamente la baja cohesión significa que la clase realiza una gran cantidad de acciones es amplia no se enfoca en lo que debe de hacer es decir que ustedes tengan una clase de usuario y esa clase de usuario envíe correos calcula impuestos maneja obviamente el usuario tenga etcétera etcétera cantidad de cosas cuando
estamos hablando de una alta cohesión significa que la clase se enfoca en lo que debería estar haciendo y es decir sólo los métodos relacionados con la extensión de la clase es decir si estoy manejando mi clase de hae out solo cosas o es decir propiedades métodos que eres y ser es sólo cosas que ver con autenticación van a estar ahí en esa clase auto yo no voy a tener nada que sea de enviar correos no voy a tener nada de información del usuario o sea sólo me enfoco o bueno del usuario me estoy refiriendo tal
vez a información de su dirección física de cosas por el estilo pero sólo me enfocaría en lo que realmente la clase está directamente relacionada y lo podemos saber con el nombre de la clase idealmente lo que nosotros estamos buscando es que nuestros módulos luzcan de esta manera donde todo lo que está relacionado entre sí este estrés estrechamente relacionado y cuando se necesita algún tipo de conexión con otros otros sus módulos podríamos decirlo así haya algún canal que sea fácil de observar fácil de mantener aquí se refiere cuando estamos hablando de acoplamiento nuevamente déjeme plantearles esto
en la cabeza tal vez esto se nos queda aquí lo ideal es tener un bajo acoplamiento y una buena cohesión pero cuando estamos hablando de acoplamiento a qué se refiere se refiere a cuán relacionadas o dependientes dos clases o módulos entre sí cuando hablamos de un bajo acoplamiento cambiar algo importante una clase no debería de afectar otra clase o no debería afectar otro módulo cuando estamos en un alto acoplamiento dificultaría el cambio y el mantenimiento de su código dado de que las clases están muy unidas y hacer un cambio podría requerir una renovación completa de
todo el sistema o el árbol de clases herencia etcétera recuerden un buen diseño de software tiene una alta cohesión y un bajo acoplamiento lo que nosotros vamos a tener que evitar es tratar de que nuestras clases tengan mucha relación con otras clases y módulos es en este caso vamos a hablar mejor de módulos entonces que nuestros módulos se enfoquen en lo que deben de hacer y cuando necesiten comunicarse o acciones con otros módulos que sea mediante algún canal bien definido y que esas interacciones sean únicamente y estrictamente necesarias esto es lo que nosotros vamos a
tratar de evitar qué les parece si hacemos un ejemplo para que esto quede aún más claro pero con código esto en la próxima clase