10 Prinsip Pemrograman Berorientasi Objék Unggal Pamekar Kedah Apal

10 Prinsip Pemrograman Berorientasi Objék Unggal Pamekar Kedah Apal

Cukup sering kuring pendak sareng pamekar anu henteu acan ngupingkeun prinsip SOLID (urang ngobrol ngeunaan aranjeunna sacara rinci di dieu. - Transl.) atanapi program berorientasi obyék (OOP), atanapi parantos ngupingkeun éta, tapi henteu dianggo dina praktékna. Artikel ieu ngajelaskeun mangpaat prinsip OOP nu mantuan pamekar dina karya sapopoé. Sababaraha di antarana anu ogé dipikawanoh, batur teu jadi loba, jadi artikel bakal mangpaat pikeun duanana beginners jeung programer ngalaman.

Kami ngingetan: pikeun sakabéh pamiarsa Habr - diskon 10 ruble nalika enrolling dina sagala kursus Skillbox ngagunakeun kode promosi Habr.

Skillbox nyarankeun: Kursus online atikan "Pamekar Java".

GARING (Ulah Ulangan sorangan)

Prinsip anu cukup saderhana, hakekatna jelas tina nami: "Ulah malikan diri." Pikeun programmer a, ieu hartina kudu nyingkahan duplikat kode, kitu ogé kasempetan ngagunakeun abstraksi dina karya maranéhanana.

Lamun aya dua bagian repeating dina kode, aranjeunna kudu digabungkeun kana hiji métode. Upami nilai hardcoded dianggo langkung ti sakali, éta kedah dirobih kana konstanta umum.

Ieu diperlukeun guna simplify kode jeung nyieun leuwih gampang pikeun ngajaga, nu tujuan utama OOP. Anjeun teu kedah overuse union boh, sabab kodeu sarua moal lulus verifikasi jeung OrderId jeung SSN.

Encapsulating Parobahan

Produk parangkat lunak kalolobaan perusahaan terus mekar. Ieu ngandung harti yén parobahan kedah dilakukeun kana kode, éta kedah dirojong. Anjeun tiasa ngagampangkeun kahirupan anjeun ku ngagunakeun enkapsulasi. Ieu bakal ngidinan Anjeun pikeun leuwih éfisién nguji sarta ngajaga dasar kode anjeun aya. Ieu salah sahiji conto.

Lamun nulis dina Java, lajeng napelkeun métode swasta jeung variabel sacara standar.

Prinsip kabuka/tutup

Prinsip ieu tiasa gampang diinget ku maca pernyataan ieu: "Éntitas parangkat lunak (kelas, modul, fungsi, jsb) kedah dibuka pikeun ekstensi, tapi ditutup pikeun modifikasi." Dina prakték, ieu ngandung harti yén maranéhna bisa ngidinan kabiasaan maranéhna pikeun dirobah tanpa ngarobah kodeu sumber.

Prinsipna penting nalika parobahan kode sumber merlukeun révisi kode, uji unit, jeung prosedur séjénna. Kodeu anu nuturkeun prinsip kabuka/tutup henteu robih nalika diperpanjang, janten langkung seueur masalah sareng éta.

Ieu conto kode anu ngalanggar prinsip ieu.

10 Prinsip Pemrograman Berorientasi Objék Unggal Pamekar Kedah Apal

Upami anjeun kedah ngarobih hiji hal di jerona, éta bakal peryogi seueur waktos, sabab sadaya bagian kode anu aya hubunganana sareng sempalan anu dipikahoyong kedah dirobih.

Ku jalan kitu, openness-closedness mangrupakeun salah sahiji prinsip SOLID.

Prinsip Tanggung Jawab Tunggal (SRP)

Prinsip sejen tina susunan SOLID. Éta nyatakeun yén "aya ngan hiji sabab anu nyababkeun parobahan dina kelas." Kelas ngajawab ngan hiji masalah. Éta tiasa gaduh sababaraha metode, tapi masing-masing dianggo ngan ukur pikeun ngabéréskeun masalah umum. Sadaya metode sareng sipat kedahna ngan ukur ieu.

10 Prinsip Pemrograman Berorientasi Objék Unggal Pamekar Kedah Apal

Nilai prinsip ieu nya éta loosens gandeng antara komponén software individu jeung kode. Lamun anjeun tambahkeun leuwih ti hiji pungsi ka kelas, eta ngawanohkeun hubungan antara dua fungsi. Ku kituna, lamun ngarobah salah sahijina, aya kamungkinan luhur ruining nu kadua, nu disambungkeun ka kahiji. Sareng ieu hartosna ningkatkeun siklus tés pikeun ngaidentipikasi sadaya masalah sateuacanna.

Prinsip Inversi Dependensi (DIP)

10 Prinsip Pemrograman Berorientasi Objék Unggal Pamekar Kedah Apal

Di luhur mangrupikeun conto kode dimana AppManager gumantung kana EventLogWriter, anu dina gilirannana raket sareng AppManager. Upami anjeun peryogi cara anu béda pikeun nunjukkeun béwara, janten push, SMS atanapi email, anjeun kedah ngarobih kelas AppManager.

Masalahna tiasa direngsekeun nganggo DIP. Janten, tinimbang AppManager, kami nyuhunkeun EventLogWriter, anu bakal diasupkeun nganggo kerangka.

DIP ngamungkinkeun gampang ngagentos modul individu sareng anu sanés ku ngarobih modul kagumantungan. Ieu ngamungkinkeun pikeun ngarobah hiji modul tanpa mangaruhan nu séjén.

Komposisi tinimbang warisan

10 Prinsip Pemrograman Berorientasi Objék Unggal Pamekar Kedah ApalAya dua cara utama pikeun ngagunakeun deui kode: warisan sareng komposisi, duanana gaduh kaunggulan sareng kalemahan sorangan. Biasana anu kadua langkung dipikaresep kumargi langkung fleksibel.

Komposisi méré Anjeun kamampuhan pikeun ngarobah paripolah kelas dina runtime ku netepkeun sipat na. Nalika ngalaksanakeun antarmuka, polimorfisme dianggo, anu masihan palaksanaan anu langkung fleksibel.

Malah Java Éféktif ku Joshua Bloch nyarankeun milih komposisi tibatan warisan.

Barbara Liskov Substitusi Prinsip (LSP)

Prinsip séjén tina toolkit SOLID. Éta nyatakeun yén subtipe kedah tiasa diganti pikeun supertype. Nyaéta, metode sareng fungsi anu tiasa dianggo sareng superclass kedah tiasa dianggo tanpa masalah sareng subclass na.

LSP pakait sareng prinsip tanggung jawab tunggal sareng prinsip tanggung jawab babarengan. Lamun kelas nyadiakeun leuwih fungsionalitas ti subclass a, lajeng dimungkinkeun moal ngarojong sababaraha fungsi, violating prinsip ieu.

Di handap ieu sapotong kode nu contradicts LSP.

10 Prinsip Pemrograman Berorientasi Objék Unggal Pamekar Kedah Apal

Métode aréa (Rectangle r) ngitung luas Rectangle. Program bakal ngadat saatos ngaéksekusi Square sabab Square sanés Sagi opat di dieu. Numutkeun prinsip LSP, fungsi anu ngagunakeun rujukan ka kelas dasar kudu bisa ngagunakeun objék tina kelas turunan tanpa parentah tambahan.

Prinsip ieu, anu mangrupikeun definisi khusus tina subtipe, diajukeun ku Barbara Liskov dina konci konperénsi 1987 anu judulna "Abstraksi Data sareng Hirarki," ku kituna namina.

Prinsip Split Antarmuka (ISP)

Prinsip SOLID sejen. Numutkeun éta, antarmuka anu henteu dianggo henteu kedah dilaksanakeun. Nuturkeun prinsip ieu mantuan sistem tetep fléksibel tur cocog pikeun refactoring nalika parobahan dijieun kana logika operasi.

Paling sering, kaayaan ieu lumangsung nalika panganteur ngandung sababaraha fungsi sakaligus, sarta klien nu peryogi ngan salah sahijina.

Kusabab nulis antarbeungeut mangrupikeun tugas anu sesah, ngarobih éta saatos padamelan réngsé tanpa ngalanggar naon waé bakal janten tantangan.

Kauntungannana prinsip ISP di Java nyaéta yén sadaya metode kedah dilaksanakeun heula, teras ngan ukur tiasa dianggo ku kelas. Ku alatan éta, prinsipna ngamungkinkeun pikeun ngurangan jumlah métode.

10 Prinsip Pemrograman Berorientasi Objék Unggal Pamekar Kedah Apal

Programming pikeun panganteur, sanes palaksanaan

Sadayana di dieu jelas tina nami. Nerapkeun prinsip ieu ngakibatkeun kreasi kode fléksibel nu bisa digawekeun ku sagala palaksanaan anyar interface nu.

Anjeun kedah nganggo jinis antarmuka pikeun variabel, jinis balik, atanapi jinis argumen metode. Hiji conto ngagunakeun SuperClass tinimbang SubClass.

nyaeta:

Daptar nomer = getNumbers ();

Tapi henteu:

Jumlah ArrayList = getNumbers ();

Ieu mangrupikeun palaksanaan praktis tina anu dibahas di luhur.

10 Prinsip Pemrograman Berorientasi Objék Unggal Pamekar Kedah Apal

Prinsip delegasi

Hiji conto umum nyaéta sarua () jeung hashCode () métode di Java. Lamun perlu pikeun ngabandingkeun dua objék, aksi ieu delegated ka kelas pakait tinimbang hiji klien.

Kauntungannana prinsipna nyaéta henteu aya duplikasi kode sareng rélatif saderhana pikeun ngarobih kabiasaan. Éta ogé lumaku pikeun delegasi acara.

10 Prinsip Pemrograman Berorientasi Objék Unggal Pamekar Kedah Apal

Sadaya prinsip ieu ngamungkinkeun anjeun nyerat kode anu langkung fleksibel, éndah sareng dipercaya kalayan kohési anu luhur sareng gandeng anu handap. Tangtosna, téori saé, tapi pikeun pamekar anu leres-leres ngagunakeun pangaweruh anu kaala, peryogi latihan. Sakali anjeun ngawasaan prinsip OOP, léngkah anjeun salajengna tiasa diajar pola desain pikeun ngarengsekeun masalah pamekaran parangkat lunak umum.

Skillbox nyarankeun:

sumber: www.habr.com

Tambahkeun komentar