JavaRush /Blog Jawa /Random-JV /Konsep Pemrograman Berorientasi Objek JAVA
shabnahm
tingkat

Konsep Pemrograman Berorientasi Objek JAVA

Diterbitake ing grup
JAVA adhedhasar konsep pemrograman berorientasi obyek, sing ngidini sampeyan pindhah menyang tingkat abstraksi sing luwih dhuwur kanggo ngatasi masalah kanthi cara sing nyata. Pendekatan berorientasi obyek menehi konsep solusi kanggo masalah ing babagan obyek nyata sing luwih gampang digunakake maneh ing aplikasi. Contone, Chair(kursi), Fan(kipas angin), Dog(Asu), Computer(komputer) lan liya-liyane. Ing JAVA, kelas minangka tata letak, cithakan, utawa prototipe sing nemtokake prilaku umum obyek saka jinis tartamtu. Kayata iku implementasine kapisah saka kelas, lan kabeh kedadean saka kelas duwe sifat padha, kang diterangake ing definisi kelas. Contone, sampeyan bisa nemtokake kelas sing dijenengi House kanthi jumlah kamar minangka atribut lan nggawe conto kelas kayata omah rong kamar, omah telung kamar, lan liya-liyane. Konsep Pemrograman Berorientasi Objek JAVA - 1Kaluwihan: Ing ngisor iki ana sawetara kaluwihan pangembangan piranti lunak berorientasi obyek.
  • Suda biaya dhukungan piranti lunak, utamane amarga kasunyatane ditindakake kanthi modular.
  • Ngapikake panggunaan maneh kode liwat fitur kayata warisan, nyebabake pangembangan piranti lunak luwih cepet.
  • Tambah linuwih kode lan keluwesan.
  • Gampang pangerten amarga simulasi jagad nyata.
  • Abstraksi sing luwih apik ing tingkat obyek.
  • Ngurangi kerumitan transisi saka siji tahap pangembangan menyang liyane.
Ana papat karakteristik utama OOP:
  • Enkapsulasi
  • pusaka
  • Polimorfisme
  • abstraksi

Enkapsulasi

Enkapsulasi tumindak minangka kontrak kanggo obyek apa sing kudu didhelikake lan apa sing kudu dibukak kanggo akses obyek liyane. Ing JAVA, kita nggunakake modifier akses privatekanggo ndhelikake cara lan matesi akses menyang variabel saka donya njaba. JAVA uga nduweni macem-macem akses modifiers: public, standar, protected, private, kang digunakake kanggo matesi visibilitas ing tingkat beda. Nanging tujuan utama yaiku mbungkus barang-barang sing ora kudu diganti. Pendekatan sing paling apik yaiku kelas mung kudu duwe siji alasan kanggo ngganti, lan enkapsulasi ndadekake desain "siji alesan" kasebut dadi kasunyatan. Pendekatan sing bener kanggo enkapsulasi yaiku ndhelikake barang sing kerep diganti supaya ora ngrusak kelas liyane. Keuntungan: Ing ngisor iki sawetara keuntungan saka enkapsulasi:
  • Kita bisa nglindhungi kahanan internal obyek kanthi ndhelikake atribute.
  • Iki nambah modularitas kode amarga nyegah obyek sesambungan kanthi cara sing ora dikarepake.
  • Ngapikake panggunaan kode.
  • Iki ndhukung hubungan kontrak entitas tartamtu.
  • Enkapsulasi ndadekake piranti lunak luwih gampang dijaga.
  • Owah-owahan ing kode bisa ditindakake kanthi mandiri.

Polimorfisme

