Che cos'è il nascondiglio dei dati in C++? Spiegazione di astrazione e incapsulamento
Pubblicato: 2021-05-24Sommario
Introduzione all'occultamento dei dati
I dati sono il componente più sensibile e volatile di un programma che, se manipolato, può causare un output errato e danneggiare l'integrità dei dati. È qui che l'occultamento dei dati si rivela essenziale. In gergo tecnico, l'occultamento dei dati, noto anche come occultamento delle informazioni, è un meccanismo di programmazione orientato agli oggetti (OOP) intrinseco per nascondere i dettagli interni degli oggetti all'utente finale.
L'obiettivo alla base del Data Hide è nascondere i dati all'interno di una classe da accessi non autorizzati ed evitare una penetrazione non necessaria dall'esterno della classe. L'occultamento dei dati garantisce un accesso limitato ai dati per garantire l'integrità degli oggetti e prevenire modifiche involontarie o intenzionali al programma in questione.
In poche parole, l'occultamento dei dati prende alcune parti del codice di un programma e lo scherma dai membri dell'oggetto. Se un membro dell'oggetto sta tentando di accedere ai dati nascosti, il programma restituirà un errore. Questo è un meccanismo cautelativo introdotto per garantire che il programmatore si astenga dal connettersi a dati errati che sono stati nascosti. Spesso sono i componenti interni senza necessità prevedibili da parte dell'utente ad essere nascosti.
Nascondere i dati, astrazione dei dati e incapsulamento dei dati
I dati nascosti in C++ sono strettamente correlati ad altre due proprietà OOP: astrazione e incapsulamento.
Astrazione dei dati
L'astrazione dei dati è un meccanismo per esporre solo l'interfaccia del programma rilevante all'utente finale e nascondere i dettagli di implementazione più intricati e complessi. Consideriamo un esempio di vita reale per una migliore comprensione. Considera la tua televisione. È possibile accendere e spegnere il televisore, cambiare canale, regolarne il volume e aggiungere componenti esterni come videoregistratori, lettori DVD e altoparlanti. Ma non conosci i meccanismi interni della televisione.
Sei ignaro di come riceve i segnali, li traduce e, infine, visualizza l'output. Pertanto, la televisione è un valido esempio della separazione tra attuazione interna e influenza esterna. Con l'astrazione dei dati, l'implementazione della classe è protetta da errori involontari e si evolve in risposta a requisiti mutevoli o segnalazioni di bug senza interferenze a livello di utente.
Incapsulamento dei dati
L'incapsulamento dei dati si riferisce al raggruppamento di dati e alle relative funzioni in un'unica unità chiamata classe. In parole povere, se si dispone di un attributo invisibile dall'esterno di un oggetto e lo si raggruppa con metodi che forniscono accesso in lettura o scrittura ad esso, è possibile nascondere informazioni delicate e regolare l'accesso allo stato interno dell'oggetto.
Pertanto, a seconda dei metodi che implementi, hai l'onere di decidere se un attributo può essere letto e modificato o se è di sola lettura o non è affatto visibile.
Differenza tra l'occultamento dei dati e l'incapsulamento dei dati
Nella discussione sull'OOP, l'occultamento e l'incapsulamento dei dati sono spesso usati in modo intercambiabile perché entrambe queste nozioni cooperano per realizzare un comune custode obiettivo-ausiliario delle informazioni sensibili. L'idea dell'incapsulamento dei dati è indubbiamente comparativa dal punto di vista funzionale all'occultamento dei dati, ma poiché funzionano a livelli diversi, sono strutturalmente diversi.
Sebbene intrinsecamente correlati tra loro, esiste una differenza cruciale tra l'occultamento dei dati e l'incapsulamento dei dati.
- La principale differenza tra l'occultamento e l'incapsulamento dei dati è che il primo si concentra sul miglioramento della sicurezza dei dati nel programma, mentre il secondo si occupa di nascondere la complessità del programma.
- L'occultamento dei dati si concentra sull'accessibilità di un membro di un oggetto all'interno di una classe, mentre l'incapsulamento dei dati si concentra su come si accede ai dati e su come si comportano i diversi oggetti. L'incapsulamento si ottiene principalmente nascondendo le informazioni e non solo nascondendo le informazioni. Ciò significa che il programmatore nasconde le strutture del membro dell'oggetto e nasconde l'implementazione di tutti i suoi metodi.
- Mentre l'occultamento dei dati si concentra sulla limitazione dell'utilizzo dei dati in un programma per garantire la sicurezza dei dati, l'incapsulamento dei dati si concentra sul wrapping (o incapsulamento) dei dati complessi per presentare una vista più semplice all'utente.
- Nell'occultamento dei dati, i dati devono essere definiti solo come privati. Nell'incapsulamento dei dati, i dati possono essere pubblici o privati.
- L'occultamento dei dati è sia un processo che una tecnica in sé, mentre l'incapsulamento dei dati è un sottoprocesso nell'occultamento dei dati.
Identificatori di accesso
C++ supporta l'occultamento dei dati e, per estensione, l'astrazione e l'incapsulamento dei dati attraverso la creazione di tipi definiti dall'utente, noti come classi. L'ambito dei membri di questa classe creata è definito da parole chiave note come identificatori di accesso. In genere, sono disponibili tre tipi di protezione o identificatori di accesso all'interno di una categoria: privata, protetta e pubblica, utilizzati per creare le capacità di incapsulamento della classe.
Gli specificatori di accesso aiutano a definire come è possibile accedere a variabili e funzioni di un tipo dall'esterno della classe. Di solito, i dati all'interno di una classe sono privati per eliminare le istanze di manipolazione accidentale e le sue operazioni sono pubbliche. Tuttavia, l'accessibilità all'interno di un rango non è vincolata da alcuna restrizione.
Variabili/funzioni private: accessibili solo ai membri definiti come parte della classe.
Variabili/funzioni pubbliche: è possibile accedervi da qualsiasi punto del programma.
Variabili/funzioni protette Sono private all'interno di una classe e sono disponibili solo per l'accesso remoto nella classe derivata.
Applicazione di nascondere i dati
Per comprendere meglio l'occultamento dei dati, consideriamo il seguente esempio. Considerando che sei il programmatore, supponiamo che tu dichiari una classe con il nome "CheckAccount", in cui hai definito un membro dati con il termine "Saldo", che si riferisce al saldo del conto bancario di un utente.
In questo particolare esempio, il membro dei dati "Bilancio" è un'informazione sensibile. Sebbene tu possa offrire l'accesso all'applicazione esterna per visualizzare queste informazioni sensibili, con ogni probabilità non lascerai che questa applicazione esterna alteri gli attributi dei dati memorizzati nel "Saldo" del membro. Questo risultato può essere ottenuto utilizzando l'occultamento dei dati e, più specificamente, è controllato dall'uso dello specificatore di accesso privato.
- L'occultamento dei dati viene comunemente eseguito su dati imprevedibili e delicati. Questo tipo di dati è fondamentale per eseguire un programma in modo efficace e veloce. A causa dell'accesso indebito, le modifiche ai dati risultanti sono permanenti e richiedono una rielaborazione completa da parte del programmatore prima di un ulteriore utilizzo.
- L'occultamento dei dati aiuta a proteggere i membri della classe da sviste involontarie. Una classe di solito comprende vari campi correlati che devono essere in uno stato affidabile. Supponiamo che un programmatore possa controllare direttamente uno qualsiasi di questi campi. In tal caso, esiste la possibilità che tu possa trasformare un'area senza modificare i campi correlati critici, lasciando la tua classe in uno stato di conflitto.
Vantaggi dell'occultamento dei dati
I vantaggi dell'occultamento dei dati sono molteplici:
- Viene utilizzato per ridurre l'imprevedibilità e la complessità dei dati.
- Migliora la riutilizzabilità del programma.
- Limitando le interdipendenze tra i componenti software, riduce anche la complessità del sistema per una maggiore robustezza.
- Nasconde il progetto di stoccaggio fisico per i dati. Questo aiuta a definire chiaramente l'interfaccia, migliora la leggibilità e la comprensibilità.
- Fornisce la garanzia dei dati da corruzione e accesso ingiustificato. In altre parole, aiuta a nascondere i dati importanti, garantendo così protocolli di sicurezza intensificati contro gli hacker. Se tutti i dati interni dovessero essere resi pubblici, gli hacker potrebbero facilmente penetrare nei dati interni e apportare modifiche intenzionalmente dannose per alterare il funzionamento del programma. Nascondere i dati rende molto più difficile decifrare il codice perché i dati nascosti appariranno invisibili ai membri esterni della classe e, quindi, all'hacker.
- Le classi incapsulate sono semplici, facili da gestire e facilitano lo sviluppo futuro dell'applicazione.
Lo svantaggio di nascondere i dati
L'unico svantaggio dell'occultamento dei dati è la codifica aggiuntiva. L'occultamento dei dati richiede ai programmatori di scrivere codici più lunghi per creare l'effetto desiderato nei dati nascosti.
Impara i corsi di ingegneria del software online dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.
Conclusione
L'occultamento dei dati è simile a un gioco della roulette russa. Nella roulette russa, solo una buca su sei ha un proiettile. Immaginiamo che lo sparo sia una minaccia di dati percepibile. Saresti disposto a rischiare? Potrebbero esistere cinque scenari che funzionano a tuo favore, ma puoi identificare in modo specifico la minaccia? La risposta è no. Tutti gli scenari portano un uguale onere probabilistico di sospetto e paura. Invece di cedere a questa incertezza, prendi posizione contro le minacce ai dati. Vai sotto copertura con il nascondiglio dei dati.
Se sei interessato a saperne di più su Java, OOP e lo sviluppo di software full-stack, dai un'occhiata al programma Executive PG di upGrad e IIIT-B in Full-stack Software Development, progettato per i professionisti che lavorano e offre oltre 500 ore di formazione rigorosa, Oltre 9 progetti e incarichi, stato di Alumni IIIT-B, progetti pratici pratici e assistenza sul lavoro con le migliori aziende.
Che cos'è l'incapsulamento nella programmazione orientata agli oggetti?
L'incapsulamento è un modo per legare insieme i dati e il codice che opera sui dati. È un meccanismo utilizzato per nascondere i dettagli di implementazione dei dati mentre espone l'astrazione dei dati al mondo esterno. Il processo di nascondere le informazioni dietro un'interfaccia ben definita è noto come incapsulamento. L'incapsulamento è un potente concetto di programmazione orientata agli oggetti. È il processo per nascondere i dati interni e le operazioni di un oggetto dal mondo esterno creando funzioni di accesso.
Che cos'è l'astrazione nella programmazione orientata agli oggetti?
L'astrazione è una tecnica utilizzata nella programmazione orientata agli oggetti per separare le interfacce delle classi dai dettagli di implementazione di ogni singolo oggetto. Ciò significa che il codice può essere modificato senza alterare il codice che utilizza la classe. Nella programmazione orientata agli oggetti (OOP), un'astrazione rappresenta un oggetto che può essere manipolato, ma non definito in modo esplicito. L'astrazione è una parte importante dell'OOP; è il processo di separazione dell'interfaccia di una classe dall'implementazione dei suoi metodi.
In che modo le classi e gli oggetti interagiscono nella programmazione orientata agli oggetti?
Le classi e gli oggetti sono alla base della programmazione orientata agli oggetti (OO). La programmazione orientata agli oggetti è un paradigma di programmazione che utilizza oggetti e classi per modellare il mondo reale. Una classe è un progetto o un modello. È una descrizione o una specifica di come dovrebbe essere un oggetto. Definisce le caratteristiche, i comportamenti ei dati di un particolare tipo di oggetto. Gli oggetti sono istanze o esempi di una classe. Ogni oggetto in un programma può essere classificato in una o più classi. Una classe può ereditare le proprietà, i metodi e altre caratteristiche di un'altra classe. Questo è chiamato come eredità.