Diferencias
Muestra las diferencias entre dos versiones de la página.
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(); | ||
} | } | ||
} | } |