Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Linguagem C

C# - Encapsulamento


Encapsulação é definido 'como o processo de incluir um ou mais itens dentro de um pacote físico ou lógico'. O encapsulamento, na metodologia de programação orientada a objetos, impede o acesso aos detalhes de implementação.

Abstração e encapsulamento são recursos relacionados na programação orientada a objetos. A abstração permite tornar as informações relevantes visíveis e o encapsulamento permite que um programador implemente o nível desejado de abstração .

O encapsulamento é implementado usando especificadores de acesso . Um especificador de acesso define o escopo e a visibilidade de um membro de classe. C# suporta os seguintes especificadores de acesso -

Especificador de acesso público


O especificador de acesso público permite que uma classe exponha suas variáveis ​​de membro e funções de membro para outras funções e objetos. Qualquer membro público pode ser acessado de fora da classe.

O exemplo a seguir ilustra isso -
Demonstração ao 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();
      }
   }
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -
Length: 4.5
Width: 3.5
Area: 15.75

No exemplo anterior, as variáveis ​​de membro length e width são declaradas como public , então eles podem ser acessados ​​a partir da função Main() usando uma instância da classe Rectangle, chamada r .

A função membro Display() e GetArea() também pode acessar essas variáveis ​​diretamente sem usar nenhuma instância da classe.

As funções de membro Display() também é declarado público , então também pode ser acessado de Main() usando uma instância da classe Rectangle, chamada r .

Especificador de acesso privado


O especificador de acesso privado permite que uma classe oculte suas variáveis ​​de membro e funções de membro de outras funções e objetos. Apenas funções da mesma classe podem acessar seus membros privados. Mesmo uma instância de uma classe não pode acessar seus membros privados.

O exemplo a seguir ilustra isso -
Demonstração ao 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();
      }
   }
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -
Enter Length:
4.4
Enter Width:
3.3
Length: 4.4
Width: 3.3
Area: 14.52

No exemplo anterior, as variáveis ​​de membro comprimento e largura são declaradas como privadas , então eles não podem ser acessados ​​a partir da função Main(). As funções de membro AcceptDetails() e Exibir() pode acessar essas variáveis. Como as funções de membro AcceptDetails() e Exibir() são declarados públicos , eles podem ser acessados ​​de Main() usando uma instância da classe Rectangle, chamada r .

Especificador de acesso protegido


O especificador de acesso protegido permite que uma classe filha acesse as variáveis ​​de membro e funções de membro de sua classe base. Dessa forma, ajuda na implementação da herança. Discutiremos isso com mais detalhes no capítulo sobre herança.

Especificador de acesso interno


O especificador de acesso interno permite que uma classe exponha suas variáveis ​​de membro e funções de membro para outras funções e objetos no assembly atual. Em outras palavras, qualquer membro com especificador de acesso interno pode ser acessado de qualquer classe ou método definido dentro do aplicativo no qual o membro está definido.

O programa a seguir ilustra isso -
Demonstração ao 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();
      }
   }
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -
Length: 4.5
Width: 3.5
Area: 15.75

No exemplo anterior, observe que a função membro GetArea() não é declarado com nenhum especificador de acesso. Então, qual seria o especificador de acesso padrão de um membro de classe se não mencionarmos nenhum? É privado .

Especificador de acesso interno protegido


O especificador de acesso interno protegido permite que uma classe oculte suas variáveis ​​de membro e funções de membro de outros objetos e funções de classe, exceto uma classe filha dentro do mesmo aplicativo. Isso também é usado durante a implementação da herança.

Linguagem C

  1. Classe e objeto C#
  2. Modificadores de acesso C#
  3. Palavra-chave estática C#
  4. Classe abstrata e método C#
  5. Classe aninhada C#
  6. C# Classe Parcial e Método Parcial
  7. Classe e método selados em C#
  8. Java - Encapsulamento
  9. Polimorfismo em C++
  10. Abstração de dados em C++