Domanda

Potete dirmi qual è la differenza tra astrazione E occultamento delle informazioni nello sviluppo del software?

Io sono confuso.L'astrazione nasconde l'implementazione dei dettagli e Le informazioni che nascondono astraggono, interi dettagli di qualcosa.

Aggiornamento: Ho trovato una buona risposta per questi tre concetti. Vedi la risposta separata di seguito per numerose citazioni tratte da .

È stato utile?

Soluzione

Vai alla fonte!Grady Booch afferma (in Object Oriented Analysis and Design, pagina 49, seconda edizione):

Astrazione e incapsulamento sono concetti complementari:astrazione si concentra sul comportamento osservabile di un oggetto...incapsulamento si concentra sull'implementazione che dà origine a questo comportamento...L'incapsulamento è spesso ottenuto attraverso l'occultamento delle informazioni, che è il processo di nascondere tutti i segreti dell'oggetto che non contribuiscono alle sue caratteristiche essenziali.

In altre parole:astrazione = l'oggetto esternamente;incapsulamento (ottenuto tramite l'occultamento delle informazioni) = l'oggetto internamente,

Esempio:Nel .NET Framework, il System.Text.StringBuilder La classe fornisce un'astrazione su un buffer di stringhe.Questa astrazione del buffer ti consente di lavorare con il buffer indipendentemente dalla sua implementazione.Pertanto, puoi aggiungere stringhe al buffer indipendentemente da come StringBuilder tiene traccia internamente di cose come il puntatore al buffer e la gestione della memoria quando il buffer si riempie (cosa che fa con l'incapsulamento tramite l'occultamento delle informazioni).

p.p

Altri suggerimenti

L'OP ha aggiornato la sua domanda con diverse citazioni che aveva trovato, in particolare in an articolo di Edward V.Berard dal titolo "Astrazione, incapsulamento e occultamento delle informazioni".Sto ripubblicando una versione leggermente ampliata e riformattata dell'aggiornamento del PO, poiché dovrebbe essere una risposta a sé stante.

(Tutte le citazioni sono tratte dall'articolo sopra menzionato.)

Astrazione:

"Un punto di confusione riguardo all'astrazione è il suo utilizzo sia come processo che come entità.L'astrazione, come processo, denota l'estrazione dei dettagli essenziali su un elemento, o un gruppo di elementi, ignorando i dettagli non essenziali.L'astrazione, come entità, denota un modello, una vista o qualche altra rappresentazione mirata per un elemento reale."

Nascondere informazioni:

"La sua interfaccia o definizione è stata scelta per rivelare il meno possibile sul suo funzionamento interno." — [Parnas, 1972b]

"L'astrazione può essere […] utilizzata come tecnica per identificare quali informazioni dovrebbero essere nascoste."

"La confusione può verificarsi quando le persone non riescono a distinguere tra l'occultamento delle informazioni e una tecnica (ad esempio l'astrazione) utilizzata per aiutare a identificare quali informazioni devono essere nascoste."

Incapsulamento:

"Si […] si riferisce alla costruzione di una capsula, in questo caso una barriera concettuale, attorno a un insieme di cose." — [Wirfs-Brock et al, 1990]

"Come processo, l'incapsulamento indica l'atto di racchiudere uno o più elementi all'interno di un […] contenitore.L'incapsulamento, come entità, si riferisce a un pacchetto o un involucro che contiene (contiene, racchiude) uno o più elementi."

"Se l'incapsulamento fosse 'la stessa cosa del nascondere le informazioni', allora si potrebbe sostenere che 'tutto ciò che è stato incapsulato è stato anche nascosto'. Questo ovviamente non è vero".

Conclusione:

"L'astrazione, l'occultamento delle informazioni e l'incapsulamento sono concetti molto diversi, ma altamente correlati.Si potrebbe sostenere che l'astrazione è una tecnica che ci aiuta a identificare quali informazioni specifiche dovrebbero essere visibili e quali informazioni dovrebbero essere nascoste.L'incapsulamento è quindi la tecnica per confezionare le informazioni in modo tale da nascondere ciò che dovrebbe essere nascosto e rendere visibile ciò che deve essere visibile."

Abstraction nasconde i dettagli di implementazione fornendo un livello sopra le funzionalità di base.

Information Hiding sta nascondendo i dati che sono interessati da tale implementazione.Utilizzo di private E public rientra in questo.Ad esempio, nascondendo le variabili delle classi.

Encapsulation sta semplicemente inserendo tutti i dati e le funzioni simili in un gruppo, ad es Class nella programmazione; Packet nella rete.

Attraverso l'uso delle Classi, implementiamo tutti e tre i concetti: Abstraction, Information Hiding E Encapsulation

Per favore non complicare concetti semplici.

Incapsulamento :Il raggruppamento di dati e metodi in una singola unità è l'incapsulamento (ad es.Classe)

Astrazione :È un atto di rappresentare solo le cose essenziali senza includere dettagli di fondo.(per esempio.Interfaccia)

PER ESEMPI E MAGGIORI INFORMAZIONI VAI A:

http://thecodekey.com/C_VB_Codes/Encapsulation.aspx

http://thecodekey.com/C_VB_Codes/Abstraction.aspx

Definizioni approvate Qui

PS:Ricordo anche la definizione di un libro intitolato C++ di Sumita Arora che abbiamo letto in 11a classe ;)

