JavaRush /Blog Java /Random-MS /Konsep Pengaturcaraan Berorientasikan Objek JAVA
shabnahm
Tahap

Konsep Pengaturcaraan Berorientasikan Objek JAVA

Diterbitkan dalam kumpulan
JAVA adalah berdasarkan konsep pengaturcaraan berorientasikan objek, yang membolehkan anda bergerak ke tahap abstraksi yang lebih tinggi untuk menyelesaikan sebarang masalah dengan cara yang realistik. Pendekatan berorientasikan objek mengkonsepkan penyelesaian kepada masalah dari segi objek dunia sebenar yang lebih mudah untuk digunakan semula dalam aplikasi. Contohnya, Chair(kerusi), Fan(kipas), Dog(Anjing), Computer(komputer) dan sebagainya. Dalam JAVA, kelas ialah susun atur, templat atau prototaip yang mentakrifkan kelakuan umum objek bagi jenis tertentu. Contoh ialah pelaksanaan kelas yang berasingan, dan semua kejadian kelas mempunyai sifat yang sama, yang diterangkan dalam definisi kelas. Sebagai contoh, anda boleh mentakrifkan kelas bernama House dengan bilangan bilik sebagai atribut dan mencipta tika kelas seperti rumah dua bilik, rumah tiga bilik dan sebagainya. Konsep Pengaturcaraan Berorientasikan Objek JAVA - 1Kelebihan: Di bawah disenaraikan beberapa kelebihan pembangunan perisian berorientasikan objek.
  • Mengurangkan kos sokongan perisian, terutamanya disebabkan oleh fakta bahawa ia dijalankan secara modular.
  • Penggunaan semula kod yang dipertingkatkan melalui ciri seperti warisan, menghasilkan pembangunan perisian yang lebih pantas.
  • Meningkatkan kebolehpercayaan dan fleksibiliti kod.
  • Kemudahan pemahaman kerana simulasi dunia sebenar.
  • Abstraksi yang lebih baik pada peringkat objek.
  • Mengurangkan kerumitan peralihan dari satu fasa pembangunan ke fasa yang lain.
Terdapat empat ciri utama OOP:
  • Enkapsulasi
  • Warisan
  • Polimorfisme
  • Abstraksi

Enkapsulasi

Enkapsulasi bertindak sebagai kontrak untuk objek apa yang harus disembunyikan dan apa yang harus dibuka untuk akses oleh objek lain. Dalam JAVA, kami menggunakan pengubah suai akses privateuntuk menyembunyikan kaedah dan menyekat akses kepada pembolehubah dari dunia luar. JAVA juga mempunyai pelbagai pengubah akses: public, lalai, protected, private, yang digunakan untuk menyekat keterlihatan pada tahap yang berbeza. Tetapi matlamat utama adalah untuk merangkum perkara-perkara yang tidak boleh diubah. Pendekatan yang paling berkesan ialah kelas hanya perlu mempunyai satu sebab untuk berubah, dan enkapsulasi menjadikan reka bentuk "satu sebab" itu realiti. Pendekatan yang betul untuk enkapsulasi adalah untuk menyembunyikan perkara yang kerap berubah untuk mengelakkan daripada merosakkan kelas lain. Faedah: Di bawah adalah beberapa faedah enkapsulasi:
  • Kita boleh melindungi keadaan dalaman objek dengan menyembunyikan atributnya.
  • Ini meningkatkan modulariti kod kerana ia menghalang objek daripada berinteraksi dengan cara yang tidak dijangka.
  • Meningkatkan kebolehgunaan kod.
  • Ini menyokong hubungan kontrak entiti tertentu.
  • Enkapsulasi menjadikan perisian lebih mudah diselenggara.
  • Perubahan kepada kod boleh dibuat secara bebas antara satu sama lain.

Polimorfisme

Polimorfisme dalam pengaturcaraan ialah keupayaan untuk menyediakan antara muka yang sama untuk bentuk asas yang berbeza (jenis data). Ini bermakna kelas yang mempunyai fungsi berbeza berkongsi antara muka yang sama dan boleh dipanggil secara dinamik dengan menghantar parameter melalui rujukan. Contoh klasik ialah kelas Shape(bentuk) dan semua kelas yang mewarisi daripadanya: square(segi empat sama), circle(bulatan), dodecahedron(dodecahedron), irregular polygon(poligon tidak sekata), splat(gumpalan), dan sebagainya. Dalam contoh ini, setiap kelas akan mempunyai kaedah sendiri Draw()dan kod klien hanya boleh melakukan:
Shape shape = new Shape();
Shape.area()untuk mendapatkan kelakuan yang betul dalam sebarang bentuk Keindahan polimorfisme ialah kod itu, berfungsi dengan kelas yang berbeza, tidak perlu mengetahui kelas mana yang digunakan, kerana semuanya berfungsi pada prinsip yang sama. Proses yang digunakan oleh bahasa pengaturcaraan berorientasikan objek untuk melaksanakan polimorfisme dinamik dipanggil pengikatan dinamik. Nota: Polimorfisme ialah keupayaan untuk memilih kaedah yang lebih khusus untuk dilaksanakan bergantung pada objek. Polimorfisme berlaku apabila kelas abstrak tidak terlibat. Kelebihan:
  • Mencipta kod boleh guna semula. Iaitu, sebaik sahaja kelas dibuat, dilaksanakan dan diuji, ia boleh digunakan secara bebas tanpa perlu risau tentang apa sebenarnya yang tertulis di dalamnya.
  • Ini membolehkan kod yang lebih generik dan gandingan longgar.
  • Masa kompilasi dikurangkan, yang mempercepatkan pembangunan.
  • Pautan dinamik.
  • Antara muka yang sama boleh digunakan untuk mencipta kaedah dengan pelaksanaan yang berbeza.
  • Keseluruhan pelaksanaan boleh digantikan dengan menggunakan tandatangan kaedah yang sama.
Kaedah mengatasi sebagai sebahagian daripada polimorfisme. Penggantian berinteraksi dengan dua kaedah: kaedah dalam kelas induk dan kaedah dalam kelas terbitan. Kaedah ini mempunyai nama dan tandatangan yang sama. Overriding membolehkan anda melakukan operasi yang sama dengan cara yang berbeza untuk jenis objek yang berbeza. Sebagai contoh:
while(it.hasNext()) {
Shape s = (Shape) it.next();
totalArea += s.area(dim); //будет применен полиморфизм и вызван нужный метод для каждого an object.
}
Konsep Pengaturcaraan Berorientasikan Objek JAVA - 2Lebihan kaedah atau polimorfisme ad-hoc atau polimorfisme statik Lebih muatan berinteraksi dengan berbilang kaedah kelas yang sama yang dinamakan sama tetapi mempunyai tandatangan kaedah yang berbeza. Muat semula membolehkan anda menerangkan operasi yang sama dengan cara yang berbeza untuk data yang berbeza. Ia kadang-kadang dipanggil polimorfisme statik, tetapi sebenarnya ia bukan polimorfisme. Ini tidak lebih daripada sekadar mempunyai dua kaedah dengan nama yang sama, tetapi senarai hujah yang berbeza. But semula tiada kaitan dengan pewarisan dan polimorfisme. Dan kaedah terlebih beban sama sekali tidak sama dengan kaedah yang ditindih. Polimorfisme Parametrik melalui Penjanaan dalam JAVA Apabila mengisytiharkan kelas, medan nama boleh dikaitkan dengan jenis yang berbeza, dan nama kaedah boleh dikaitkan dengan parameter dan jenis pulangan yang berbeza. JAVA menyokong polimorfisme parametrik dengan menggunakan generik.
List<String> list = new ArrayList<String>();
Mengapa kita tidak boleh mengatasi kaedah statik dalam JAVA? Penggantian bergantung pada kewujudan contoh kelas. Idea polimorfisme ialah anda boleh mencipta subkelas, dan objek yang dilaksanakan oleh subkelas tersebut akan berkelakuan berbeza dengan kaedah kelas induk yang sama (ditindih dalam subkelas). Kaedah statik tidak dikaitkan dengan mana-mana kejadian kelas, jadi konsep mengatasi dirinya tidak boleh digunakan. Pencipta JAVA dipandu oleh dua pertimbangan yang mempengaruhi pendekatan ini. Pertama, terdapat masalah pelaksanaan kod: terdapat banyak kritikan terhadap Smalltalk kerana lambat (pengumpulan sampah dan polimorfisme adalah sebahagian daripada masalah ini), dan JAVA direka untuk mengelakkan ini. Pertimbangan kedua ialah keputusan bahawa khalayak sasaran JAVA ialah pembangun C++. Mempunyai kaedah statik berfungsi dengan cara ini sangat biasa kepada pengaturcara C++, dan juga mempercepatkan perkara kerana tidak perlu naik hierarki kelas untuk mengetahui kaedah yang hendak dipanggil. Anda pergi terus ke kelas dan memanggil kaedah tertentu.

