====== Principio de ocultación ====== Es la propiedad que adquiere un objeto cuando esconde algunos de sus atributos para que no puedan ser modificados ni obtenidos al menos que sea por los mensajes definidos del objeto. ===== Ejemplos ===== * **Semáforo**.- Un semáforo lleva un control interno del tiempo que tarda en cambiar de color y un estado de que color debe mostrar, ese tiempo solo puede ser alterado por un control el cual se conecta al centro de mando del semáforo. * **Turno de espera**.- Cuando una persona va realizar un movimiento a un banco, primero llega a tomar un turno, en una pantalla ve el turno actual, entonces debe esperar a que los turnos avances y aparezca el turno que le tocó a la persona, el turno lo van avanzando los cajeros del banco mediante un control que tiene cada uno. * **Variables privadas**.- Cuando se programan clases, suelen ponerse variables con ámbito privado, esto quiere decir que nadie a excepción de los mismos elementos de la clase puedan verla. ==== Aplicación en CSharp ==== En el siguiente ejemplo veremos como una casa muestra si la luz esta encendida o apagada, a su vez veremos que este valor solo puede ser modificado por medio de unos métodos. using System; namespace Capacitacion.Ocultacion { public class Casa { bool estaLuzEncendida = false; public bool EstaLuzEncendida { get { return estaLuzEncendida; } } public void EncenderLuz() { Console.WriteLine("Encendiendo luz"); estaLuzEncendida = true; } public void ApagarLuz() { Console.WriteLine("Apagando luz"); estaLuzEncendida = false; } } public class Program { public static void Main(string[] args) { var casa = new Casa(); Console.WriteLine($"La luz está {(casa.EstaLuzEncendida ? "encendida" : "apagada")}."); casa.EncenderLuz(); Console.WriteLine($"La luz está {(casa.EstaLuzEncendida ? "encendida" : "apagada")}."); casa.ApagarLuz(); Console.WriteLine($"La luz está {(casa.EstaLuzEncendida ? "encendida" : "apagada")}."); Console.ReadLine(); } } }