Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Próxima revisión
Revisión previa
cap:poo:modularidad [2017/04/07 08:23]
user creado
cap:poo:modularidad [2018/02/20 09:18] (actual)
Línea 1: Línea 1:
 ====== Modularidad ====== ====== Modularidad ======
  
-Es la propiedad que adquiere ​un elemento ​cuando ​este tiene un comportamiento diferente a otro elemento aunque la acción ​que estén realizando sea la misma.+Es la propiedad que adquiere ​una aplicación ​cuando ​puede dividirse en partes mas pequeñas, ​que pueden trabajar por separado pero a su vez pueden mantener conexiones entre sí.
  
 ===== Ejemplos ===== ===== Ejemplos =====
  
-  * **Movimiento ​de animales**.- Podemos tener diferentes tipos de animales, todos los animales pueden moverse, pero la manera ​de moverse no será la misma, un perro camina, un pez nada, un pájaro vuela y una serpiente se arrastraen todos los casos cada animal realiza la misma acción de moverse pero cada animal tiene una manera de hacerlo+  * **Sistema ​de Audio y Vídeo**.- En una casa tienes un televisor que su función es mostrar canales ​de televisión, pero puedes adquirir un sistema ​de televisión por cable donde conectas un decodificador a la televisión y con esto le permite ver mas canalestambién puedes conectar ​un reproductor de blue-ray a la televisión y con esto le permite poder reproducir vídeos almacenados en medios ópticospor ultimo se puede conectar ​un sistema de audio a cualquiera de los dispositivos mencionados anteriormente para darle mas poder de audioesto es un sistema modular, cada aparato puede funcionar por separado y inter-conectados entre sí
-  * **Llenados ​de agua**.- En una empresa de agua para beber, se tiene las áreas de llenadopero el proceso ​de llenado varia en base al recipiente que será llenado, para llenar un garrafón ​de agua, se maneja ​un proceso ​diferente al que se utiliza para llenar ​un envase ​de 1 ltla acción sigue siendo el llenado ​de agua pero este cambia por el recipiente ​que se llenará+  * **Ciclo de vida de desarrollo de software (ALM)**.- Un ALM, se encuentra dividido en muchos procesosnormalmente cada proceso ​con lleva una documentaciónpara poder cumplir con el ciclo de desarrollo es necesario que se genere toda la documentaciónexisten situaciones especiales plenamente identificadas en las que se omiten procesos y por consecuencia se omite la documentación, ​un proceso ​de desarrollo normal lleva **acta de necesidades,​ acta de requerimientos,​ solicitud de cambios, documento de casos de uso, documento de pruebas y carta de liberación**,​ mientras ​que un defecto en producción solo lleva **ticket de mesa de ayudasolicitud ​de cambios, documento de pruebas y carta de liberación**,​ en estos caso se dice que el ALM es modular, ya que puede prescindir de ciertos procesos, y a su vez pueden entrar otros procesos para cubrir una necesidad
-  * **Pagos electrónicos**.- En una página ​de venta en linea, ​se manejan ​diferentes ​tipos de pagos, se puede pagar con cargo a tarjeta de crédito, ​por medio de paypal o por deposito referenciadola acción sigue siendo ​el pagopero este cambia en base al tipo de pago que se realizará. +  * **Business Process Management (BPM)**.- Un BPM es un orquestador ​de procesos, esto quiere decir que, en un BPM se pueden configurar ​diferentes ​procesos ​por medio de interfaces, ​por ejemplose tiene como proceso inicial ​el sistema de ventascada que se genera una venta el sistema le informa al BPM y este le dice al sistema ​de almacén ​que descuente producto del inventario, a su vez le informa al sistema de facturación electrónica que emita un comprobante fiscal, le genera una orden de trabajo al sistema de producción,​ si en un futuro deciden quitar el sistema de almacén basta con modificar el flujo en el BPM para que este ya no se considere, permitiendo que el sistema de almacén se administre por separado, o bien sea sustituido por otro
  
 ==== Aplicación en CSharp ==== ==== Aplicación en CSharp ====
  
-En el siguiente ejemplo veremos como un el cálculo del área de una figura geométrica varia dependiendo del tipo de figura ​que es.+En el siguiente ejemplo veremos como una aplicacion tiene modularizado ​el servicio de datos, donde un componente llamado fábrica obtiene al servicio de datos apropiado, para que se pueda almacenar los valores ​de una persona, a su vez veremos dos servicios ​de datos, uno que almacena a una base de datos y otro que almacena a un archivo de texto.
  
-<file csharp ​concepto_modularidad.cs>+<file csharp ​concepto_modularidad_base.cs>
 using System; using System;
  
-namespace Capacitacion.Polimorfismo+namespace Capacitacion.Modularidad
 { {
-    public abstract class Figura +   ​public ​interface IDataService 
-    +   ​
-        ​public ​decimal Base { get; set; } +      void Guardar(Persona persona); 
-        ​public decimal Altura ​get; set; } +   ​}
-        ​public abstract decimal CalcularArea(); +
-    }+
  
-    ​public class Triangulo : Figura +   public class Persona 
-    +   ​
-        public ​override decimal CalcularArea() +      public ​string Nombre { get; set; } 
-        +      ​public string Apellido ​get; set; } 
-            ​return ​(Base * Altura) / 2m; +   } 
-        +    
-    }+   ​public abstract class FactoryDataService 
 +   { 
 +      public static IDataService Create() 
 +      { 
 +         //​Implementación de la fábrica para obtener el DataService apropiado 
 +      
 +   ​} 
 +
 +</​file>​
  
-    public class Rectangulo : Figura +<file csharp concepto_modularidad_dataservice_bd.cs>​ 
-    { +using System;
-        public override decimal CalcularArea() +
-        { +
-            return Base * Altura; +
-        } +
-    }+
  
-    ​public class Program +namespace Capacitacion.Modularidad.Datos 
-    +
-        public ​static ​void Main(string[] args+   public class BDDataService : IDataService 
-        +   ​
-            ​Figura figura = new Rectangulo() { Altura = 4, Base = 3 }; +      public void Guardar(Persona persona
-            ​Console.WriteLine($"​El área del rectangulo es {figura.CalcularArea()}");+      
 +         //​implementacion de guardado de persona en base de datos 
 +      ​
 +   ​} 
 +
 +</​file>​
  
-            figura = new Triangulo() { Altura = 4, Base = 3 }; +<file csharp concepto_modularidad_dataservice_text.cs>​ 
-            ​Console.WriteLine($"​El área del triangulo es {figura.CalcularArea()}"​);+using System;
  
-            Console.ReadKey(); +namespace Capacitacion.Modularidad.Datos 
-        +
-    }+   ​public class TextDataService : IDataService 
 +   { 
 +      public void Guardar(Persona persona
 +      { 
 +         //​implementacion de guardado de persona en archivo de texto 
 +      ​
 +   ​}
 } }
 </​file>​ </​file>​
  
 +<file csharp concepto_modularidad.cs>​
 +using System;
 +using Capacitacion.Modularidad.Datos;​
 +
 +namespace Capacitacion.Modularidad
 +{
 +   ​public class Program
 +   {
 +      public static void Main(string[] args)
 +      {
 +         ​IDataService ds = FactoryDataService.Create();​
 +         
 +         var persona = new Persona();
 +         ​persona.Nombre = "​Juan";​
 +         ​persona.Apellido = "​Perez";​
 +         
 +         ​ds.Guardar(persona);​
 +         
 +         ​Console.ReadLine();​
 +      }
 +   }
 +}
 +</​file>​