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

C# - Encapsulación

Encapsulación se define 'como el proceso de encerrar uno o más artículos dentro de un paquete físico o lógico'. La encapsulación, en la metodología de programación orientada a objetos, impide el acceso a los detalles de implementación.

La abstracción y la encapsulación son características relacionadas en la programación orientada a objetos. La abstracción permite hacer visible la información relevante y la encapsulación permite a un programador implementar el nivel deseado de abstracción .

La encapsulación se implementa mediante el uso de especificadores de acceso . Un especificador de acceso define el alcance y la visibilidad de un miembro de la clase. C# admite los siguientes especificadores de acceso −

Especificador de acceso público

El especificador de acceso público permite que una clase exponga sus variables miembro y funciones miembro a otras funciones y objetos. Se puede acceder a cualquier miembro público desde fuera de la clase.

El siguiente ejemplo ilustra esto −

Demostración en vivo
using System;

namespace RectangleApplication {
   class Rectangle {
      //member variables
      public double length;
      public double width;
      
      public double GetArea() {
         return length * width;
      }
      public void Display() {
         Console.WriteLine("Length: {0}", length);
         Console.WriteLine("Width: {0}", width);
         Console.WriteLine("Area: {0}", GetArea());
      }
   }//end class Rectangle
   
   class ExecuteRectangle {
      static void Main(string[] args) {
         Rectangle r = new Rectangle();
         r.length = 4.5;
         r.width = 3.5;
         r.Display();
         Console.ReadLine();
      }
   }
}

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado −

Length: 4.5
Width: 3.5
Area: 15.75

En el ejemplo anterior, las variables miembro length y width se declaran public , por lo que se puede acceder a ellos desde la función Main() usando una instancia de la clase Rectangle, denominada r .

La función miembro Display() y ObtenerÁrea() también puede acceder a estas variables directamente sin usar ninguna instancia de la clase.

Las funciones miembro Display() también se declara público , por lo que también se puede acceder desde Main() usando una instancia de la clase Rectangle, llamada r .

Especificador de acceso privado

El especificador de acceso privado permite que una clase oculte sus variables miembro 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 una clase no puede acceder a sus miembros privados.

El siguiente ejemplo ilustra esto −

Demostración en vivo
using System;

namespace RectangleApplication {
   class Rectangle {
      //member variables
      private double length;
      private double width;
      
      public void Acceptdetails() {
         Console.WriteLine("Enter Length: ");
         length = Convert.ToDouble(Console.ReadLine());
         Console.WriteLine("Enter Width: ");
         width = Convert.ToDouble(Console.ReadLine());
      }
      public double GetArea() {
         return length * width;
      }
      public void Display() {
         Console.WriteLine("Length: {0}", length);
         Console.WriteLine("Width: {0}", width);
         Console.WriteLine("Area: {0}", GetArea());
      }
   }//end class Rectangle
   
   class ExecuteRectangle {
      static void Main(string[] args) {
         Rectangle r = new Rectangle();
         r.Acceptdetails();
         r.Display();
         Console.ReadLine();
      }
   }
}

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado −

Enter Length:
4.4
Enter Width:
3.3
Length: 4.4
Width: 3.3
Area: 14.52

En el ejemplo anterior, las variables miembro longitud y anchura se declaran privadas , por lo que no se puede acceder a ellos desde la función Main(). Las funciones miembro AcceptDetails() y Mostrar() puede acceder a estas variables. Dado que las funciones miembro AcceptDetails() y Mostrar() se declaran públicas , se puede acceder a ellos desde Main() usando una instancia de la clase Rectangle, llamada r .

Especificador de acceso protegido

El especificador de acceso protegido permite que una clase secundaria acceda a las variables miembro y funciones miembro de su clase base. De esta manera, ayuda a implementar la herencia. Hablaremos de esto con más detalle en el capítulo de herencia.

Especificador de acceso interno

El especificador de acceso interno permite que una clase exponga sus variables miembro y funciones miembro a otras funciones y objetos en el ensamblado actual. En otras palabras, se puede acceder a cualquier miembro con especificador de acceso interno desde cualquier clase o método definido dentro de la aplicación en la que se define el miembro.

El siguiente programa ilustra esto −

Demostración en vivo
using System;

namespace RectangleApplication {
   class Rectangle {
      //member variables
      internal double length;
      internal double width;
      
      double GetArea() {
         return length * width;
      }
      public void Display() {
         Console.WriteLine("Length: {0}", length);
         Console.WriteLine("Width: {0}", width);
         Console.WriteLine("Area: {0}", GetArea());
      }
   }//end class Rectangle
   
   class ExecuteRectangle {
      static void Main(string[] args) {
         Rectangle r = new Rectangle();
         r.length = 4.5;
         r.width = 3.5;
         r.Display();
         Console.ReadLine();
      }
   }
}

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado −

Length: 4.5
Width: 3.5
Area: 15.75

En el ejemplo anterior, observe que la función miembro GetArea() no se declara con ningún especificador de acceso. Entonces, ¿cuál sería el especificador de acceso predeterminado de un miembro de la clase si no mencionamos ninguno? Es privado .

Especificador de acceso interno protegido

El especificador de acceso interno protegido permite que una clase oculte sus variables miembro y funciones miembro de otros objetos y funciones de clase, excepto una clase secundaria dentro de la misma aplicación. Esto también se usa al implementar la herencia.


Lenguaje C

  1. Clase y objeto de C#
  2. Modificadores de acceso de C#
  3. Palabra clave estática de C#
  4. Clase y método abstractos de C#
  5. Clase anidada de C#
  6. C# Clase parcial y método parcial
  7. Clase y método sellados de C#
  8. Java - Encapsulación
  9. Polimorfismo en C++
  10. Abstracción de datos en C++
  11. Encapsulación de datos en C++