Introduzione all'incapsulamento in C

Ci sono stati casi in cui a causa di requisiti aziendali abbiamo bisogno di scrivere codice complesso. Questo codice non sarà facile da usare e sembra difficile da capire. Per rendere il programma più semplice da leggere, possiamo racchiudere il complesso frammento di codice in una capsula e nasconderlo. Questo servirà anche come ulteriore livello di protezione contro eventuali iniezioni dannose nel codice. Possiamo quindi usare questo pezzo di codice chiamando la sua istanza nel programma principale piuttosto che scrivere l'intero gruppo di linee complesse. Questa funzione si chiama incapsulamento. È una delle caratteristiche principali dei linguaggi orientati agli oggetti. Tuttavia, non è limitato solo alle lingue OOP. In C, l'incapsulamento è stato nonostante l'assenza di parole chiave private e pubbliche. L'incapsulamento viene utilizzato da vari altri linguaggi di programmazione come C #, C ++, PHP, JAVA.

Funzionamento dell'incapsulamento in C.

Per comprendere il funzionamento dell'incapsulamento, consideriamo l'esempio della vita reale. Prendi in considerazione una grande azienda che ha una propria unità di produzione interna di libri e li consegna ai clienti legandosi a fornitori di terze parti. Per far funzionare questo modello di business ci saranno diversi dipartimenti coinvolti come il dipartimento acquisti, reparto produzione, reparto vendite, dipartimento finanziario. Il dipartimento acquisti si occuperà di tutte le attività legate agli acquisti come acquisti di inchiostro, carta, copertine di carta, stampanti, ecc. Il reparto vendite lavorerà sul marketing, sulle vendite record. Responsabilità del dipartimento finanziario di condurre audit finanziari, calcolare profitti / perdite e pubblicare relazioni sulla base delle decisioni strategiche chiave da prendere. Nel caso in cui le vendite diminuissero e questo avrebbe influito sulle finanze dell'azienda. Quindi il dipartimento finanziario non sarà autorizzato ad accedere direttamente ai dati di vendita. Il dipartimento finanziario dovrà richiedere a un membro del team di vendita di ottenere i dati pertinenti. Questo è l'incapsulamento. Tutte le attività finanziarie sono raggruppate in un'unica entità denominata "dipartimento finanziario".

Questo concetto di incapsulamento viene utilizzato in linguaggio C per nascondere e proteggere i dati. Può essere implementato quando il programma chiamante principale ha un oggetto, l'oggetto dovrebbe essere in grado di trovare le funzioni applicabili e allo stesso modo, trovare i dati.

Vantaggi dell'incapsulamento in C

  1. L'incapsulamento nasconde l'implementazione di un programma e quindi facile da leggere e modificare in futuro in base alle esigenze aziendali.
  2. Ci consente di distribuire la versione del codice aggiornata dove richiesto, senza richiedere la ristrutturazione dell'intero programma.
  3. Protegge il programma fornendo funzionalità di occultamento dei dati.
  4. L'incapsulamento promuove un modo modulare di programmazione per rendere il codice resiliente.

Perché abbiamo bisogno dell'incapsulamento in C?

Abbiamo bisogno dell'incapsulamento in C per manipolare i modificatori di accesso in C. I modificatori di accesso sono esplicitamente presenti in C ++ per esempio pubblici, privati, ma non sono esplicitamente presenti in C. Sebbene possiamo usare questa proprietà in C implementando l'incapsulamento. L'incapsulamento fornisce anche un codice sicuro che può essere meglio compreso da un esempio fornito nella sezione seguente. Ciò promuove l'adattabilità con la modifica dei requisiti poiché qualsiasi codice richiede una modifica può essere modificata in un file separato senza cambiare nulla nel programma principale. Ciò fornirà un codice semplice e privo di errori fino a un certo punto.

Esempio di incapsulamento in C

I dati in linguaggio C sono pubblici per impostazione predefinita. Sebbene le variabili “Struct” possano essere dichiarate private definendole separatamente dalla classe principale. Ciò può essere ottenuto con un'intestazione separata e file C di origine. Un file di intestazione è seguito dall'estensione “.h” mentre i file C sono seguiti dall'estensione “.C”. Nell'esempio seguente: ci sono tre file

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

p_variable.h: è un file di intestazione che deve essere incluso in altri file ".c". Questo file funge da collegamento tra i dati sparsi su più file.

main_prog.c: è il file di implementazione principale. Quando questo viene eseguito, viene effettuata la chiamata di funzione alle funzioni in cui sono definite in altri file C insieme a strutture.

Access_pfile.c: è un file contenente una struttura. Poiché "struct" richiede allocazione e disallocazione della memoria, vengono utilizzate alcune funzioni della libreria C standard come "malloc ()" e "alloc ()".

File: 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

File: 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.
)

File: 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;
)

Produzione:

Conclusione

L'incapsulamento è il passo principale verso la programmazione orientata agli oggetti. Questo articolo fornisce informazioni sull'incapsulamento in C. Usando metodi di accesso e mutatore, modificatori di accesso possiamo usare l'incapsulamento anche in C #, C ++, PHP. Il vantaggio delle proprietà è che gli utenti possono manipolare l'oggetto da un punto di vista dei dati interno usando un singolo elemento con nome con dati e funzionalità definiti in esso.

Articoli consigliati

Questa è una guida all'incapsulamento in C. Qui discutiamo l'introduzione e la necessità dell'incapsulamento in C insieme a Advantage ed esempi. Puoi anche consultare i nostri altri articoli suggeriti per saperne di più -

  1. Astrazione vs incapsulamento
  2. Incapsulamento in Python
  3. Incapsulamento in Java
  4. Incapsulamento in PHP
  5. Funzionamento dell'incapsulamento in JavaScript
  6. Incapsulamento in JavaScript

Categoria: