Atšķirība starp abstrakciju un iekapsulēšanu

Gan abstrakcija, gan iekapsulēšana ir objektorientētas programmēšanas (OOP) pamatjēdzieni, kas ļauj reālās pasaules objektus ievietot programmās un kodos. Lai arī abi iet roku rokā, viņi ļoti atšķiras viens no otra. Lai arī katra metode ir iekapsulēšana, tā ir arī abstrakcija. Vienkārši izsakoties, saliekot dažādas lietas, lai izveidotu entītiju, jūs faktiski izveidojat jēdzienu - abstraktu. Lai arī abi ir tehniski neatdalāmi, viņiem burtiski nav nekā kopīga. Ir gandrīz taisnība, ka katra iekapsulēšana ir abstrakcija, jo viņi abi kaut ko slēpj, tomēr viņiem ir diezgan liela atšķirību daļa.

Kas ir abstrakcija?

Abstrakcija ir OOP pamatkoncepcija, kas koncentrējas tikai uz attiecīgajiem objekta datiem un slēpj visas nebūtiskās detaļas, kuras var būt vai nebūt vispārīgai vai specializētai uzvedībai. Tas slēpj pamatinformāciju un uzsver būtiskākos punktus, lai samazinātu sarežģītību un palielinātu efektivitāti. Būtībā abstrakcija ir programmēšanas rīks, lai pārvaldītu sarežģītību. Abstrakcija ir vērsta uz idejām, nevis uz notikumiem. Tas slēpj detaļas dizaina līmenī, nodrošinot lietotājiem funkcionalitāti. Iegūto objektu var saukt arī par abstrakciju. Programmētājs pārliecinās, ka nosauktajā entītijā būs ietverti visi būtiskie aspekti un neviens no nebūtiskajiem.

Ņemsim abstrakcijas reālās pasaules piemēru. Apsvērsim transportlīdzekļa gadījumu, kas šajā gadījumā ir jūsu transportlīdzeklis. Mehāniķis mēģina salabot jūsu automašīnu vai, teiksim, noteiktu automašīnas daļu. Šeit jūs esat lietotājs un nevēlaties iedziļināties savas automašīnas specifikā vai tajā, kāda daļa faktiski sabojājās. Jums faktiski šīs lietas nerūp; jūs vienkārši vēlaties, lai jūsu transportlīdzeklis atgrieztos sākotnējā stāvoklī, neuztraucoties par detaļām. Tātad, jūs faktiski teicāt mehāniķim, ko vēlaties, nodalot ieviešanas daļu. Tā ir abstrakcija. Jūs koncentrējāties uz vissvarīgāko lietu, proti, automašīnas fiksēšanu, nevis koncentrējāties uz specifiku.

Kas ir iekapsulēšana?

Iekapsulēšana ir vēl viens OOP jēdziens, kas datus un funkcijas sasaista vienā komponentā, vienlaikus ierobežojot piekļuvi dažiem komponentiem. Tas ir viens no galvenajiem OOP pamatjēdzieniem, kas datus un informāciju iesaiņo vienā vienībā. Tehniskā ziņā iekapsulēšana nozīmē atribūtu slēpšanu vairoga mainīgajiem no ārējas piekļuves, lai izmaiņas vienā lietojumprogrammas daļā neietekmētu pārējās daļas. Tieši pretēji, padarot informāciju atklātāku, jūs riskēsit nepareizi izmantot datus. Tas nodrošina datu pilnīgu integritāti, aizsargājot tos no ārpasaules. Vienkārši izsakoties, tas slēpj papildu detaļas no ārpasaules.

Ņemsim Bluetooth peles piemēru. Jums jāzina tikai par ierīces izturēšanos, neuztraucoties par sīkāku informāciju par ieviešanu, piemēram, kāda veida sensoriem ir pele, vai tā ir bezvadu, vai ne utt. Katra detaļa apraksta peli, bet neatkarīgi no detaļas, tā ir tikai pele. Jums ir nepieciešams interfeiss, lai izmantotu peli, kas šajā gadījumā ir peles rādītājs. Tā ir iekapsulēšana.

Atšķirība starp abstrakciju un iekapsulēšanu

