1. Pambuka

Kita pengin nyawisake pelajaran dina iki kanggo enkapsulasi . Sampeyan wis ngerti apa iku ing istilah umum.

Enkapsulasi

Apa keuntungan saka enkapsulasi? Ana sawetara, nanging aku bisa nemtokake papat sing, miturut pendapatku, sing utama:


2. Negara internal sing sah

Ing program, kahanan asring muncul nalika obyek sesambungan karo sawetara kelas liyane. Interaksi karo obyek kasebut bisa ngrusak data ing njero obyek, saengga obyek kasebut ora bisa terus mlaku kaya sing dikarepake.

Akibaté, obyek kudu nglacak owah-owahan ing data internal, utawa luwih apik, nggawe owah-owahan dhewe.

Yen kita ora pengin sawetara variabel diganti dening kelas liyane, banjur kita wara-wara iku pribadi. Sawise kita nindakake iku, mung cara saka kelas dhewe bisa ngakses. Yen kita pengin variabel mung diwaca, mula kita kudu nambahake public getterkanggo variabel sing cocog.

Contone, umpamane kita pengin kabeh wong bisa ngerti jumlah unsur ing koleksi kita, nanging kita ora pengin dheweke bisa ngganti koleksi kasebut tanpa ijin. Banjur kita ngumumake private int countvariabel lan public getCount()metode.

Panggunaan enkapsulasi sing tepat mesthekake yen ora ana kelas sing bisa langsung ngakses data internal kelas kita, mulane nyegah owah-owahan sing ora bisa dikontrol. Owah-owahan kasebut mung bisa ditindakake kanthi nelpon metode kelas sing padha karo variabel sing diganti.

Luwih becik nganggep manawa programer liyane bakal nggunakake kelas sampeyan kanthi cara sing paling trep kanggo dheweke, dudu cara sing paling aman kanggo sampeyan (kanggo kelas sampeyan). Prilaku iki minangka sumber saka loro kewan omo uga upaya kanggo nyegah.


3. Validasi metode argumen

Kadhangkala kita kudu ngesyahke argumen sing diterusake menyang metode kita. Contone, kita duwe kelas sing makili wong lan ngijini sampeyan nyetel tanggal lair. Kita kudu mriksa kabeh data input kanggo mesthekake yen cocog karo logika program lan logika kelas kita. Contone, ora ngidini tanggal lahir ing sasi kaping 13 utawa tanggal 30 Februari, lan liya-liyane.

Yagene ana wong sing nuduhake tanggal 30 Februari kanggo tanggal lair? Kaping pisanan, iki bisa dadi kesalahan pangguna nalika ngetik data. Kapindho, program bisa uga akeh kesalahane sadurunge wiwit mlaku kaya jam. Contone, kahanan ing ngisor iki bisa uga.

Programmer nulis program sing ngenali wong sing ulang tahune sesuk. Contone, ayo umpamane dina iki tanggal 3 Maret. Program kasebut nambahake nomer 2 ing dina sasi saiki lan nggoleki saben wong sing lair tanggal 5 Maret. Kayane kabeh wis bener.

Nanging nalika tanggal 30 Maret, program kasebut ora bakal nemokake sapa wae, amarga tanggalan ora ana 32 Maret. Program kasebut duwe kesalahan sing luwih sithik yen kita mriksa data sing dikirim menyang metode.

Elinga nalika kita sinau ArrayListlan nganalisa kode kasebut? Kita weruh yen metode getlan setmriksa manawa indexluwih gedhe utawa padha karo nol lan kurang saka dawa array. Apa maneh, cara iki mbuwang pangecualian yen indeks kasebut ana ing njaba wates array. Iki minangka conto klasik validasi input.


4. Nyilikake kesalahan nalika ngganti kode

Upaminipun kita wrote kelas super migunani nalika kita padha melu ing project gedhe. Saben uwong seneng banget supaya programer liyane wiwit nggunakake ing atusan panggonan ing kode.

Kelas kasebut migunani banget nganti sampeyan mutusake kanggo nambah sawetara. Nanging yen sampeyan mbusak cara apa wae saka kelas, kode puluhan wong bakal mandheg nyusun. Dheweke kudu nulis maneh kabeh. Lan luwih akeh owah-owahan sing sampeyan lakoni, luwih akeh kesalahan sing bakal digawe. Sampeyan bakal ngrusak akeh kumpulan lan sampeyan bakal disengiti.

Nanging nalika ngganti cara sing diumumake minangka pribadi, kita ngerti yen ora ana kelas liyane ing ngendi wae sing bisa nelpon metode kasebut. Kita bisa nulis maneh, ngganti jumlah paramèter lan jinis, lan kode eksternal sing gumantung bakal terus bisa digunakake. Inggih, paling ora bakal kompilasi.


5. Kita mutusake carane obyek kita sesambungan karo obyek njaba

Kita bisa mbatesi sawetara tumindak sing bisa ditindakake karo obyek kita. Contone, umpamane, kita pengin obyek bisa instantiated mung sapisan. Malah yen bisa digawe ing sawetara panggonan ing project. Lan kita bisa nindakake iki thanks kanggo enkapsulasi.

Enkapsulasi 2

Enkapsulasi ngidini kita nambah watesan tambahan , sing bisa diowahi dadi keuntungan tambahan . Contone, Stringkelas dileksanakake minangka obyek sing ora bisa diganti . Sawijining obyek saka Stringkelas iku ora bisa diganti saka wayahe digawe nganti wayahe mati. Kabeh metode kelas String( remove, substring, ...), ngasilake string anyar tanpa owah-owahan ing obyek sing diarani.

Enkapsulasi minangka perkara sing menarik banget.