Vra

Kan jy my vertel wat is die verskil tussen onttrekking en inligting wegkruip in die ontwikkeling van sagteware?

Ek is verward.Onttrekking verberg detail implementering en inligting wegkruip abstrakte hele besonderhede van iets.

Update: Ek het gevind dat'n goeie antwoord vir hierdie drie konsepte. Sien die aparte antwoord hieronder vir'n paar aanhalings geneem uit daar.

Was dit nuttig?

Oplossing

Gaan na die bron! Grady Booch sê (in Objekgeoriënteerde Analise en Ontwerp, bladsy 49, tweede uitgawe):

  

abstraksie en inkapseling is aanvullend begrippe: onttrekking   fokus op die waarneembare gedrag van 'n voorwerp ... inkapseling   fokus op die implementering wat aanleiding gee tot hierdie gedrag gee ...   inkapseling word meestal verkry deur inligting wegkruip, wat   is die proses van die wegsteek van al die geheime van die voorwerp wat dit nie doen nie   bydra tot die essensiële kenmerke.

Met ander woorde: onttrekking = die voorwerp ekstern; inkapseling (bereik deur inligting wegkruip) = die voorwerp intern,

Voorbeeld: In die NET Framework, die System.Text.StringBuilder klas bied 'n onttrekking oor 'n string buffer. Hierdie buffer onttrekking kan jy werk met die buffer sonder agting vir die implementering daarvan. So, is jy in staat om snare voeg tot die buffer sonder inagneming van hoe die StringBuilder intern hou van dinge soos die wyser na die buffer en die bestuur van die geheue toe die buffer kry volle (wat dit doen met inkapseling via inligting wegsteek).

RP

Ander wenke

Die OP opgedateer sy vraag met verskeie aanhalings wat hy gevind het, naamlik in 'n artikel deur Edward V. Berard getiteld," abstraksie, enkapsulasie, en inligting wegsteek ". Ek weer plaas van 'n effens uitgebrei en microverfilmde weergawe van update die OP se, aangesien dit 'n antwoord in sy eie reg moet wees.

(Alle aanhalings is geneem uit die bogenoemde artikel.)

Abstraksie:

  

"Een punt van verwarring met betrekking tot onttrekking is die gebruik daarvan as beide proses en 'n entiteit. Abstraksie, as 'n proses, dui op die trek van die noodsaaklike inligting oor 'n item, of 'n groep van items, terwyl ignoreer die nie-essensieel besonderhede. abstraksie, as 'n entiteit, dui op 'n model, die oog, of 'n ander gefokus verteenwoordiging vir 'n werklike item. "

Inligting verberg:

  

"Die koppelvlak of definisie is gekies om so min as moontlik oor sy innerlike werking te openbaar." - [Parnas, 1972b]

     

"Onttrekking kan wees [...] gebruik as 'n tegniek vir die identifisering van wat inligting moet weggesteek word."

     

"Verwarring kan voorkom wanneer mense nie kan onderskei tussen die omhulsel van inligting, en 'n tegniek (bv onttrekking) wat gebruik word om te help identifiseer waarvoor inligting te versteek."

Enkapsulering:

  

"Dit [...] verwys na die bou van 'n kapsule, in die geval 'n konseptuele versperring, om 'n paar versameling van dinge." - [Wirfs-Brock et al, 1990]

     

"As 'n proses, inkapseling beteken die daad van omringende een of meer items binne 'n [...] houer. Enkapsulering, as 'n entiteit, verwys na 'n pakket of 'n hok wat hou (bevat, omsluit) een of meer items. "

     

"As inkapseling was 'dieselfde ding as inligting wegkruip," dan 'n mens kan die argument dat maak' alles wat vervat is ook weggesteek. " Dit is natuurlik nie waar nie. "

Gevolgtrekking:

  

"abstraksie, inligting wegkruip, en inkapseling is baie anders, maar hoogs-verwante, konsepte. Mens kan argumenteer dat onttrekking is 'n tegniek wat ons help om te bepaal watter spesifieke inligting sigbaar moet wees, en wat inligting moet weggesteek word . Enkapsulering is dan die tegniek vir die verpakking van die inligting in so 'n manier om weg te steek wat moet weggesteek word, en sigbaar te maak wat bedoel is om sigbaar te wees. "

Abstraction wegkruip die implementering besonderhede deur die verskaffing van 'n laag oor die basiese funksies.

Information Hiding wegkruip die data wat geraak word deur wat implementering. Gebruik van private en public kom onder hierdie. Byvoorbeeld, die wegsteek van die veranderlikes van die klasse.

Encapsulation is net om alle soortgelyke data en funksies in 'n groep Bv Class in programmering; Packet in netwerke.

Deur die gebruik van Klasse, voer ons al drie konsepte - Abstraction, Information Hiding en Encapsulation

Moet asseblief nie bemoeilik eenvoudige konsepte.

Enkapsulering : wikkel uit data en metodes in 'n enkele eenheid is Enkapsulering (bv Klas)

Abstraksie : Dit is 'n daad van net verteenwoordigend van die noodsaaklike dinge sonder om agtergrond inligting. (Bv Interface)

vir voorbeelde en meer inligting gaan na:

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

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

Goedgekeur definisies hier

post scriptum .: Ek onthou ook die definisie van 'n boek met die naam C ++ deur Sumita Arora wat ons lees in die 11de klas;)

Die betekenis van onttrekking deur die Oxford English Dictionary (OED) naaste aan die betekenis hier bedoel is 'die Wet van die skeiding van in gedagte. 'N Beter omskrywing dalk' Verteenwoordig die essensiële kenmerke van iets sonder om agtergrond of nie-essensieel detail. "

Inligting wegkruip is die beginsel dat gebruikers van 'n sagteware komponent (soos 'n klas) moet net die noodsaaklike inligting oor hoe om inisialiseer en toegang tot die komponent, en hoef nie die besonderhede van die implementering weet weet.

Edit : Ek lyk vir my dat die onttrekking is die proses om te besluit watter dele van die implementering wat moet wees weggesteek .

So dit is nie onttrekking VERSUS inligting wegsteek. Dit is inligting wegkruip VIA onttrekking.

Abstraksie

Abstraksie is 'n daad van wat essentail besonderhede sonder vermelding van die agtergrond inligting. A abstrakte klas het net metode handtekeninge en implementering van die klas kan sy eie implementering het, op hierdie manier die komplekse besonderhede sal weggesteek word van die gebruiker. Onttrekking fokus op die buite aansig. In otherwords, Abstraksie is sepration van koppelvlakke van die werklike implementering.

Enkapsulering

Enkapsulering verduidelik bindende die data lede en metodes in 'n enkele eenheid. Inligting wegkruip is die hoofdoel van inkapseling. Inkapseling is acheived deur gebruik te maak van toegang spesifiseerders soos private, openbare, beskerm. Klas lid veranderlikes private gemaak sodat hulle direk toeganklik vir buitewêreld cann't wees. Inkapseling fokus op die innerlike oog. In otherwords, Enkapsulering is 'n tegniek wat gebruik word om die inligting in 'n voorwerp van die ander voorwerp te beskerm.

Abstraksie wegkruip besonderhede van implementering as jy sit dit.

Jy abstrakte iets om 'n hoë genoeg punt dat jy net sal moet iets baie eenvoudig doen om 'n aksie uit te voer.

Inligting wegkruip wegkruip implementering besonderhede. Programmering is hard. Jy kan 'n baie van die dinge om te hanteer en hanteer het. Daar kan veranderlikes wat jy wil / moet baie geheg tred te hou. Wegkruip inligting verseker dat niemand per ongeluk breek iets met behulp van 'n veranderlike of metode wat jy in die openbaar blootgestel.

Hierdie 2 konsepte is baie nou saam vasgebind in objekgeoriënteerde programmering.

Abstraksie - Dit is die proses van die identifisering van die belangrikste eienskappe van 'n voorwerp                    sonder vermelding van die irrelevant en vervelig besonderhede.

Enkapsulering - Dit is die proses van omringende data en funksies te manipuleer hierdie data in 'n enkele eenheid.

abstraksie en Enkapsulering verwant maar aanvullend begrippe.

  1. Abstraksie is die proses. Inkapseling is die meganisme waardeur Abstraksie is geïmplementeer.

  2. Abstraksie fokus op die waarneembare gedrag van 'n voorwerp. Inkapseling fokus op die implementering wat aanleiding gee tot hierdie gedrag gee.