Il significato di astrazione fornito dall'Oxford English Dictionary (OED) più vicino al significato qui inteso è "L'atto di separare nel pensiero".Una definizione migliore potrebbe essere "Rappresentare le caratteristiche essenziali di qualcosa senza includere lo sfondo o i dettagli non essenziali".

L'occultamento delle informazioni è il principio secondo cui gli utenti di un componente software (come una classe) devono conoscere solo i dettagli essenziali su come inizializzare e accedere al componente e non hanno bisogno di conoscere i dettagli dell'implementazione.

Modificare:Mi sembra che l'astrazione sia il processi di decidere quali parti dell’attuazione dovrebbero essere previste nascosto.

Quindi non si tratta di astrazione CONTRO il nascondimento di informazioni.Sono informazioni che nascondono l'astrazione VIA.

Astrazione

L'astrazione è l'atto di rappresentare i dettagli essenziali senza includere i dettagli dello sfondo.Una classe astratta ha solo firme di metodi e la classe implementante può avere una propria implementazione, in questo modo i dettagli complessi saranno nascosti all'utente.L'astrazione si concentra sulla visione esterna.In altre parole, l'astrazione è la separazione delle interfacce dall'implementazione effettiva.

Incapsulamento

L'incapsulamento spiega l'associazione dei membri dati e dei metodi in una singola unità.L'occultamento delle informazioni è lo scopo principale dell'incapsulamento.L'incapsulamento si ottiene utilizzando specificatori di accesso come privato, pubblico, protetto.Le variabili dei membri della classe vengono rese private in modo che non possano essere accessibili direttamente dal mondo esterno.L’incapsulamento si concentra sulla visione interiore.In altre parole, l'incapsulamento è una tecnica utilizzata per proteggere le informazioni in un oggetto dall'altro oggetto.

L'astrazione nasconde i dettagli dell'implementazione come dici tu.

Astrai qualcosa a un punto abbastanza alto da dover fare solo qualcosa di molto semplice per eseguire un'azione.

L'occultamento delle informazioni nasconde i dettagli dell'implementazione.La programmazione è difficile.Puoi avere molte cose da affrontare e gestire.Possono esserci variabili di cui vuoi/devi tenere traccia molto da vicino.Nascondere le informazioni garantisce che nessuno rompa accidentalmente qualcosa utilizzando una variabile o un metodo che hai esposto pubblicamente.

Questi 2 concetti sono strettamente legati insieme nella programmazione orientata agli oggetti.

Astrazione - È il processo di identificazione delle caratteristiche essenziali di un oggetto senza includere i dettagli irrilevanti e noiosi.

Incapsulamento - È il processo di racchiudere dati e funzioni che manipolano questi dati in una singola unità.

Astrazione e incapsulamento sono concetti correlati ma complementari.

  1. L'astrazione è il processo.L'incapsulamento è il meccanismo mediante il quale viene implementata l'astrazione.

  2. L'astrazione si concentra sul comportamento osservabile di un oggetto.L'incapsulamento si concentra sull'implementazione che dà origine a questo comportamento.

Nascondere le informazioni - È il processo di nascondere i dettagli di implementazione di un oggetto.È il risultato dell'incapsulamento.

