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(); | ||
| } | } | ||
| } | } | ||