Warisan

Warisan ialah tindakan menggabungkan tingkah laku (iaitu kaedah) dan keadaan (iaitu pembolehubah) kelas asas ke dalam kelas terbitan supaya ia tersedia dalam kelas terbitan itu. Kelebihan utama pewarisan ialah ia menyediakan mekanisme formal untuk penggunaan semula kod dan mengelakkan pertindihan. Kelas yang diwarisi memanjangkan kefungsian aplikasi dengan menyalin kelakuan kelas induk dan menambah kefungsian baharu. Ini menjadikan kod sangat digabungkan. Jika anda ingin menukar superclass, anda perlu mengetahui semua butiran subclass supaya tidak memecahkan kod. Warisan ialah satu bentuk penggunaan semula perisian di mana kelas baharu (subkelas) dicipta daripada kelas sedia ada (superclass) yang meluaskan fungsinya dan menggunakan beberapa sifat superclass. Jadi, jika anda mempunyai kelas induk dan kemudian kelas anak muncul, anak itu mewarisi semua perkara yang dimiliki ibu bapa. Kelebihan:
  • Penggunaan semula kod yang dipertingkatkan.
  • Hubungan logik "adalah" (adalah seseorang, sesuatu) ditubuhkan. Contohnya: Anjing ialah n haiwan . (Anjing adalah haiwan).
  • Modularisasi kod.
  • Pengulangan dikecualikan.
Cacat:
  • Digandingkan dengan ketat: Subkelas bergantung pada pelaksanaan kelas induk, menjadikan kod itu digabungkan dengan ketat.
Apa lagi yang perlu dibaca:

Kumpulan Pembangun Java:

Abstraksi

Abstraksi bermaksud mereka bentuk kelas berdasarkan antara muka dan fungsinya, tanpa mengambil kira butiran pelaksanaan. Kelas abstrak mewakili antara muka tanpa memasukkan pelaksanaan sebenar. Ia membezakan pelaksanaan sesuatu objek daripada kelakuannya. Abstraksi memudahkan kod dengan menyembunyikan butiran yang tidak penting. Kelebihan:
  • Dengan menggunakan abstraksi, kita boleh memisahkan apa yang boleh dikumpulkan ke dalam beberapa jenis.
  • Sifat dan kaedah yang kerap diubah suai boleh dikumpulkan ke dalam jenis yang berasingan, jadi jenis utama tidak akan tertakluk kepada perubahan. Ini mengukuhkan prinsip OOP: "Kod harus dibuka kepada Sambungan, tetapi ditutup kepada Perubahan . "
  • Abstraksi memudahkan perwakilan model domain.
Perbezaan antara abstraksi dan enkapsulasi Enkapsulasi ialah strategi yang digunakan sebagai sebahagian daripada abstraksi. Enkapsulasi merujuk kepada struktur objek: objek merangkum sifatnya dan menyembunyikannya daripada akses luar. Pengguna kelas berinteraksi dengannya menggunakan kaedahnya, tetapi tidak mempunyai akses langsung kepada struktur kelas. Dengan cara ini, kelas mengabstraksi butiran pelaksanaan yang berkaitan dengan reka bentuknya. Abstraksi adalah istilah yang lebih umum. Ia juga boleh dicapai, antara lain, menggunakan subkelas. Sebagai contoh, kelas List(senarai) dalam perpustakaan standard ialah abstraksi untuk jujukan elemen, diindeks mengikut tempatnya dalam senarai. Contoh khusus senarai Listialah ArrayListatau LinkedList. Kod yang berinteraksi dengan senarai Listmenghilangkan butiran senarai yang digunakannya. Selalunya abstraksi tidak boleh dilakukan tanpa menyembunyikan keadaan asas menggunakan enkapsulasi. Jika kelas mendedahkan struktur dalamannya, ia tidak boleh mengubah operasi dalamannya, dan oleh itu tidak boleh diabstraksikan. Apakah kelas abstrak dan kaedah abstrak? Ia berlaku bahawa semasa pembangunan anda mahu kelas asas hanya menyediakan antara muka kepada kelas terbitannya. Iaitu, anda tidak mahu sesiapa membuat kejadian kelas asas. Anda perlu menggunakan antara muka sedemikian rupa sehingga anda hanya menghantar objek kepadanya (ini ialah hantaran tersirat yang membenarkan tingkah laku polimorfik). Ini dicapai dengan menjadikan kelas ini abstrak menggunakan kata kunci abstract. Ini mengenakan beberapa sekatan, seperti ketidakupayaan untuk mencipta contoh kelas abstrak; apabila menggunakan kelas abstrak, adalah perlu untuk melaksanakan kaedah abstrak. Ini memastikan polimorfisme. Kelas abstrak boleh mengandungi kedua-dua kaedah abstrak dan konkrit. Jika sekurang-kurangnya satu kaedah dalam kelas diisytiharkan abstrak, keseluruhan kelas juga mesti diisytiharkan abstrak. Walau bagaimanapun, peraturan dalam arah yang bertentangan tidak perlu dipatuhi. Jika kelas diisytiharkan abstrak, ia mungkin tidak mengandungi kaedah abstrak. Kaedah yang hanya mentakrifkan tandatangannya dan tidak menyediakan pelaksanaan dipanggil abstrak. Pelaksanaan sebenar diserahkan kepada subkelasnya, yang memanjangkan kelas abstrak. Kaedah abstrak tidak boleh digunakan oleh objek, hanya kelas lain boleh memanjangkannya. Bilakah anda perlu menggunakan kelas abstrak? Kelas abstrak membolehkan anda menentukan beberapa tingkah laku lalai dan mempunyai subkelas yang menyediakan sebarang tingkah laku tertentu. Contohnya: List(senarai) ialah antara muka, seterusnya AbstractListmentakrifkan kelakuan asas Senarai, yang boleh digunakan sebagaimana adanya atau diperhalusi dalam subkelas, contohnya, dalam ArrayList(tatasusunan senarai). Apakah antara muka? Konsep antara muka ialah kelas abstrak, tetapi antara muka (ditakrifkan oleh kata kunci interface) melangkah lebih jauh. Ia menghalang sebarang pelaksanaan kaedah atau fungsi sama sekali. Anda hanya boleh mengisytiharkan kaedah atau fungsi, tetapi tidak menyediakan pelaksanaannya. Kelas yang melaksanakan antara muka mesti menjaga pelaksanaan sebenar. Antara muka sangat berguna dan digunakan secara meluas dalam OOP. Memandangkan mereka berkongsi antara muka itu sendiri dan pelaksanaannya, mereka memberikan banyak kelebihan penggunaannya:
  1. Pusaka berbilang .
  2. Gandingan longgar . Terdapat abstraksi operasi, seperti pelapisan, dan pelaksanaan konkrit boleh menjadi apa sahaja: JDBC, JPA, JTA, dll.
  3. Program antara muka tidak dilaksanakan .
  4. Polimorfisme pengikatan dinamik : Antara muka pengaturcaraan objek terdedah tanpa mendedahkan pelaksanaan sebenarnya.
  5. Tahap abstrak , pemisahan fungsi.
Perbezaan antara antara muka dan kelas abstrak.
  • Antara muka ialah hubungan kontrak dengan kelas yang melaksanakan antara muka ini, menyatakan bahawa pelaksanaan berlaku mengikut cara yang ditetapkan oleh antara muka. Ini adalah cangkang kosong dengan kaedah yang diisytiharkan.
  • Kelas abstrak mentakrifkan beberapa tingkah laku umum dan meminta subkelasnya untuk mentakrifkan tingkah laku atipikal atau khusus untuk kelas mereka.
  • Kaedah dan ahli kelas abstrak boleh ditetapkan dengan mana-mana pengubah suai akses; seterusnya, semua kaedah antara muka mestilah awam.
  • Apabila mewarisi kelas abstrak, kelas keturunan mesti menentukan kaedah abstrak, manakala antara muka boleh mewarisi antara muka lain tanpa semestinya menentukan kaedahnya.
  • Kelas keturunan boleh memanjangkan hanya satu kelas abstrak, tetapi antara muka boleh melanjutkan atau kelas boleh melaksanakan banyak antara muka lain.
  • Kelas keturunan boleh mentakrifkan kaedah abstrak dengan pengubah suai akses yang sama atau kurang ketat, tetapi kelas yang melaksanakan antara muka mesti menentukan kaedah dengan tahap keterlihatan yang sama.
  • Antara muka tidak mengandungi pembina, manakala kelas abstrak mengandungi.
  • Pembolehubah yang diisytiharkan dalam antara muka Java adalah muktamad secara lalai. Kelas abstrak boleh mengandungi pembolehubah yang tidak muktamad.
  • Semua ahli antara muka Java adalah public. Ahli kelas abstrak mampu menjadi public, protecteddsb.

Komposisi

Penggunaan semula kod boleh dicapai menggunakan kedua-dua warisan dan gubahan. Tetapi menggunakan komposisi memberikan tahap pengkapsulan yang lebih tinggi daripada warisan, kerana perubahan pada kelas hujung belakang tidak semestinya akan menjejaskan kod yang dimiliki oleh kelas hujung hadapan. Komposisi ialah teknik reka bentuk yang menggunakan perhubungan “has-a” (mempunyai, termasuk) dalam kelas. Kedua-dua warisan java dan komposisi objek boleh digunakan untuk menggunakan semula kod. Intipati komposisi adalah untuk menyatakan hubungan "mempunyai" antara objek. Fikirkan tentang kerusi. Kerusi ada tempat duduk. Kerusi ada belakang. Kerusi mempunyai bilangan kaki tertentu. Frasa "mempunyai" mencadangkan hubungan di mana kerusi itu mempunyai, atau sekurang-kurangnya menggunakan, objek lain. Ini adalah tepat hubungan "mempunyai-a", yang merupakan asas komposisi. Kelebihan:
  • Kawalan keterlihatan
  • Pelaksanaan boleh digantikan pada masa jalan
  • Gandingan longgar, kerana kelas antara muka tidak bergantung pada pelaksanaan.
Perbezaan antara komposisi dan warisan
Tidak. Komposisi (mempunyai / mempunyai) Warisan (adalah / adalah)
1 Menyokong polimorfisme dan penggunaan semula kod. Menyokong polimorfisme dan penggunaan semula kod.
2 Objek masa jalan telah pun dibuat. Objek dicipta secara dinamik pada masa penyusunan.
3 Pelaksanaan boleh digantikan pada masa jalan. Pelaksanaan boleh diubah pada masa penyusunan.
4 Subkelas adalah bebas daripada kelas induknya, yang menyukai gandingan longgar (terutamanya di bawah kawalan antara muka). Subkelas bergantung pada pelaksanaan kelas induk, jadi pengikatan dianggap kuat.
5 Penggunaan: Rumah mempunyai Bilik Mandi. Adalah salah untuk mengatakan bahawa Rumah adalah Bilik Air. Warisan adalah satu arah: Rumah adalah Bangunan. Tetapi bangunan itu bukan rumah.
Nota: Jangan gunakan warisan hanya untuk memastikan penggunaan semula kod. Jika tiada hubungan "adalah" (ialah), komposisi digunakan untuk tujuan ini. Perbezaan antara komposisi dan pengagregatan adalah dalam hubungan objek. Pengagregatan ialah hubungan di mana satu kelas sesuai dengan koleksi. Ia adalah sebahagian daripada keseluruhan hubungan, di mana bahagian itu boleh wujud tanpa keseluruhannya. Hubungan sedemikian jauh lebih lemah. Tiada pergantungan kitaran. Contohnya: pesanan dan produk. Komposisi ialah hubungan di mana satu kelas sesuai dengan koleksi. Ia adalah sebahagian daripada keseluruhan hubungan di mana bahagian itu tidak boleh wujud tanpa keseluruhannya. Jika keseluruhannya musnah, semua komponennya juga akan musnah. Ia adalah hubungan yang lebih kukuh. Contohnya: poligon dan bucunya, susunan dan komponennya.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION