Diferencias

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

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
cap:poo:encapsulamiento [2017/04/06 11:43]
user
cap:poo:encapsulamiento [2018/02/20 09:18] (actual)
Línea 1: Línea 1:
 ====== Encapsulamiento ====== ====== Encapsulamiento ======
  
-Es la propiedad que adquiere un elemento ​cuando este controla sus estados de manera interna y solo por medio de los accesos controlados,​ evitando que factores externos puedan modificar estos valores de manera deliberada y por fuera de los procedimientos establecidos.+Es la propiedad que adquiere un objeto ​cuando este controla sus estados de manera interna y solo por medio de los accesos controlados,​ evitando que factores externos puedan modificar estos valores de manera deliberada y por fuera de los procedimientos establecidos.
  
 ===== Ejemplos ===== ===== Ejemplos =====
Línea 11: Línea 11:
  
 ==== Aplicación en CSharp ==== ==== Aplicación en CSharp ====
 +
 +En el siguiente ejemplo veremos como un semaforo afecta al transito de una calle tomando en cuenta que:
 +
 +  * Si el semáforo esta en verde el carro puede avanzar
 +  * Si el semáforo esta en amarillo el carro debe disminuir su velocidad
 +  * Si el semáforo esta en rojo el carro debe detenerse
 +  * El semáforo estará cambiando de color en base al siguiente temporizador:​
 +    * El semáforo cambiará de rojo a verde a los 40 segundos
 +    * El semáforo cambiará de verde a amarillo a los 35 segundos
 +    * El semáforo cambiará de amarillo a rojo a los 5 segundos
 +  * Por la calle pasara un carro cada 5 segundos.
  
 <file csharp concepto_encapsulamiento.cs>​ <file csharp concepto_encapsulamiento.cs>​
Línea 36: Línea 47:
         {         {
             timer = new Timer();             timer = new Timer();
-            timer.Interval = TimeSpan.FromSeconds(40).Milliseconds;+            timer.Interval = TimeSpan.FromSeconds(40).TotalMilliseconds;
             timer.Elapsed += Timer_Elapsed;​             timer.Elapsed += Timer_Elapsed;​
  
             timerAlerta = new Timer();             timerAlerta = new Timer();
-            timerAlerta.Interval = TimeSpan.FromSeconds(35).Milliseconds;+            timerAlerta.Interval = TimeSpan.FromSeconds(35).TotalMilliseconds;
             timerAlerta.Elapsed += TimerAlerta_Elapsed;​             timerAlerta.Elapsed += TimerAlerta_Elapsed;​
  
             color = ColorSemaforo.Verde;​             color = ColorSemaforo.Verde;​
 +            Console.WriteLine($"​El semaforo ha cambiado a {color}"​);​
             timer.Start();​             timer.Start();​
             timerAlerta.Start();​             timerAlerta.Start();​
Línea 52: Línea 64:
             timerAlerta.Stop();​             timerAlerta.Stop();​
             color = ColorSemaforo.Amarillo;​             color = ColorSemaforo.Amarillo;​
 +            Console.WriteLine($"​El semaforo ha cambiado a {color}"​);​
         }         }
  
Línea 58: Línea 71:
             timer.Stop();​             timer.Stop();​
             color = Color == ColorSemaforo.Amarillo ? ColorSemaforo.Rojo : ColorSemaforo.Verde;​             color = Color == ColorSemaforo.Amarillo ? ColorSemaforo.Rojo : ColorSemaforo.Verde;​
 +
 +            Console.WriteLine($"​El semaforo ha cambiado a {color}"​);​
  
             timer.Start();​             timer.Start();​
             if (color == ColorSemaforo.Verde)             if (color == ColorSemaforo.Verde)
                 timerAlerta.Start();​                 timerAlerta.Start();​
 +        }
 +    }
 +
 +    public class Calle
 +    {
 +        Semaforo semaforo;
 +        Timer timer;
 +
 +        public Calle(Semaforo semaforo)
 +        {
 +            this.semaforo = semaforo;
 +            timer = new Timer();
 +            timer.Interval = TimeSpan.FromSeconds(5).TotalMilliseconds;​
 +            timer.Elapsed += Timer_Elapsed;​
 +            timer.Start();​
 +        }
 +
 +        private void Timer_Elapsed(object sender, ElapsedEventArgs e)
 +        {
 +            var estatus = semaforo.Color == ColorSemaforo.Verde ? "​avanza"​ : semaforo.Color == ColorSemaforo.Amarillo ? "​disminuye su velocidad"​ : "se detiene";​
 +            Console.WriteLine($"​el carro {estatus}"​);​
 +        }
 +    }
 +
 +    public class Program
 +    {
 +        public static void Main(string[] args)
 +        {
 +            var semaforo = new Semaforo();
 +
 +            var calle = new Calle(semaforo);​
 +
 +            Console.ReadKey();​
         }         }
     }     }