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.
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.
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.
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.
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. |
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.