Polimorfisme ing pemrograman yaiku kemampuan kanggo nyedhiyakake antarmuka sing padha kanggo macem-macem formulir dhasar (jinis data). Iki tegese kelas sing nduweni fungsi sing beda nuduhake antarmuka sing padha lan bisa diarani kanthi dinamis kanthi ngliwati parameter kanthi referensi. Conto klasik yaiku kelas Shape(bentuk) lan kabeh kelas sing diwarisake: square(kotak), circle(bunder), dodecahedron(dodecahedron), irregular polygon(poligon ora beraturan), splat(blob), lan liya-liyane. Ing conto iki, saben kelas bakal duwe cara dhewe Draw()lan kode klien mung bisa nindakake:
Shape shape = new Shape();
Shape.area()kanggo entuk prilaku sing bener saka wangun apa wae Kaendahan polimorfisme yaiku kode kasebut, nggarap kelas sing beda-beda, ora perlu ngerti kelas sing digunakake, amarga kabeh padha nggarap prinsip sing padha. Proses sing digunakake dening basa pemrograman berorientasi obyek kanggo ngetrapake polimorfisme dinamis diarani ikatan dinamis. Cathetan: Polimorfisme yaiku kemampuan kanggo milih cara sing luwih spesifik kanggo dieksekusi gumantung saka obyek kasebut. Polymorphism occurs nalika kelas abstrak ora melu. Kaluwihan:
  • Nggawe kode sing bisa digunakake maneh. Tegese, yen kelas digawe, dileksanakake, lan dites, bisa digunakake kanthi bebas tanpa kuwatir apa sing ditulis ing njero.
  • Iki ngidini kode sing luwih umum lan gampang digandhengake.
  • Wektu kompilasi dikurangi, sing nyepetake pembangunan.
  • Panyambungan dinamis.
  • Antarmuka sing padha bisa digunakake kanggo nggawe metode kanthi implementasine beda.
  • Kabeh implementasine bisa diganti kanthi nggunakake cara sing padha.
Metode overriding minangka bagéan saka polimorfisme. Override berinteraksi karo rong cara: metode ing kelas induk lan metode ing kelas turunan. Cara kasebut duwe jeneng lan teken sing padha. Overriding ngidini sampeyan nindakake operasi sing padha kanthi cara sing beda kanggo macem-macem jinis obyek. Tuladhane:
while(it.hasNext()) {
Shape s = (Shape) it.next();
totalArea += s.area(dim); //будет применен полиморфизм и вызван нужный метод для каждого an object.
}
Konsep Pemrograman Berorientasi Objek JAVA - 2Overloading metode utawa polimorfisme ad-hoc utawa polimorfisme statis Overloading sesambungan karo macem-macem metode saka kelas sing padha sing dijenengi kanthi identik nanging duwe tandha cara sing beda. Reloading ngidini sampeyan njlèntrèhaké operasi sing padha kanthi cara sing beda kanggo data sing beda. Kadhangkala diarani polimorfisme statis, nanging nyatane dudu polimorfisme. Iki ora liya mung duwe rong cara kanthi jeneng sing padha, nanging dhaptar argumen sing beda. Reboot ora ana hubungane karo warisan lan polimorfisme. Lan cara sing kakehan beban ora padha karo cara sing ditimpa. Polimorfisme Parametrik liwat Generik ing JAVA Nalika ngumumake kelas, lapangan jeneng bisa digandhengake karo macem-macem jinis, lan jeneng metode bisa digandhengake karo paramèter lan jinis bali sing beda. JAVA ndhukung polimorfisme parametrik kanthi nggunakake generik.
List<String> list = new ArrayList<String>();
Napa kita ora bisa ngatasi metode statis ing JAVA? Overriding gumantung ing orane instance saka kelas. Ide polimorfisme yaiku sampeyan bisa nggawe subclass, lan obyek sing diimplementasikake dening subclass kasebut bakal beda karo cara kelas induk sing padha (diganti ing subclass). Cara statis ora digandhengake karo kedadeyan kelas, mula konsep overriding dhewe ora bisa ditrapake. Pangripta JAVA dipandu dening rong pertimbangan kang njalari pendekatan iki. Kaping pisanan, ana masalah eksekusi kode: ana akeh kritik marang Smalltalk amarga alon (koleksi sampah lan polimorfisme minangka bagean saka masalah iki), lan JAVA dirancang kanggo nyegah iki. Wawasan kapindho yaiku keputusan yen target pamirsa JAVA yaiku pangembang C++. Duwe cara statis bisa digunakake kanthi cara iki banget akrab karo programer C ++, lan uga nyepetake amarga ora perlu munggah hirarki kelas kanggo nemtokake cara sing kudu diarani. Sampeyan langsung menyang kelas lan nelpon cara tartamtu.

