Introdução ao encapsulamento em C

Houve casos em que, devido a requisitos de negócios, precisamos escrever código complexo. Este código não será fácil de usar e parece difícil de entender. Para tornar o programa mais fácil de ler, podemos agrupar o fragmento complexo de código em uma cápsula e ocultá-lo. Isso também servirá como uma camada adicional de proteção contra qualquer injeção maliciosa no código. Podemos então usar esse trecho de código chamando sua instância no programa principal em vez de escrever todo o conjunto de linhas complexas. Esse recurso é chamado de encapsulamento. É um dos principais recursos das linguagens orientadas a objetos. No entanto, não se limita apenas aos idiomas OOP. Em C, o encapsulamento ocorreu apesar da ausência de palavras-chave públicas e privadas. O encapsulamento está sendo usado por várias outras linguagens de programação como C #, C ++, PHP, JAVA também.

Trabalho de encapsulamento em C

Para entender o funcionamento do encapsulamento, vamos considerar o exemplo da vida real. Considere uma grande empresa que possui sua própria unidade de produção interna de livros e os entrega aos clientes, vinculando-se a fornecedores de terceiros. Para fazer esse modelo de negócios funcionar, haverá departamentos diferentes envolvidos, como departamento de compras, departamento de produção, departamento de vendas e departamento financeiro. O departamento de compras cuidará de todas as atividades vinculadas às compras, como compras de tinta, papéis, capas de papel, impressoras etc. O departamento de vendas trabalhará com marketing e vendas recordes. Responsabilidades do departamento financeiro de conduzir auditorias financeiras, calcular lucros / perdas e publicar relatórios com base nas quais as principais decisões estratégicas serão tomadas. Caso as vendas caíssem, isso impactou as finanças dos negócios. Em seguida, o departamento financeiro não poderá acessar diretamente os dados de vendas. O departamento financeiro precisará solicitar que um membro da equipe de vendas obtenha os dados relevantes. Isso é encapsulamento. Todas as atividades financeiras são agrupadas em uma entidade chamada “departamento financeiro”.

Esse conceito de encapsulamento é usado na linguagem C para ocultar e proteger dados. Pode ser implementado quando o programa principal de chamada possui um objeto, o objeto deve ser capaz de encontrar as funções aplicáveis ​​e, da mesma maneira, encontrar os dados.

Vantagens do encapsulamento em C

  1. O encapsulamento oculta a implementação de um programa e, portanto, é fácil de ler e modificar no futuro, de acordo com os requisitos de negócios.
  2. Ele nos permite implantar a versão atualizada do código sempre que necessário, sem exigir que todo o programa seja reestruturado.
  3. Ele protege o programa, fornecendo funcionalidade de ocultação de dados.
  4. O encapsulamento promove uma maneira modular de programação, tornando o código resiliente.

Por que precisamos de encapsulamento em C?

Precisamos de encapsulamento em C para manipular os modificadores de acesso em C. Os modificadores de acesso estão explicitamente presentes em C ++ para, por exemplo, Público, privado, mas não estão explicitamente presentes em C. Embora possamos fazer uso dessa propriedade em C implementando o encapsulamento. O encapsulamento também fornece código seguro que pode ser melhor compreendido por um exemplo fornecido na seção abaixo. Isso promove a adaptabilidade com os requisitos de alteração, pois o código que requer uma alteração pode ser modificado em um arquivo separado, sem alterar nada no programa principal. Isso fornecerá código simples e sem erros até certo ponto.

Exemplo de encapsulamento em C

Os dados no idioma C são públicos por padrão. Embora as variáveis ​​"Struct" possam ser declaradas privadas, definindo-as separadamente da classe principal. Isso pode ser alcançado com um cabeçalho separado e os arquivos C de origem. Um arquivo de cabeçalho é seguido pela extensão ".h", enquanto os arquivos C são seguidos pela extensão ".C". No exemplo abaixo: Existem três arquivos

  1. p_variable.h
  2. main_prog.c
  3. Access_pfile.c

p_variable.h: é um arquivo de cabeçalho que deve ser incluído em outros arquivos “.c”. Este arquivo atua como um link entre os dados espalhados por vários arquivos.

main_prog.c: é o principal arquivo de implementação. Quando isso é executado, a chamada de função é feita para funções nas quais são definidas em outros arquivos C, juntamente com estruturas.

Access_pfile.c: é um arquivo que contém estrutura. Como “struct” requer alocação e desalocação de memória, algumas funções da biblioteca C padrão, como “malloc ()” e “assign ()”, são usadas.

Arquivo: p_variable.h

#ifndef PRIVATE_VARIABLE
#define PRIVATE_VARIABLE
struct Con; // It is a variable to store contact
struct Con * create_contact(); // functional call to create function
void delete_contact( struct Con * some_contact ); // functional call to delete function
#endif //PRIVATE_VAR

Arquivo: Access_pfile.c

#include "p_variable.h" //we hav included header file in this file so as to access the structure members. This is //an indirect way of accessing structures and thus implementing encapsulation.
#include
#include
struct Con //structure definition containing two members. Both the members are integer type
(
int mob_number;
int flat_number;
);
struct Con * create_contact() // structure declaration. In this code section we allocate memory for the data we //need to input in the above defined members. Malloc function allocates the memory.
(
struct Con * some_contact;
some_contact = malloc(sizeof(struct Con));
some_contact->mob_number = 1234567891;
some_contact->flat_number = 541;
return( some_contact );
)
void delete_contact( struct Con * some_contact )
(
free(some_contact); // this is tandard C function to de- allocate the memory. It frees up the memory so that //the same can be used by other programs.
)

Arquivo: main_prog.c

#include "p_variable.h"
#include
int main()
(
struct Con * Meghna;
Meghna = create_contact();
printf( "Mobile number: %d\n", Meghna->mob_number); // This should cause compile time error as we are //trying to access the private struct member
delete_contact( Meghna );
return 0;
)

Resultado:

Conclusão

Encapsulamento é o passo principal para a programação orientada a objetos. Este artigo fornece informações sobre o encapsulamento em C. Usando métodos acessadores e mutadores, modificadores de acesso, podemos usar o encapsulamento em C #, C ++, PHP também. O benefício das propriedades é que os usuários podem manipular o objeto de um ponto de vista de dados interno usando um único item nomeado com dados e funcionalidade definidos nele.

Artigos recomendados

Este é um guia para o encapsulamento em C. Aqui discutimos a introdução e a necessidade de encapsulamento em C, juntamente com o Advantage e exemplos. Você também pode consultar nossos outros artigos sugeridos para saber mais -

  1. Abstração vs Encapsulamento
  2. Encapsulamento em Python
  3. Encapsulamento em Java
  4. Encapsulamento em PHP
  5. Trabalho de encapsulamento em JavaScript
  6. Encapsulamento em JavaScript