Incapsulamento:l'associazione dei membri dati e delle funzioni membro è denominata incapsulamento.l'incapsulamento viene eseguito tramite la classe.astrazione:nascondere i dettagli dell'implementazione dall'utilizzo o dalla vista è chiamato astrazione.ex:interox;non sappiamo come funzionerà internamente.ma sappiamo che int funzionerà.questa è l'astrazione.

Astrazione: L'astrazione è il concetto/tecnica utilizzata per identificare quella che dovrebbe essere la visione esterna di un oggetto.Rendere disponibile solo l'interfaccia richiesta.

Nascondere le informazioni: È complementare all'astrazione, poiché attraverso l'occultamento delle informazioni si ottiene l'astrazione.Nascondere tutto il resto tranne la visione esterna.

Incapsulamento: È l'associazione di dati e funzioni correlate in un'unità.Facilita l'astrazione e l'occultamento delle informazioni.Consentire l'applicazione di funzionalità come l'accesso dei membri all'unità per ottenere l'astrazione e l'occultamento delle informazioni

Vedi il post di Joel sulla legge delle astrazioni che perdono

JoelOnsoftware

Fondamentalmente, l’astrazione ti dà la libertà di pensare a concetti di livello superiore.Un'analogia non di programmazione è che la maggior parte di noi non sa da dove viene il cibo o come viene prodotto, ma il fatto che (di solito) non dobbiamo preoccuparcene ci dà la libertà di fare altre cose, come programmazione.

Per quanto riguarda l'occultamento delle informazioni, sono d'accordo con il jamming.

L'astrazione consente di trattare un processo complesso come un processo semplice.Ad esempio, l'astrazione standard "file" tratta i file come un array contiguo di byte.L'utente/sviluppatore non deve nemmeno pensare ai problemi di cluster e frammentazione.(L'astrazione normalmente appare come classi o subroutine.)