pusaka

Warisan minangka tumindak nggabungake prilaku (yaiku metode) lan negara (yaiku variabel) saka kelas dhasar menyang kelas turunan supaya kasedhiya ing kelas turunan kasebut. Kauntungan utama saka warisan yaiku nyedhiyakake mekanisme resmi kanggo nggunakake maneh kode lan ngindhari duplikasi. Kelas sing diwarisake ngluwihi fungsi aplikasi kanthi nyalin prilaku kelas induk lan nambah fungsi anyar. Iki ndadekake kode banget gandheng. Yen sampeyan pengin ngganti superclass, sampeyan kudu ngerti kabeh rincian subclass supaya ora nglanggar kode. Warisan minangka wangun nggunakake maneh piranti lunak ing ngendi kelas anyar (subclass) digawe saka kelas sing wis ana (superclass) sing ngluwihi fungsi lan nggunakake sawetara properti saka superclass. Dadi yen sampeyan duwe kelas wong tuwa banjur katon kelas anak, bocah kasebut entuk warisan kabeh barang sing diduweni wong tuwa. Kaluwihan:
  • Ngapikake kode maneh.
  • Hubungan logis "iku" (yaiku wong, soko) ditetepake. Contone : Asu iku kewan . (Asu iku kewan).
  • Modularisasi kode.
  • Ambalan ora kalebu.
Cacat:
  • Rapet gandheng: A subclass gumantung ing implementasine saka kelas induk, nggawe kode tightly gandheng.
Apa maneh sing kudu diwaca:

Grup Pangembang Jawa:

abstraksi

Abstraksi tegese ngrancang kelas adhedhasar antarmuka lan fungsi, tanpa njupuk rincian implementasine. Kelas abstrak nggambarake antarmuka tanpa kalebu implementasine nyata. Iki mbedakake implementasine obyek saka prilaku. Abstraksi nyederhanakake kode kanthi ndhelikake rincian sing ora penting. Kaluwihan:
  • Kanthi nggunakake abstraksi, kita bisa misahake apa sing bisa dikelompokake dadi sawetara jinis.
  • Properti lan cara sing kerep diganti bisa diklompokaké dadi jinis sing kapisah, supaya jinis utama ora kena owah-owahan. Iki nguatake prinsip OOP: "Kode kudu mbukak kanggo Ekstensi, nanging ditutup kanggo Ganti . "
  • Abstraksi nyederhanakake representasi model domain.
