Na linguagem C, não existe diretamente o conceito de “membros protegidos” como nas linguagens orientadas a objetos, como C++ e Java. Contudo, podemos aplicar algumas técnicas para limitar o acesso a certos membros de uma estrutura, imitando a funcionalidade de membros protegidos e mantendo um código modular e seguro. Neste post entenda melhor os membros protegidos em C.

Simulando membros protegidos com encapsulamento

Em C, uma forma de controlar o acesso a variáveis internas é usar o conceito de encapsulamento. Isso envolve criar funções que atuam como “interfaces” para acessar ou modificar esses dados, em vez de permitir acesso direto. Vamos entender isso com um exemplo de uma estrutura simples.

Exemplo: Estrutura de banco de dados de usuário

Suponha que temos uma estrutura Usuario, onde desejamos proteger o campo senha, permitindo seu acesso apenas por funções específicas.

#include <stdio.h>
#include <string.h>

struct Usuario {
    char nome[50];
    int idade;
    char senha[20]; // Membro "protegido"
};

// Função para definir a senha de forma controlada
void definirSenha(struct Usuario *usuario, const char *senha) {
    strncpy(usuario->senha, senha, sizeof(usuario->senha) - 1);
}

// Função para verificar a senha
int verificarSenha(struct Usuario *usuario, const char *senha) {
    return strcmp(usuario->senha, senha) == 0;
}

Explicação do código

  1. Encapsulamento: O campo senha é acessado e modificado apenas através das funções definirSenha e verificarSenha, protegendo seu acesso direto.

  2. Passagem por função: Qualquer operação que envolva a senha do usuário precisa passar pela função, simulando um controle de acesso.

Vantagens de usar funções como proteção

  • Segurança: A estrutura interna (senha) fica acessível apenas por funções específicas.

  • Modularidade: Outras partes do código interagem com os dados de forma controlada, o que ajuda a prevenir erros e facilita futuras modificações.

Outro exemplo prático

Os membros públicos de uma classe formam a interface da classe (pense no teclado à frente do forno de micro-ondas), enquanto os membros protegidos formam os trabalhos internos.

Exemplo:

class Student {
	
   protected: // membros protegidos
   double dGrade;       
   int sSemesterHours;
       
   public: // membros públicos

   void init() {
		
      dGrade = 0.0;
      nSemesterHours = 0;
   }
        
   double getGrade() { // retorna a grade atual
		
      return dGrade;
   }
        
      int getHours() { // retorna as horas
		
         return nSemesterHours;
      }
        
		
} 

Uma função de acesso a membros protegidos é chamada de “getters function” (função de obtenção) e uma função de ajuste de valor é chamada de “setter function” (função de ajuste).

Para dar a uma função não membro o acesso aos membros protegidos de uma classe é necessário declarar essa função como amiga. Declarar uma função para ser uma amiga significa que você não precisa expor o membro protegido a todo mundo declarando-a pública.

A declaração amiga consiste da palavra-chave “friend” seguida por uma declaração protótipo:

friend void initialize(Student *);

Embora C não tenha suporte nativo para membros protegidos, você pode simular esse comportamento usando encapsulamento e criando funções de acesso para membros críticos. Essa prática permite construir código mais seguro e modular, imitando características de linguagens orientadas a objetos.

QUER SER UM PROGRAMADOR FULL-STACK E DOMINAR AS PRINCIPAIS TECNOLOGIAS DO MERCADO?

Aprenda através de projetos reais e aulas práticas. São 20 cursos completos + cursos bônus. Grupos privados exclusivos, atualizações constantes e lives semanais.

Python, PHP, Java Script, CSS, Node, Angular JS, MySQL, Photoshop, Flutter, AWS, Apache e muito mais!

CLIQUE NA IMAGEM ABAIXO E CONFIRA MAIS DETALHES:

CLIQUE AQUI E SAIBA MAIS

Dúvidas ou sugestões? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits

Tags:

Quer receber GRÁTIS o e-book "Como Formatar um Computador em 5 Minutos"?

Não enviamos spam. Seu e-mail está 100% seguro!

Sobre o Autor

Bene Silva Júnior
Bene Silva Júnior

Bacharel em Sistemas de Informação pelo Instituto Paulista de Pesquisa e Ensino IPEP. Apaixonado por tecnologias e games do tempo da vovó!

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *