Astrazione VS Informazioni Nascondere incapsulamento VS.

Puoi dirmi qual è la differenza tra l’ astrazione e l’ informazione che si nasconde nello sviluppo del software?

Sono confuso. L’astrazione nasconde l’implementazione dei dettagli e l’informazione nasconde gli abstract di tutti i dettagli di qualcosa.

Aggiornamento: ho trovato una buona risposta per questi tre concetti. Vedere la risposta a parte qui sotto per diverse citazioni prese da lì .

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

L’astrazione e l’incapsulamento sono concetti complementari: l’astrazione si concentra sul comportamento osservabile di un object … l’incapsulamento si concentra sull’implementazione che dà origine a questo comportamento … l’incapsulamento è spesso ottenuto attraverso l’occultamento dell’informazione, che è il processo di hide tutti i segreti dell’object che non contribuiscono alle sue caratteristiche essenziali.

In altre parole: astrazione = l’object esternamente; incapsulamento (ottenuto attraverso l’occultamento dell’informazione) = l’object internamente,

Esempio: in .NET Framework, la class System.Text.StringBuilder fornisce un’astrazione su un buffer di stringhe. Questa astrazione del buffer consente di lavorare con il buffer senza riguardo per la sua implementazione. Pertanto, è ansible aggiungere stringhe al buffer senza tenere conto del modo in cui StringBuilder tiene traccia internamente di cose quali 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).

rp

L’OP aggiunse la sua domanda con diverse citazioni che aveva trovato, vale a dire in un articolo di Edward V. Berard intitolato “Astrazione, incapsulamento e occultamento dell’informazione” . Sto postando una versione leggermente ampliata e riformattata dell’aggiornamento dell’OP, poiché dovrebbe essere una risposta a sé stante.

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

Astrazione:

“Un punto di confusione riguardo all’astrazione è il suo uso sia come processo che come quadro. L’astrazione, come processo, denota l’estrazione dei dettagli essenziali su un object o un gruppo di elementi, ignorando i dettagli non essenziali. entity framework, indica un modello, una vista o un’altra rappresentazione focalizzata per un object reale. “

Nascondere informazioni:

“La sua interfaccia o definizione è stata scelta per rivelare il meno ansible sui suoi meccanismi interni.” – [Parnas, 1972b]

“L’astrazione può essere […] usata 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) che viene utilizzata per identificare quali informazioni devono essere nascoste.”

incapsulamento:

“Si riferisce […] alla costruzione di una capsula, nel caso di una barriera concettuale, attorno ad alcune raccolte di cose.” – [Wirfs-Brock et al, 1990]

“Come processo, incapsulamento significa l’atto di racchiudere uno o più elementi all’interno di un […] contenitore.L’incapsulazione, come quadro, si riferisce a un pacchetto o un involucro che contiene (contiene, racchiude) uno o più elementi.”

“Se l’incapsulamento fosse” la stessa cosa che nascondono le informazioni “, allora si potrebbe sostenere che” tutto ciò che era incapsulato era 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’incapsulazione è quindi la tecnica per imballare le informazioni in modo tale da hide ciò che dovrebbe essere nascosto e rendere visibile ciò che è destinato a essere visibile. “

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

Information Hiding occultamento delle informazioni nasconde i dati che sono interessati da tale implementazione. L’uso di private e public rientra in questo. Ad esempio, nascondendo le variabili delle classi.

Encapsulation consiste nel raggruppare tutti i dati e le funzioni simili in un gruppo, ad esempio Class in programming; Packet in rete.

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

Per favore non complicare concetti semplici.

Incapsulamento : l’integrazione di dati e metodi in una singola unità è Incapsulamento (ad esempio Classe)

Astrazione : è un atto di rappresentare solo le cose essenziali senza includere dettagli di sfondo. (es. interfaccia)

PER ESEMPI E ALTRE INFORMAZIONI GOTO:

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 chiamato C ++ di Sumita Arora che leggiamo in undicesima class;)

Il significato dell’astrazione dato 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 sfondo o dettagli non essenziali”.

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

Edit : Mi sembra che l’astrazione è il processo di decidere quali parti dell’implementazione dovrebbero essere nascoste .

Quindi la sua non astrazione nasconde l’informazione VERSUS. È l’informazione che nasconde l’astrazione VIA.

L’astrazione nasconde i dettagli dell’implementazione mentre la metti.

Sottragga qualcosa ad un punto abbastanza alto che dovrai solo fare qualcosa di molto semplice per eseguire un’azione.

Nascondere informazioni nasconde i dettagli di implementazione. La programmazione è difficile. Puoi avere un sacco di cose da gestire e gestire. Ci possono essere delle variabili che vuoi / devi tenere traccia molto vicino. Nascondere informazioni assicura che nessuno rompa accidentalmente qualcosa usando una variabile o un metodo che hai esposto pubblicamente.

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

Astrazione

L’astrazione è un atto di rappresentazione di dettagli essenziali senza includere i dettagli dello sfondo. Una class astratta ha solo firme di metodo e la class di implementazione può avere una propria implementazione, in questo modo i dettagli complessi saranno nascosti all’utente. L’astrazione si concentra sulla vista esterna. In altre parole, l’astrazione è la seprazione delle interfacce dall’attuale implementazione.

incapsulamento

L’incapsulazione spiega il legame dei membri e dei metodi dati in una singola unità. Nascondere informazioni è lo scopo principale dell’incapsulamento. L’incapsulamento viene raggiunto utilizzando gli specificatori di accesso come privati, pubblici, protetti. Le variabili dei membri della class sono rese private in modo che non possano essere accessibili direttamente al mondo esterno. L’incapsulamento si concentra sulla vista interiore. In altre parole, l’incapsulamento è una tecnica utilizzata per proteggere le informazioni in un object dall’altro object.

Incapsulamento: il legame tra membri dei dati e funzioni membro viene chiamato incapsulamento. l’incapsulamento è fatto attraverso la class. astrazione: hide l’utilizzo dei moduli di implementazione o dalla vista è chiamato astrazione. ex: int x; non sappiamo come funzionerà internamente. ma sappiamo che funzionerà. questa è l’astrazione.

Astrazione – È il processo di identificazione delle caratteristiche essenziali di un object senza includere dettagli irrilevanti e noiosi.

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

L’astrazione e l’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 object. L’incapsulamento si concentra sull’implementazione che dà origine a questo comportamento.

Nascondere le informazioni : è il processo di hide i dettagli di implementazione di un object. È un risultato di incapsulamento.

Astrazione: l’ astrazione è il concetto / tecnica utilizzata per identificare ciò che dovrebbe essere la vista esterna di un object. Rende disponibile solo l’interfaccia richiesta.

Nascondersi delle informazioni: è complementare all’astrazione, poiché l’astrazione che nasconde l’informazione viene raggiunta. Nascondere tutto il resto tranne la vista esterna.

Incapsulamento: è vincolante per dati e funzioni correlate in un’unità. Facilita l’astrazione e l’occultamento delle informazioni. Permettere l’applicazione di accessi ai membri sull’unità per ottenere l’occultamento delle informazioni e dell’astrazione

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 nostro cibo, né come viene prodotto, ma il fatto che noi (di solito) non ci dobbiamo preoccupare ci libera di fare altre cose, come programmazione.

Per quanto riguarda l’occultamento dell’informazione, sono d’accordo con l’inceppamento.

L’astrazione ti consente di trattare un processo complesso come un processo semplice. Ad esempio, l’astrazione “file” standard considera i file come una matrice contigua di byte. L’utente / sviluppatore non ha nemmeno bisogno di pensare a problemi di cluster e frammentazione. (L’astrazione appare normalmente come classi o subroutine.)

L’occultamento delle informazioni riguarda la protezione delle astrazioni dagli utenti malintenzionati / incompetenti. Limitando il controllo di alcuni stati (allocazioni del disco rigido, ad esempio) 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 solita manifestazione di questo concetto è costituita private parole chiave private e protected in lingue OO).