Bedane antarane abstraksi lan enkapsulasi Enkapsulasi minangka strategi sing digunakake minangka bagéan saka abstraksi. Encapsulation nuduhake struktur obyek: obyek encapsulate sifat lan ndhelikake saka akses njaba. Pangguna kelas sesambungan karo nggunakake cara, nanging ora duwe akses langsung menyang struktur kelas. Kanthi cara iki, kelas abstrak rincian implementasine sing ana gandhengane karo desaine. Abstraksi minangka istilah sing luwih umum. Sampeyan uga bisa digayuh, antarane liyane, nggunakake subclasses. Contone, kelas List(dhaftar) ing perpustakaan standar minangka abstraksi kanggo urutan unsur, diindeks miturut panggonan ing dhaptar. Conto tartamtu saka dhaptar Listyaiku ArrayListutawa LinkedList. Kode sing sesambungan karo dhaptar Listngilangi rincian dhaptar sing digunakake. Asring abstraksi ora bisa ditindakake tanpa ndhelikake kahanan dhasar nggunakake enkapsulasi. Yen kelas mbukak struktur internal, ora bisa ngganti operasi internal, lan mulane ora bisa abstrak. Apa kelas abstrak lan metode abstrak? Mengkono yen sajrone pembangunan sampeyan pengin kelas dhasar mung nyedhiyakake antarmuka menyang kelas asale. Yaiku, sampeyan ora pengin sapa wae nggawe conto kelas dasar. Sampeyan kudu nggunakake antarmuka ing kuwi cara sing mung matak obyek menyang (iki implisit cast sing ngidini prilaku polymorphic). Iki digayuh kanthi nggawe abstrak kelas iki nggunakake tembung kunci abstract. Iki ngetrapake sawetara watesan, kayata ora bisa nggawe conto kelas abstrak; nalika nggunakake kelas abstrak, kudu ngetrapake metode abstrak. Iki njamin polimorfisme. Kelas abstrak bisa ngemot metode abstrak lan konkrit. Yen paling ora siji metode ing kelas diumumake abstrak, kabeh kelas uga kudu diumumake abstrak. Nanging, aturan ing arah ngelawan ora kudu diamati. Yen kelas diumumake abstrak, bisa uga ora ngemot metode abstrak. Cara sing mung nemtokake teken lan ora menehi implementasine diarani abstrak. Implementasine nyata ditinggalake menyang subkelas, sing ngluwihi kelas abstrak. Cara abstrak ora bisa digunakake dening obyek, mung kelas liyane sing bisa ngluwihi. Nalika sampeyan kudu nggunakake kelas abstrak? Kelas abstrak ngidini sampeyan nemtokake sawetara prilaku standar lan duwe subclass nyedhiyakake prilaku tartamtu. Contone: List(dhaftar) antarmuka, banjur AbstractListnemtokake prilaku dhasar saka Dhaftar, kang bisa digunakake minangka utawa olahan ing subclass, contone, ing ArrayList(dhaftar array). Apa antarmuka? Konsep antarmuka minangka kelas abstrak, nanging antarmuka (ditetepake kanthi tembung kunci interface) dadi luwih maju. Iku ngalangi sembarang implementasine saka cara utawa fungsi ing kabeh. Sampeyan mung bisa ngumumake cara utawa fungsi, nanging ora menehi implementasine. Kelas sing ngleksanakake antarmuka kudu ngurus implementasine nyata. Antarmuka migunani banget lan akeh digunakake ing OOP. Amarga padha nuduhake antarmuka dhewe lan implementasine, menehi akeh kaluwihan saka panggunaan:
  1. Multiple warisan .
  2. Kopling longgar . Ana abstraksi saka operasi, kayata layering, lan implementasine konkrit bisa apa wae: JDBC, JPA, JTA, etc.
  3. Program antarmuka ora dileksanakake .
  4. Polimorfisme ikatan dinamis : Antarmuka pemrograman obyek katon tanpa mbukak implementasine sing nyata.
  5. Tingkat abstrak , pamisahan fungsi.