Inligting verberg - Dit is die proses van die wegsteek van die implementering besonderhede van 'n voorwerp. Dit is 'n gevolg van Enkapsulering.

Inkapseling:die binding van die data lede en lid funksies saam genoem te beskerm.inkapseling is gedoen deur middel van die klas.onttrekking:die wegsteek van die implementering besonderhede vorm gebruik of uit die oog word genoem onttrekking.ex:int x;ons weet nie hoe int sal intern werk.maar ons weet int sal werk.wat is die onttrekking.

Abstraksie: Abstraksie is die konsep / tegniek gebruik om te bepaal wat die eksterne beskouing van 'n voorwerp moet wees. Maak slegs die vereiste koppelvlak beskikbaar.

Inligting verberg: Dit is aanvullend tot abstraksie, soos deur inligting wegkruip Abstraksie bereik. Wegkruip alles anders as die eksterne uitsig.

Enkapsulering: is bindend van data en verwante funksies in 'n eenheid. Dit fasiliteer onttrekking en inligting wegsteek. Sodat funksies soos lid toegang tot toegepas word op die eenheid te bereik abstraksie en Inligting wegkruip

Sien Joel se post op die wet van Leaky abstraksies

JoelOnsoftware

Eintlik onttrekken gee jou die vryheid van denke van 'n hoër vlak konsepte. 'N Nie-programmering analogie is dat die meeste van ons weet nie waar ons kos vandaan kom, of hoe dit geproduseer word, maar die feit dat ons (gewoonlik) nie hoef te bekommer oor dit ons bevry tot ander dinge te doen, soos programmering.

As vir inligting wegkruip, Ek stem saam met jamting.

Abstraksie kan jy 'n komplekse proses behandel as 'n eenvoudige proses. Byvoorbeeld, die standaard "lêer" onttrekking behandel lêers as 'n aaneenlopende reeks grepe. Die gebruiker / ontwikkelaar het nie eens te dink oor kwessies van clusters en fragmentasie. (Abstraksie verskyn gewoonlik as klasse of subroetines.)

Inligting wegkruip is oor jou abstraksies te beskerm teen kwaadwillige / onbevoegde gebruikers. Deur die beperking van beheer van 'n staat (toekennings hardeskyf, byvoorbeeld) om die oorspronklike ontwikkelaar, groot hoeveelhede fouthantering oorbodig. As niemand anders behalwe die lêerstelsel bestuurder kan skryf om die hardeskyf, dan is die lêerstelsel bestuurder weet presies wat geskryf is om die hardeskyf en waar. (Die gewone manifestasie van hierdie konsep is private en protected sleutelwoorde in OO tale.)

Om abstrakte iets wat ons nodig het om die detail te verberg of die detail van iets wat ons nodig het om abstrakte dit weg te steek. Maar, albei van hulle kan bereik word deur inkapseling.

So, inligting wegkruip is 'n doel, onttrekking is 'n proses, en inkapseling is 'n tegniek.

Abstraksie eenvoudig beteken dat die tegniek waarin net noodsaaklik besonderhede van sagteware sigbaar gemaak word om die gebruiker in staat om die gebruiker te help om te gebruik of te werk met sagteware, dus implementering besonderhede van daardie sagteware is nie getoon (is gemaak onsigbare). Enkapsulering is die tegniek wat pakket wat een of meer items te hou en dus 'n paar van inligting (veral program besonderhede) sigbaar geword en 'n paar nie sigbaar vir die gebruiker het, so inkapseling word bereik deur inligting wegsteek. Om op te som. Abstraksie is vir waarneembare gedrag (ekstern) en inkapseling is vir onsigbaarheid (intern) maar hierdie twee is regtig aanvullende.

Net voeg meer besonderhede rondom InformationHiding , gevind Hierdie skakel is regtig 'n goeie bron met voorbeelde

  

InformationHiding is die idee dat 'n ontwerp besluit moet word weggesteek van die res van die stelsel om onbedoelde koppeling te voorkom. InformationHiding is 'n ontwerpbeginsel. InformationHiding moet die manier waarop jy inlig omsluit dinge, maar natuurlik is dit nie hoef te .

     

Enkapsulering is 'n programmeertaal funksie.

