"Halo, Amigo! Aku arep ngaturake kuliah dina iki kanggo enkapsulasi . Sampeyan wis duwe gagasan umum apa iku."

Enkapsulasi - 1

Dadi apa kaluwihan enkapsulasi? Ana akeh, nanging aku bakal nuduhake papat, sing paling penting:

1) Status internal sing sah.

Program kerep duwe sawetara kelas sing sesambungan karo obyek sing padha. Kanthi sesambungan bebarengan karo data internal obyek, bisa uga nglanggar integritas data obyek, nyebabake obyek ora bisa digunakake kanthi bener.

Dadi obyek kasebut kudu nglacak owah-owahan ing data internal, utawa luwih apik - mesthine sing nggawe owah-owahan kasebut.

Yen kita ora pengin sawetara variabel kelas diganti dening kelas liyane, banjur kita wara-wara iku private , kang tegese mung cara kelas kang bisa ngakses. Yen kita pengin variabel mung diwaca kanggo kelas liyane, banjur kita nambah getter umum kanggo variabel kasebut.

Contone, kita bisa uga pengin kabeh wong ngerti jumlah unsur sing ana ing koleksi kita, nanging ora ana sing bisa ngganti tanpa ijin. Ing kasus iki, kita ngumumake count int pribadi variabel lan metode public getCount() .

Enkapsulasi sing tepat njamin yen kelas liyane ora bisa langsung ngakses data internal kelas kita lan, akibate, ora bisa ngowahi tanpa kita bisa ngontrol tumindake. Dheweke kudu nelpon metode ing kelas sing ngemot variabel sing bakal diganti.

Luwih becik nganggep manawa programer liyane bakal nggunakake kelas sampeyan kanthi cara sing paling trep kanggo dheweke, ora kanthi cara sing paling aman kanggo sampeyan (utawa kelas sampeyan). Iki minangka sumber kewan omo, lan cara kanggo nyegah.

2) Priksa parameter.

Kadhangkala sampeyan kudu mriksa paramèter sing diwenehake menyang metode kelas sampeyan. Contone, umpamane kita duwe kelas sing makili "wong" lan sampeyan bisa nemtokake tanggal lair. Kita kudu verifikasi manawa data sing dilewati cocog karo logika program lan logika kelas. Contone, ora ana sasi kaping 13, ora ana 30 Februari, lsp.

"Napa ana wong sing nuduhake tanggal lair tanggal 30 Februari?"

"Inggih, pisanan kabeh, iku bisa dadi asil saka kesalahan entri data."

Kapindho, sadurunge program dianggo kaya clockwork, bisa uga akeh kewan omo. Contone, kedadeyan kaya iki.

A programmer nulis kode sing nemtokake sing duwe ulang dina sawise sesuk. Ayo ngomong dina iki 3 Maret. Program nambah 2 tanggal saiki lan nemokake kabeh wong sing lair ing Maret 5. Nganti saiki, apik banget.

Nanging nalika tanggal 30 Maret, program kasebut ora nemokake sapa wae, amarga ora ana tanggal 32 Maret.

"Aku elinga nalika kita sinau ArrayList Aku katon ing kode sawijining, lan ana mriksa ing njaluk lan nyetel cara kanggo mesthekake yen parameter indeks luwih saka utawa padha karo nul lan kurang saka dawa Uploaded. Kode bakal uncalan a pangecualian yen larik ora duwe unsur sing cocog karo indeks.

"Ya, iku mriksa input klasik. "

3) Kurang kewan omo nalika ngganti kode ing kelas.

Upaminipun kita wrote kelas tenan mbiyantu minangka bagéan saka project ageng. Kabeh wong seneng banget nganti programer liyane wiwit nggunakake ing atusan panggonan ing kode dhewe.

Kelas kasebut pancen migunani banget, mula sampeyan mutusake kanggo nambah. Nanging yen sampeyan ngilangi salah sawijining metode ing kelas kasebut, kode puluhan programmer liyane ora bakal dikompilasi maneh. Dheweke kudu cepet nulis maneh kode kasebut. Lan luwih akeh nulis ulang sing kedadeyan, luwih akeh kesempatan kanggo kewan omo. Yen sampeyan ajeg ngrusak bangunan, sampeyan bakal disengiti.

Nanging yen kita ngganti metode sing ditandhani minangka pribadi, kita ngerti yen metode kasebut ora diarani kode wong liya ing endi wae. Kita bisa nulis maneh, lan ngganti nomer lan jinis paramèter, lan kode gumantung isih bisa digunakake. Utawa paling ora bakal dikompilasi.

4) Kita nemtokake cara obyek liyane bakal sesambungan karo obyek kita.

Kita bisa mbatesi tumindak apa sing bisa ditindakake ing obyek kita. Contone, kita bisa uga pengin mung siji Kayata saka kelas digawe-sanajan digawe ing sawetara panggonan bebarengan ing project. Lan kita bisa entuk iki nggunakake enkapsulasi.

Enkapsulasi - 2

Enkapsulasi ngidini kita ngetrapake watesan tambahan sing bisa dadi keuntungan tambahan . Contone, kelas String diimplementasikake minangka obyek sing ora bisa diganti . Kedadean saka kelas String ora bisa diowahi antarane nggawe lan karusakan. Kabeh cara saka kelas String (mbusak, substring, ...) ngasilake senar anyar lan ora ngganti obyek sing diarani.

"Sapi suci. Dadi kaya ngono."

"Encapsulation nyenengake."

"Aku setuju."