Bentenipun antarane antarmuka lan kelas abstrak.
  • Antarmuka minangka hubungan kontrak karo kelas sing ngleksanakake antarmuka iki, nyatakake yen implementasine ditindakake kanthi cara sing ditemtokake dening antarmuka. Iki minangka cangkang kosong kanthi cara sing diumumake.
  • Kelas abstrak nemtokake sawetara prilaku umum lan njaluk subclass kanggo nemtokake prilaku atipikal utawa khusus kanggo kelas kasebut.
  • Metode lan anggota kelas abstrak bisa ditetepake karo modifier akses apa wae, lan kabeh metode antarmuka kudu umum.
  • Nalika marisi kelas abstrak, kelas turunan kudu nemtokake cara abstrak, nalika antarmuka bisa warisan antarmuka liyane tanpa kudu nemtokake cara.
  • Kelas turunan bisa ngluwihi mung siji kelas abstrak, nanging antarmuka bisa ngluwihi utawa kelas bisa ngleksanakake akeh antarmuka liyane.
  • Kelas turunan bisa nemtokake cara abstrak kanthi modifier akses sing padha utawa kurang, nanging kelas sing ngetrapake antarmuka kudu nemtokake cara kanthi tingkat visibilitas sing padha.
  • Antarmuka ora ngemot konstruktor, dene kelas abstrak.
  • Variabel sing diumumake ing antarmuka Jawa minangka standar. Kelas abstrak bisa ngemot variabel sing ora final.
  • Kabeh anggota antarmuka Jawa yaiku public. Anggota kelas abstrak bisa dadi public, protectedlsp.

Komposisi

Guna maneh kode bisa ditindakake kanthi nggunakake warisan lan komposisi. Nanging nggunakake komposisi nyedhiyakake tingkat enkapsulasi sing luwih dhuwur tinimbang warisan, amarga owah-owahan ing kelas mburi ora kudu mengaruhi kode sing ana ing kelas ngarep. Komposisi minangka teknik desain sing nggunakake hubungan "has-a" (wis, kalebu) ing kelas. Pewarisan java lan komposisi obyek bisa digunakake kanggo nggunakake maneh kode. Inti komposisi yaiku kanggo nyebutake hubungan "duwe" antarane obyek. Mikir babagan kursi. Kursi duwe kursi. Kursi duwe mburi. Kursi duwe sawetara sikil tartamtu. Tembung "duwe" nuduhake hubungan sing kursi duwe, utawa paling ora nggunakake obyek liyane. Iki sabenere hubungan "wis-a", kang basis saka komposisi. Kaluwihan:
  • Kontrol visibilitas
  • Implementasine bisa diganti nalika run-time
  • Kopling longgar, wiwit kelas antarmuka ora gumantung ing implementasine.
Bedane antarane komposisi lan warisan
Ora. Komposisi (duwe / wis) Warisan (is a / is)
1 Ndhukung polimorfisme lan nggunakake maneh kode. Ndhukung polimorfisme lan nggunakake maneh kode.
2 Objek run-time wis digawe. Obyek digawe kanthi dinamis ing wektu kompilasi.
3 Implementasine bisa diganti nalika run-time. Implementasine bisa diganti ing wektu kompilasi.
4 A subclass iku sawijining kelas induk sawijining, kang ndukung kopling ngeculke (utamané ing kontrol antarmuka). Subkelas kasebut gumantung marang implementasine kelas induk, mula ikatan kasebut dianggep kuwat.
5 Gunakake: Omah duwe Kamar Mandi. Iku salah ngomong yen Omah iku Kamar Mandi. Warisan iku unidirectional: Omah iku Bangunan. Nanging bangunan kasebut dudu omah.
Cathetan: Aja nggunakake warisan mung kanggo mesthekake nggunakake maneh kode. Yen ora ana hubungan "iku" (iku), komposisi digunakake kanggo tujuan kasebut. Bedane antarane komposisi lan agregasi ana ing hubungan obyek. Agregasi minangka hubungan sing siji kelas pas karo koleksi. Iku bagéan saka kabèh sesambetan, ngendi bagean bisa ana tanpa kabèh. Hubungan sing kaya ngono luwih ringkih. Ora ana ketergantungan siklik. Contone: pesenan lan produk. Komposisi minangka hubungan ing ngendi siji kelas pas karo koleksi. Iki minangka bagean saka kabeh hubungan, ing ngendi bagean kasebut ora bisa ana tanpa kabeh. Yen kabeh wis rusak, kabeh komponene uga bakal rusak. Iku hubungan sing luwih kuwat. Contone: poligon lan vertex, urutan lan komponen.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION