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
- Encapsulamento: O campo
senha
é acessado e modificado apenas através das funçõesdefinirSenha
everificarSenha
, protegendo seu acesso direto. - 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.
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:
Dúvidas ou sugestões? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits
Quer receber GRÁTIS o e-book "Como Formatar um Computador em 5 Minutos"?
Sobre o Autor
0 Comentários