En ek was baie verward oor die twee konsepte van abstraksie en Enkapsulering. Maar toe ek sien die onttrekking artikel op myjavatrainer.com het dit duidelik geword vir my dat abstraksie en Enkapsulering is appels en lemoene, jy kan nie hulle regtig vergelyk omdat albei vereis.

Enkapsulering is hoe die voorwerp is geskep, en onttrekking is hoe die voorwerp beskou word in die res van die wêreld.

Na die lees van al die bogenoemde antwoorde een vir een Ek kan nie myself keer om plaas dat

  

onttrekking behels die fasiliteit om voorwerpe wat abstrakte "akteurs" wat werk, verslag kan doen oor en verander hul staat, en "kommunikeer" met ander voorwerpe in die stelsel verteenwoordig definieer.

Enkapsulering is duidelik uit bogenoemde egter ->

  

Die term inkapseling verwys na die skuilplek van die staat besonderhede, maar die uitbreiding van die konsep van datatipe van vroeër programmeertale om gedrag ten sterkste assosieer met die data, en die standaardisering van die manier waarop verskillende tipes data omgaan, is die begin van abstraksie.

verwysing wiki

Enkapsulering: bindend data en die metodes wat daarop inwerk nie. dit laat die pak slae van data van alle ander metodes in ander klasse. Byvoorbeeld: MyList klas wat 'n item kan voeg, te verwyder 'n item, en verwyder alle items die metodes add, remove, en removeAll Wet op die lys (a private skikking) wat nie direk van buite verkry word.

Abstraksie: is die wegsteek van die non relevante gedrag en data. Hoe die items eintlik gestoor word, bygevoeg of verwyder word weggesteek (onttrek). My data gehou kan word in 'n eenvoudige skikking, Array List, LinkedList, en so aan. Ook, hoe die metodes geïmplementeer is verborge vir die buite.

Inkapseling - die handhawing van toegang tot die interne data in'n beheerde wyse of voorkoming van lede word direk toeganklik.

Abstraksie - die Wegsteek van die implementering besonderhede van sekere metodes is bekend as'n abstraksie

Laat ons verstaan met die hulp van'n voorbeeld:-

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
}

nou vir die onttrekking definieer'n metode wat kan slegs verkry word en die gebruiker nie weet wat is die liggaam van die metode en hoe dit werk Kom ons kyk na die bogenoemde voorbeeld, ons kan definieer'n metode gebied wat bereken die oppervlakte van die reghoek.

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

Nou, wanneer'n gebruiker gebruik die bogenoemde metode sal hy kry net die area nie die manier hoe dit bereken is, aantoon.Ons kan oorweeg om'n voorbeeld van println() metode wat ons weet net dat dit is wat gebruik word vir die druk en ons weet nie hoe dit druk die data.Ek het geskryf'n blog in detail wat jy kan sien die skakel hieronder vir meer inligting onttrekking vs inkapseling

Dit is die moeite werd let op hierdie bepalings het'n gestandaardiseerde, IEEE definisies, wat kan gesoek word by https://pascal.computer.org/.

onttrekking

  1. - aansig van'n voorwerp wat fokus op die inligting wat relevant is vir'n spesifieke doel en ignoreer die res van die inligting
  2. proses van die formulering van die oog
  3. proses van die onderdrukking van irrelevante detail om vas te stel'n vereenvoudigde model, of die resultaat van dié proses

inligting wegkruip

  1. sagteware-ontwikkeling tegniek wat in elke module se koppelvlakke openbaar so min as moontlik oor die module se innerlike werking en die ander modules verhoed die gebruik van die inligting oor die module wat nie in die module se koppelvlak spesifikasie
  2. insluiting van'n ontwerp of implementering besluit in'n enkele module sodat die besluit is weggesteek van ander modules

inkapseling

  1. sagteware-ontwikkeling tegniek wat bestaan uit isoleer'n stelsel funksie of'n stel data en bedrywighede op die data binne'n module en die verskaffing van die presiese spesifikasies vir die module
  2. konsep wat toegang tot die name, betekenis, en waardes van die verantwoordelikhede van'n klas is heeltemal geskei van toegang tot hul besef
  3. die idee dat'n module het'n buite-dit is apart van sy binnekant, dat dit'n eksterne koppelvlak en'n interne implementering
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top