Nascondere le informazioni significa proteggere le tue astrazioni da utenti malintenzionati/incompetenti.Limitando il controllo di alcuni stati (ad esempio, l'allocazione del disco rigido) allo sviluppatore originale, enormi quantità di gestione degli errori diventano ridondanti.Se nessun altro oltre al driver del file system può scrivere sul disco rigido, il driver del file system sa esattamente cosa è stato scritto sul disco rigido e dove.(La manifestazione abituale di questo concetto è private E protected parole chiave nelle lingue OO.)

Per astrarre qualcosa dobbiamo nascondere il dettaglio oppure per nascondere il dettaglio di qualcosa dobbiamo astrarlo.Ma entrambi possono essere ottenuti mediante incapsulamento.

Quindi, l’occultamento delle informazioni è un obiettivo, l’astrazione è un processo e l’incapsulamento è una tecnica.

Astrazione significa semplicemente la tecnica in cui solo i dettagli essenziali del software vengono resi visibili all'utente per aiutarlo a utilizzare o operare con il software, quindi i dettagli di implementazione di quel software non vengono mostrati (sono resi invisibili).Incapsulamento è la tecnica secondo la quale un pacchetto contiene uno o più elementi e quindi alcune informazioni (in particolare i dettagli del programma) diventano visibili e altre non visibili all'utente, quindi l'incapsulamento viene ottenuto nascondendo le informazioni.In sintesi. Astrazione è per il comportamento osservabile (esternamente) e l'incapsulamento è per l'invisibilità (internamente) ma questi due sono davvero complementari.

Sto solo aggiungendo ulteriori dettagli in giro InformazioniNascondere, trovato Questo collegamento è davvero un'ottima fonte con esempi

InformazioniNascondere è l'idea che una decisione progettuale dovrebbe essere nascosta al resto del sistema per evitare accoppiamenti involontari.InformationHiding è un principio di progettazione. InformazioniNascondere dovrebbe informare il modo in cui tu incapsulare cose, ma ovviamente non è necessario.

Incapsulamento è una funzionalità del linguaggio di programmazione.

Anch'io ero molto confuso sui due concetti di Astrazione e Incapsulamento.Ma quando ho visto il articolo di astrazione su myjavatrainer.com, mi è diventato chiaro che l'astrazione e l'incapsulamento sono mele e arance, non puoi davvero confrontarli perché entrambi sono richiesti.

L'incapsulamento è il modo in cui viene creato l'oggetto e l'astrazione è il modo in cui l'oggetto viene visto nel mondo esterno.

Dopo aver letto tutte le risposte di cui sopra una per una, non posso trattenermi dal pubblicarlo

l'astrazione implica la possibilità di definire oggetti che rappresentano "attori" astratti che possono eseguire lavori, riferire e modificare il proprio stato e "comunicare" con altri oggetti nel sistema.

L'incapsulamento è comunque abbastanza chiaro dall'alto ->

Il termine incapsulamento si riferisce all'occultamento dei dettagli dello stato, ma l'estensione del concetto di tipo di dati dai precedenti linguaggi di programmazione per associare in modo più forte il comportamento ai dati e standardizzare il modo in cui interagiscono i diversi tipi di dati, è l'inizio dell'astrazione.

riferimento wiki

Incapsulamento: dati vincolanti e le modalità che agiscono su di essi.ciò consente di nascondere i dati da tutti gli altri metodi in altre classi.esempio: MyList che può aggiungere un elemento, rimuovere un elemento e rimuovere tutti gli elementi I metodi add, remove, E removeAll agire sulla lista (un array privato) a cui non è possibile accedere direttamente dall'esterno.

Astrazione: nasconde il comportamento e i dati non rilevanti.Il modo in cui gli elementi vengono effettivamente archiviati, aggiunti o eliminati è nascosto (astratto).I miei dati possono essere conservati in array semplici, ArrayList, LinkedList e così via.Inoltre, il modo in cui i metodi vengono implementati è nascosto all’esterno.

Incapsulamento: impone l'accesso ai dati interni in modo controllato o impedisce l'accesso diretto ai membri.

Astrazione: nascondere i dettagli di implementazione di determinati metodi è noto come astrazione

Capiamo con l'aiuto di un esempio: -

class Rectangle
{
private int length;
private int breadth;// see the word private that means they cant be accesed from 
outside world.
 //now to make them accessed indirectly define getters and setters methods
void setLength(int length)
{  
// we are adding this condition to prevent users to make any irrelevent changes 
  that is why we have made length private so that they should be set according to 
   certain restrictions
if(length!=0)
{
 this.length=length
 }
void getLength()
{
 return length;
 }
 // same do for breadth
}

Ora per l'astrazione definisci un metodo a cui è possibile accedere solo e che l'utente non conosce Qual è il corpo del metodo e come funziona Consideriamo l'esempio precedente, possiamo definire un'area del metodo che calcola l'area del rettangolo.

 public int area()
 {
  return length*breadth;
 }

Ora, ogni volta che un utente utilizza il metodo sopra riportato, otterrà semplicemente l'area non nel modo in cui viene calcolata.Possiamo considerare un esempio del metodo println() sappiamo solo che viene utilizzato per la stampa e non sappiamo come stampa i dati.Ho scritto un blog in dettaglio, puoi vedere il link sottostante per maggiori informazioniastrazione vs incapsulamento

Vale la pena notare che questi termini hanno definizioni IEEE standardizzate, in cui è possibile effettuare ricerche https://pascal.computer.org/.

astrazione

  1. vista di un oggetto che si concentra sulle informazioni rilevanti per uno scopo particolare e ignora il resto delle informazioni
  2. processo di formulazione di una visione
  3. processo di soppressione dei dettagli irrilevanti per stabilire un modello semplificato, o il risultato di tale processo

occultamento delle informazioni

  1. tecnica di sviluppo software in cui le interfacce di ciascun modulo rivelano il meno possibile sul funzionamento interno del modulo e viene impedito ad altri moduli di utilizzare informazioni sul modulo che non sono presenti nelle specifiche dell'interfaccia del modulo
  2. contenimento di una decisione di progettazione o implementazione in un singolo modulo in modo che la decisione sia nascosta agli altri moduli

incapsulamento

  1. tecnica di sviluppo software che consiste nell'isolare una funzione di sistema o un insieme di dati e operazioni su tali dati all'interno di un modulo e fornire specifiche precise per il modulo
  2. concetto che l'accesso ai nomi, ai significati e ai valori delle responsabilità di una classe è interamente separato dall'accesso alla loro realizzazione
  3. idea che un modulo abbia un esterno distinto dal suo interno, che abbia un'interfaccia esterna e un'implementazione interna
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top