Lai arī abi ir pamatjēdzieni, kas saistīti ar OOP, un ir tehniski neatdalāmi, tiem daudzos aspektos joprojām ir atšķirības.

  1. Atšķirības abstrakcijas un iekapsulēšanas “definīcijā” - Abstrakcija ir OOP pamatkoncepcija, kas uzsver visus objekta būtiskos aspektus, slēpjot nebūtiskas detaļas, lai palielinātu efektivitāti un novērstu sarežģītību. Savukārt iekapsulēšana ir datu slēpšanas mehānisms, kas iesaiņo datus un informāciju kapsulā, lai ierobežotu piekļuvi no ārpasaules.
  2. Atšķirības “funkcionalitātē” par abstrakciju un iekapsulēšanu- Abstrakcija ir datu slēpšanas mehānisms, kas izceļ tikai galvenās iezīmes, lai vienkāršotu sarežģītas programmas, savukārt iekapsulēšana, no otras puses, ir metode datu un kodu sasiešanai vienā entītijā. Ideja ir aizsargāt ieviešanas detaļas no ārējas piekļuves.
  3. Atšķirības abstrakcijas un iekapsulēšanas “ieviešanā” - Abstrakcija tiek realizēta, izmantojot abstraktu klasi un interfeisu, savukārt iekapsulēšana tiek realizēta, izmantojot piekļuves modifikatorus. Datu iekapsulēšanai tiek izmantoti pieci modifikatoru veidi: privāts, publisks, iekšējs, aizsargāts un aizsargāts iekšējs.
  4. Atšķirības jēdzienā par abstrakciju un iekapsulēšanu- Abstrakcijas ideja ir koncentrēties uz to, nevis kā. Iekapsulēšana slēpj iekšējo mehāniku kā. Piemēram, braucot ar automašīnu, jūs precīzi zināt, ko dara bremžu pedālis, bet, iespējams, nezināt visu aiz tā esošo mehānismu, jo dati ir iekapsulēti.
  5. Atšķirības abstrakcijas un iekapsulēšanas “piemērā” - Ņemsim viedtālruņa piemēru. Jūs zināt, ko tas dara, bet, iespējams, nezināt, kā tas tiek darīts. Jums rūp tikai displeja ekrāns un tastatūras pogas, nevis jāuztraucas par tā iekšējo shēmu. Šeit viedtālrunis ir abstrakts elements, kurā iekapsulētas iekšējās ieviešanas detaļas.

Abstrakcija salīdzinājumā ar iekapsulēšanu ar salīdzināšanas tabulu

Abstrakcija Iekapsulēšana
Tajā aplūkotas tikai būtiskas detaļas, slēpjot nebūtiskas, lai samazinātu sarežģītību, tādējādi palielinot efektivitāti. Tas datus un informāciju sasaista vienā vienībā, lai aizsargātu datus no ārējiem avotiem.
Tas attiecas uz ideju slēpt datus, kas nav nepieciešami prezentācijas vajadzībām. Tas slēpj datus un kodu, lai ierobežotu nevēlamu piekļuvi.
Tā koncentrējas uz to, nevis kā. Tas slēpj iekšējo mehāniku, kā tas kaut ko izdara.
Tas slēpj nevajadzīgas detaļas dizaina līmenī. Tas arī slēpj detaļas, bet ieviešanas līmenī.
Informācija un dati ir atdalīti no attiecīgajiem datiem. Informācija ir paslēpta kapsulā, lai tai varētu piekļūt.
Tas nodarbojas ar idejām, nevis notikumiem. Ideja ir aizsargāt datus no ārpasaules.
Tas tiek ieviests, izmantojot abstraktu klasi un interfeisu. Tas tiek ieviests, izmantojot aizsargātus, privātus un paketes privātas piekļuves pārveidotājus.

Kopsavilkums

Lai gan abi ir OOP jēdzieni, kas saistīti ar datu slēpšanu, tie ir diezgan atšķirīgi viens no otra. Abstrakcija attiecas arī uz slēpšanu, piemēram, iekapsulēšanu, bet, lai arī pirmā slēpj sarežģītību, otrā saglabā datus, ko iekapsulē, kontrolējot piekļuvi tiem. Abstrakcija attiecas uz jēdzienu, kurā attēlotas tikai nepieciešamās pazīmes, slēpjot nebūtiskas detaļas, lai samazinātu pieteikuma sarežģītību, tādējādi palielinot efektivitāti. Savukārt iekapsulēšana attiecas uz visas programmas iekšējās mehānikas slēpšanu, lai pasargātu informāciju no nevēlamas piekļuves. Tas saista datus un informāciju vienā komponentā, ierobežojot piekļuvi citiem komponentiem.