Per astrarre qualcosa dobbiamo hide il dettaglio o hide il dettaglio di qualcosa che dobbiamo astrarre. Ma, entrambi possono essere raggiunti dall’incapsulamento.

Quindi, hide le informazioni è un objective, l’astrazione è un processo e l’incapsulamento è una tecnica.

Astrazione significa semplicemente la tecnica in cui solo i dettagli essenziali del software sono resi visibili all’utente per aiutare l’utente a utilizzare o operare con il software, quindi i dettagli di implementazione di quel software non sono mostrati (sono resi invisibili). L’incapsulamento è la tecnica che ha un pacchetto che contiene uno o più elementi e quindi alcune informazioni (in particolare i dettagli del programma) sono diventate visibili e alcune non sono visibili all’utente, quindi l’incapsulamento è ottenuto attraverso l’occultamento delle informazioni. In sintesi. L’astrazione è per comportamento osservabile (esternamente) e l’incapsulamento è per l’invisibilità (internamente), ma questi due sono davvero complementari.

Solo aggiungendo ulteriori dettagli su InformationHiding , trovato questo link è davvero una buona fonte con esempi

InformationHiding è l’idea che una decisione di progettazione dovrebbe essere nascosta dal resto del sistema per evitare l’accoppiamento involontario. InformationHiding è un principio di progettazione. InformationHiding dovrebbe informare il modo in cui incapsulare le cose, ma ovviamente non è necessario .

L’incapsulamento è una funzione del linguaggio di programmazione.

Anch’io ero molto confuso riguardo ai due concetti di astrazione e incapsulamento. Ma quando ho visto l’ articolo di astrazione su myjavatrainer.com, è diventato chiaro per me che l’astrazione e l’incapsulamento sono mele e arance, non puoi davvero confrontarle perché entrambe sono necessarie.

L’incapsulamento è come viene creato l’object e l’astrazione è il modo in cui l’object viene visualizzato nel mondo esterno.

Dopo aver letto tutte le risposte di cui sopra uno per uno, non posso impedirmi di postarlo

l’astrazione implica la possibilità di definire oggetti che rappresentano “attori” astratti che possono eseguire lavori, segnalare e modificare il loro stato e “comunicare” con altri oggetti nel sistema.

L’incapsulamento è abbastanza chiaro da sopra tuttavia ->

Il termine incapsulamento si riferisce al hide i dettagli dello stato, ma estendere il concetto di tipo di dati dai linguaggi di programmazione precedenti per associare il comportamento più fortemente ai dati e standardizzare il modo in cui i diversi tipi di dati interagiscono è l’inizio dell’astrazione.

wiki di riferimento

Incapsulamento: dati vincolanti e metodi che agiscono su di esso. questo consente di hide i dati da tutti gli altri metodi in altre classi. esempio: class MyList che può aggiungere un elemento, rimuovere un elemento e rimuovere tutti gli elementi che i metodi add , remove e removeAll agiscono nell’elenco (un array privato) a cui non è ansible accedere direttamente dall’esterno.

Astrazione: nasconde il comportamento e i dati non rilevanti. Il modo in cui gli oggetti vengono effettivamente memorizzati, 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 dall’esterno.

Incapsulamento – imporre l’accesso ai dati interni in modo controllato o impedire l’accesso diretto ai membri.

Astrazione: hide 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 definiamo un metodo a cui è ansible accedere e l’utente non sa qual è il corpo del metodo e come funziona Consideriamo l’esempio precedente, possiamo definire un’area di metodo che calcola l’area del rettangolo.

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

Ora, ogni volta che un utente usa il metodo sopra, otterrà solo l’area non il modo in cui viene calcasting. Possiamo considerare un esempio del metodo println (), sappiamo solo che è usato per la stampa e non sappiamo come stampa i dati. Ho scritto un blog in dettaglio è ansible vedere il link sottostante per maggiori informazioni astrazione vs incapsulamento