Abstraksjon og innkapsling er både grunnleggende objektorientert programmering (OOP) konsepter som lar deg implementere virkelige objekter i programmer og koder. Mens begge går hånd i hånd, er de svært forskjellige fra hverandre. Mens hver metode er en innkapsling, er det også en abstraksjon. Enkelt sagt, når du setter forskjellige ting sammen for å skape en enhet, lager du faktisk et konsept - et abstrakt. Mens begge er teknisk uadskillelige, har de bokstavelig talt ingenting til felles. Det er nesten sant at hver innkapsling er en abstraksjon fordi de begge skjuler noe, men de har sin rettferdige andel av forskjeller.
Abstraksjon er et grunnleggende OOP-konsept som fokuserer på bare de relevante dataene til et objekt og gjemmer alle de irrelevante detaljene som kanskje eller ikke er for generisk eller spesialisert oppførsel. Den gjemmer bakgrunnsdetaljene og legger vekt på viktige punkter for å redusere kompleksiteten og øke effektiviteten. I utgangspunktet er abstraksjon et programmeringsverktøy for å håndtere kompleksitet. Abstraksjon fokuserer på ideer i stedet for hendelser. Den skjuler detaljene på designnivået ved å gi brukerne funksjonalitet. Den resulterende gjenstanden kan også kalles en abstraksjon. Programmereren sørger for at den navngitte enheten har alle de essensielle aspektene som inngår og ingen av de irrelevante.
La oss ta et ekteeksempel på abstraksjon. La oss vurdere saken om et kjøretøy, som i dette tilfellet er kjøretøyet ditt. En mekaniker prøver å reparere bilen din eller la oss si en bestemt del av bilen din. Her er du brukeren, og du vil ikke komme inn i spesifikasjonene til bilen din eller hvilken del som faktisk brøt. Du bryr deg egentlig ikke om disse tingene; du vil bare ha bilen tilbake i sin opprinnelige tilstand uten å bekymre deg for detaljene. Så, du fortalte faktisk mekanikeren hva du vil ved å adskille implementeringsdelen. Dette er abstraksjon. Du fokuserte på det mest essensielle, som får bilen fast, i stedet for å fokusere på detaljene.
Innkapsling er enda et OOP-konsept som binder data og funksjoner til en enkelt komponent, samtidig som tilgangen til enkelte komponenter begrenses. Det er en av de viktigste grunnleggende konseptene for OOP som bryter data og informasjon under en enkelt enhet. I tekniske termer betyr innkapsling å gjemme attributter for å skjerme variabler fra utenfor tilgang, slik at endring i en del av et program ikke vil påvirke de andre delene. Tvert imot, ved å gjøre informasjonen mer åpen, vil du risikere misbruk av data. Det gir grunnleggende integritet til dataene ved å beskytte den fra omverdenen. Enkelt sagt skjuler den ekstra detaljer fra omverdenen.
La oss ta et eksempel på en Bluetooth-mus. Du trenger bare å vite om enhetens oppførsel uten å bekymre deg for implementeringsdetaljer som hva slags sensorer musen har, det er trådløs eller ikke, etc. Hver eneste detalj beskriver musen, men uansett detaljene er det bare en mus. Du trenger bare et grensesnitt for å bruke musen, som i dette tilfellet er musepekeren. Dette er innkapsling.
Mens begge er grunnleggende begreper knyttet til OOP, og de er teknisk uadskillelige, har de fortsatt forskjeller i mange aspekter.
Abstraksjon | innkapsling |
Det omhandler bare de relevante detaljene ved å gjemme de irrelevante til å redusere kompleksiteten og dermed øke effektiviteten. | Det binder dataene og informasjonene sammen til en enkelt enhet for å beskytte dataene fra eksterne kilder. |
Det refererer til ideen om å skjule data som ikke er nødvendig for presentasjonsformål. | Den skjuler dataene og koden for å begrense uønsket tilgang. |
Det fokuserer på hva heller enn hvordan. | Den skjuler den indre mekanikken av hvordan den gjør noe. |
Den skjuler unødvendige detaljer på designnivået. | Det skjuler også detaljene, men på implementeringsnivået. |
Informasjon og data er skilt fra relevante data. | Informasjon er skjult inne i en kapsel for nær tilgang. |
Det handler om ideer i stedet for hendelser. | Tanken er å beskytte data fra omverdenen. |
Det er implementert ved hjelp av abstrakt klasse og grensesnitt. | Den er implementert ved hjelp av beskyttede, private og pakke-private tilgangsmodifiseringer. |
Mens begge er OOP konsepter relatert til data gjemmer seg, er de ganske forskjellige fra hverandre. Abstraksjon gjelder også å gjemme som innkapsling, men mens den tidligere gjemmer kompleksiteten, beholder sistnevnte dataene den innkapsler ved å kontrollere tilgangen til dem. Abstraksjon refererer til konseptet om å representere kun de nødvendige funksjonene ved å gjemme de irrelevante detaljene for å redusere kompleksiteten til en applikasjon og dermed øke effektiviteten. Encapsulation, derimot, refererer til konseptet om å skjule alle interne mekanikkene til et program for å beskytte informasjonen fra uønsket tilgang. Det binder dataene og informasjonene sammen til en enkelt komponent ved å begrense tilgangen til andre komponenter.