Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Encapsulamiento en C#: Protegiendo el código y mejorando el diseño

El encapsulamiento se define como "el proceso de encerrar uno o más elementos dentro de un paquete físico o lógico". En la metodología de programación orientada a objetos, el encapsulamiento impide el acceso a los detalles de implementación.

La abstracción y el encapsulamiento son características relacionadas en la POO. La abstracción permite hacer visible la información relevante y el encapsulamiento permite al programador implementar el nivel deseado de abstracción.

El encapsulamiento se implementa usando especificadores de acceso. Un especificador de acceso define el alcance y la visibilidad de un miembro de clase. C# admite los siguientes especificadores:

Especificador de acceso Public

El especificador public permite a una clase exponer sus variables y funciones miembro a otras funciones y objetos. Cualquier miembro público puede accederse desde fuera de la clase.

Ejemplo:

using System;
namespace AplicaciónRectángulo {
    class Rectángulo {
        // variables miembro
        public double longitud;
        public double ancho;
        
        public double ObtenerÁrea() {
            return longitud * ancho;
        }
        
        public void Mostrar() {
            Console.WriteLine("Longitud: {0}", longitud);
            Console.WriteLine("Ancho: {0}", ancho);
            Console.WriteLine("Área: {0}", ObtenerÁrea());
        }
    }
    
    class EjecutarRectángulo {
        static void Main(string[] args) {
            Rectángulo r = new Rectángulo();
            r.longitud = 4.5;
            r.ancho = 3.5;
            r.Mostrar();
            Console.ReadLine();
        }
    }
}

Resultado:

Longitud: 4.5
Ancho: 3.5
Área: 15.75

En este ejemplo, las variables miembro longitud y ancho son public, por lo que pueden accederse desde Main() usando una instancia de la clase Rectángulo.

Especificador de acceso Private

El especificador private permite a una clase ocultar sus variables y funciones miembro de otras funciones y objetos. Solo las funciones de la misma clase pueden acceder a sus miembros privados. Incluso una instancia de la clase no puede acceder a sus miembros privados.

Ejemplo:

using System;
namespace AplicaciónRectángulo {
    class Rectángulo {
        // variables miembro
        private double longitud;
        private double ancho;
        
        public void AceptarDetalles() {
            Console.WriteLine("Ingrese Longitud: ");
            longitud = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("Ingrese Ancho: ");
            ancho = Convert.ToDouble(Console.ReadLine());
        }
        
        public double ObtenerÁrea() {
            return longitud * ancho;
        }
        
        public void Mostrar() {
            Console.WriteLine("Longitud: {0}", longitud);
            Console.WriteLine("Ancho: {0}", ancho);
            Console.WriteLine("Área: {0}", ObtenerÁrea());
        }
    }
    
    class EjecutarRectángulo {
        static void Main(string[] args) {
            Rectángulo r = new Rectángulo();
            r.AceptarDetalles();
            r.Mostrar();
            Console.ReadLine();
        }
    }
}

Resultado (con entrada 4.4 y 3.3):

Ingrese Longitud: 4.4
Ingrese Ancho: 3.3
Longitud: 4.4
Ancho: 3.3
Área: 14.52

Especificador de acceso Protected

El especificador protected permite a una clase hija acceder a las variables y funciones miembro de su clase base. Esto ayuda a implementar la herencia.

Especificador de acceso Internal

El especificador internal permite a una clase exponer sus miembros a otras funciones y objetos en el ensamblado actual. Cualquier miembro con acceso internal puede accederse desde cualquier clase o método definido dentro de la aplicación donde se define el miembro.

Ejemplo:

using System;
namespace AplicaciónRectángulo {
    class Rectángulo {
        // variables miembro
        internal double longitud;
        internal double ancho;
        
        double ObtenerÁrea() {
            return longitud * ancho;
        }
        
        public void Mostrar() {
            Console.WriteLine("Longitud: {0}", longitud);
            Console.WriteLine("Ancho: {0}", ancho);
            Console.WriteLine("Área: {0}", ObtenerÁrea());
        }
    }
    
    class EjecutarRectángulo {
        static void Main(string[] args) {
            Rectángulo r = new Rectángulo();
            r.longitud = 4.5;
            r.ancho = 3.5;
            r.Mostrar();
            Console.ReadLine();
        }
    }
}

Resultado:

Longitud: 4.5
Ancho: 3.5
Área: 15.75

En este ejemplo, observe que la función miembro ObtenerÁrea() no tiene especificador de acceso. El especificador por defecto para un miembro de clase es private.

Especificador de acceso Protected Internal

El especificador protected internal permite a una clase ocultar sus miembros de otros objetos y funciones de clase, excepto una clase hija dentro de la misma aplicación. También se usa al implementar herencia.

Lenguaje C

  1. Clases y objetos en C#: Fundamentos para POO robusta
  2. Entendiendo los modificadores de acceso en C#: Public, Private, Protected, Internal y más
  3. Palabra clave static en C#: Dominando variables, métodos y clases estáticas
  4. Dominando clases y métodos abstractos en C#: Guía práctica
  5. Entendiendo clases anidadas en C#: Definición, uso y herencia
  6. Entendiendo clases y métodos parciales en C#
  7. Dominando clases y métodos sealed en C#: Cuándo usarlos, ejemplos claros y mejora de seguridad y rendimiento
  8. Entendiendo el Polimorfismo en C++: Guía Práctica
  9. Dominando la Abstracción de Datos en C++: Simplifica el Diseño con Separación Interfaz-Implementación
  10. Encapsulamiento de Datos en C++: Protege tu Código
  11. Encapsulamiento en Java: Ocultación Segura de Datos y Control de Acceso