JavaRush /Java Blog /Random-TK /JAVA obýekte gönükdirilen programmirleme düşünjeleri
shabnahm
Dereje

JAVA obýekte gönükdirilen programmirleme düşünjeleri

Toparda çap edildi
JAVA, islendik meseläni real usulda çözmek üçin abstraksiýanyň has ýokary derejesine geçmäge mümkinçilik berýän obýekte gönükdirilen programmirleme düşünjelerine esaslanýar. Obýekte gönükdirilen çemeleşme, bir programmada gaýtadan ulanmak has aňsat bolan hakyky obýektler nukdaýnazaryndan meseläniň çözgüdini konseptuallaşdyrýar. Mysal üçin, Chair(oturgyç), Fan(janköýer), Dog(It), Computer(kompýuter) we ş.m. JAVA-da synp, belli bir görnüşdäki obýektiň umumy özüni alyp barşyny kesgitleýän düzüliş, şablon ýa-da prototipdir. Mysal, synpyň aýratyn ýerine ýetirilmegi bolup, synpyň ähli mysallarynda synp kesgitlemesinde beýan edilen birmeňzeş häsiýetler bar. Mysal üçin, otaglaryň sany bolan “House” atly synpy häsiýet hökmünde kesgitläp bilersiňiz we iki otagly jaý, üç otagly jaý we ş.m. ýaly synp mysallaryny döredip bilersiňiz. JAVA obýekte gönükdirilen programmirleme düşünjeleri - 1Üstünlikleri: Aşakda sanalyp, obýekte gönükdirilen programma üpjünçiligini ösdürmegiň käbir artykmaçlyklary bar.
  • Programma üpjünçiligini goldamak üçin çykdajylaryň azalmagy, esasanam modully ýerine ýetirilmegi bilen baglanyşykly.
  • Kodyň gowulaşmagy miras ýaly aýratynlyklar arkaly gaýtadan ulanylýar, netijede programma üpjünçiliginiň has çalt ösmegine sebäp bolýar.
  • Kod ygtybarlylygyny we çeýeligini ýokarlandyrmak.
  • Hakyky dünýä simulýasiýasy sebäpli düşünmek aňsatlygy.
  • Obýekt derejesinde has gowy abstraksiýa.
  • Bir ösüş tapgyryndan beýlekisine geçmegiň çylşyrymlylygyny azaltmak.
OOP-nyň dört esasy aýratynlygy bar:
  • Enkapsulýasiýa
  • Miras
  • Polimorfizm
  • Abstraksiýa

Enkapsulýasiýa

Enkapsulýasiýa, nämäni gizlemelidigini we beýleki obýektlere girmek üçin näme açmalydygyny şertnama hökmünde ýerine ýetirýär. privateJAVA-da usuly gizlemek we daşarky dünýäden üýtgeýjä girişi çäklendirmek üçin giriş üýtgedijisini ulanýarys . JAVA-da dürli giriş üýtgeýjileri bar: publicdefault, protecteddürli privatederejelerde görünmegi çäklendirmek üçin ulanylýar. Theöne esasy maksat, üýtgemeli däl zatlary jemlemek. Iň oňat işleýän çemeleşme, synpyň üýtgemeginiň diňe bir sebäbi bolmaly we encapsulation şol “bir sebäbiň” dizaýnyny hakykata öwürýär. Enkapsulýasiýa dogry çemeleşme, beýleki synplara zyýan ýetirmezlik üçin ýygy-ýygydan üýtgeýän zatlary gizlemekdir. Peýdalary: Aşakda encapsulýasiýanyň käbir peýdalary bar:
  • Obýektleriň içki ýagdaýyny, häsiýetlerini gizläp gorap bileris.
  • Bu kod modulirligini gowulandyrýar, sebäbi obýektleriň garaşylmadyk ýagdaýda täsirleşmeginiň öňüni alýar.
  • Kodyň ulanylyşyny gowulandyrýar.
  • Bu, belli bir guramanyň şertnama gatnaşyklaryny goldaýar.
  • Enkapsulýasiýa programma üpjünçiligini saklamagy aňsatlaşdyrýar.
  • Koda üýtgetmeler biri-birine garaşsyz edilip bilner.

Polimorfizm

Programmirlemekde polimorfizm, dürli düýp görnüşler (maglumatlar görnüşleri) üçin şol bir interfeýsi üpjün etmek ukybydyr. Bu, dürli funksiýaly synplaryň şol bir interfeýsi paýlaşýandygyny we parametrleri salgylanma arkaly geçip dinamiki atlandyryp boljakdygyny aňladýar. Klassiki mysal synp Shape(şekil) we ondan miras galan ähli synplar: square(kwadrat), circle(tegelek), dodecahedron(dodecahedron), irregular polygon(tertipsiz köpburçluk), splat(blob) we ş.m. Bu mysalda, her synpyň öz usuly bolar Draw()we müşderi kody ýönekeý edip biler:
Shape shape = new Shape();
Shape.area()islendik görnüşdäki dogry özüni alyp barmak üçin polimorfizmiň gözelligi, dürli synplar bilen işleýän koduň haýsy synpy ulanýandygyny bilmek zerurlygy ýok, sebäbi hemmesi bir prinsipde işleýär. Dinamiki polimorfizmi amala aşyrmak üçin obýekte gönükdirilen programmirleme dilleri tarapyndan ulanylýan prosese dinamiki baglanyşyk diýilýär. Bellik: Polimorfizm, obýekte baglylykda ýerine ýetirmek üçin has anyk usullary saýlamak ukybydyr. Polimorfizm abstrakt sapaklar gatnaşmadyk mahaly ýüze çykýar. Üstünlikleri:
  • Gaýtadan ulanylýan kod döretmek. .Agny, bir synp döredilenden, durmuşa geçirilenden we synagdan geçirilenden soň, takyk ýazylan zatlar hakda aladalanman erkin ulanylyp bilner.
  • Bu has umumy we birleşdirilen kody üpjün etmäge mümkinçilik berýär.
  • Toplama wagty azalýar, bu ösüşi çaltlaşdyrýar.
  • Dinamiki baglanyşyk.
  • Şol bir interfeýs dürli amallar bilen usullary döretmek üçin ulanylyp bilner.
  • Implementationhli ýerine ýetiriş usullaryny şol bir usul gollary bilen çalşyp bolar.
Polimorfizmiň bir bölegi hökmünde usuly ýokaşdyrmak. Artykmaçlyk iki usul bilen täsirleşýär: ene synpdaky usul we alnan synpdaky usul. Bu usullaryň ady we goly birmeňzeş. Artykmaçlyk, dürli obýektler üçin şol bir amaly ýerine ýetirmäge mümkinçilik berýär. Mysal üçin:
while(it.hasNext()) {
Shape s = (Shape) it.next();
totalArea += s.area(dim); //будет применен полиморфизм и вызван нужный метод для каждого an object.
}
JAVA obýekte gönükdirilen programmirleme düşünjeleri - 2Usuly artykmaç ýüklemek ýa-da adaty polimorfizm ýa-da statiki polimorfizm Artykmaç ýüklemek, birmeňzeş atlandyrylan, ýöne dürli usul gollary bolan bir synpyň birnäçe usuly bilen täsir edýär. Gaýtadan ýüklemek, şol bir amaly dürli maglumatlar üçin dürli usullar bilen suratlandyrmaga mümkinçilik berýär. Kämahal statik polimorfizm diýilýär, ýöne aslynda polimorfizm däl. Bu diňe bir at bilen iki usuldan başga zat däl, argumentleriň başga sanawy. Gaýtadan açmak miras we polimorfizm bilen hiç hili baglanyşygy ýok. Artykmaç usul, artykmaç usul bilen asla meňzemeýär. JAVA-da öndürmek arkaly parametriki polimorfizm Synp yglan edilende at meýdany dürli görnüşler bilen baglanyşykly bolup biler we usulyň ady dürli parametrler we gaýdyp geliş görnüşleri bilen baglanyşykly bolup biler. JAVA generikleri ulanyp parametriki polimorfizmi goldaýar.
List<String> list = new ArrayList<String>();
Näme üçin JAVA-da statiki usuly ýok edip bilmeris? Artykmaç synpyň mysalynyň barlygyna baglydyr. Polimorfizmiň pikiri, bir kiçi klas döredip bilersiňiz we şol kiçi klaslar tarapyndan ýerine ýetirilen obýektler ene synpyň şol bir usullary (kiçi klasslarda ýokaşdyrylan) bilen başgaça hereket eder. Statik usul synpyň haýsydyr bir hadysasy bilen baglanyşykly däl, şonuň üçin özüni aşa köpeltmek düşünjesi ulanylyp bilinmez. JAVA-ny döredijiler bu çemeleşmä täsir eden iki pikirden ugur aldylar. Ilki bilen, kod ýerine ýetiriş meselesi bar: Smalltalk-yň haýal bolandygy üçin köp tankyt edildi (zibil ýygnamak we polimorfizm bu meseläniň bir bölegi) we JAVA munuň öňüni almak üçin döredildi. Ikinji serediş, JAVA-nyň maksatly diňleýjileriniň C ++ döredijiler boljakdygy baradaky karar boldy. Statiki usullaryň bu görnüşde işlemegi C ++ programmistleri üçin gaty tanyşdy we haýsy usuly çagyrmalydygyny anyklamak üçin synp iýerarhiýasyna çykmagyň zerurlygy ýoklygy sebäpli zatlary çaltlaşdyrdy. Göni klasa girip, belli bir usula jaň edýärsiňiz.

Miras

Miras, esasy synpyň özüni alyp barşyny (ýagny usullary) we esasy synpyň ýagdaýyny (ýagny üýtgeýänleri) alnan synpda elýeterli etmek üçin alnan synpa girizmekdir. Mirasyň esasy artykmaçlygy, kodlary gaýtadan ulanmagyň resmi mehanizmini üpjün etmegidir we köpeltmekden gaça durýar. Miras galan synp, ene synpyň özüni alyp barşyny göçürmek we täze funksiýa goşmak bilen programmanyň işleýşini giňeldýär. Bu kody gaty birleşdirýär. Superklassany üýtgetmek isleseňiz, kody bozmazlyk üçin kiçi klasslaryň ähli jikme-jikliklerini bilmeli bolarsyňyz. Miras, işleýşini giňeldýän we superklassyň käbir aýratynlyklaryny ulanýan bar bolan synpdan (superklass) täze synp (kiçi klass) döredilen programma üpjünçiligini gaýtadan ulanmagyň bir görnüşidir. Şeýlelik bilen, ene-atalar synpyňyz bar bolsa, soň çaga synpy peýda bolsa, çaga ene-atasynyň ähli zatlaryny miras alýar. Üstünlikleri:
  • Kodyň gaýtadan ulanylmagy gowulaşdy.
  • Logiki gatnaşyk “a” (kimdir biri, bir zat) döredildi. Mysal üçin : It n haýwan . (It haýwan).
  • Kod modulizasiýasy.
  • Gaýtalamalar aýrylýar.
Kemçilik:
  • Gaty berk birikdirilen: Kiçi synp, kody berk birikdirip, ene synpyň ýerine ýetirilmegine baglydyr.

Abstraksiýa

Abstraksiýa, ýerine ýetiriş jikme-jikliklerini hasaba almazdan, interfeýslerine we işleýşine esaslanýan synplary dizaýn etmegi aňladýar. Abstrakt synp, hakyky ýerine ýetirilişi goşmazdan interfeýsleri aňladýar. Obýektiň ýerine ýetirilişini özüni alyp barşyndan tapawutlandyrýar. Abstraksiýa möhüm däl maglumatlary gizlemek bilen kody aňsatlaşdyrýar. Üstünlikleri:
  • Abstraksiýany ulanyp, haýsydyr bir topara bölünip bilinjek zatlary aýryp bileris.
  • Frequygy-ýygydan üýtgeýän häsiýetler we usullar esasy görnüşiň üýtgemezligi üçin aýratyn görnüşe bölünip bilner. Bu, OOP ýörelgesini güýçlendirýär: "Kod giňeltme üçin açyk bolmaly, ýöne üýtgetmek üçin ýapyk bolmaly . "
  • Abstraksiýa domen modelleriniň wekilçiligini aňsatlaşdyrýar.
Abstraksiýa bilen encapsulýasiýa arasyndaky tapawut Enkapsulýasiýa abstraksiýanyň bir bölegi hökmünde ulanylýan strategiýadyr. Enkapsulýasiýa obýektiň gurluşyna degişlidir: obýektler öz häsiýetlerini gurşap alýar we daşarky girişden gizleýär. Synp ulanyjylary onuň usullaryny ulanyp, onuň bilen täsirleşýärler, ýöne synp gurluşyna göni girip bilmeýärler. Şeýlelik bilen, synp dizaýny bilen baglanyşykly durmuşa geçiriş jikme-jikliklerini gysgaça beýan edýär. Abstraksiýa has umumy termin. Mundan başga-da, kiçi klasslary ulanyp, gazanyp bolar. Mysal üçin, adaty kitaphanadaky synp List(sanaw) sanawdaky ornuna görä indekslenen elementleriň yzygiderliligi üçin abstraksiýa. Sanawyň anyk mysallary Listýa ArrayList-da LinkedList. Sanaw bilen täsirleşýän kod, Listhaýsy sanawyň ulanylýandygyny jikme-jik görkezýär. Enkapsulýasiýa ulanyp, köplenç esasy ýagdaýy gizlemezden abstraksiýa mümkin däl. Bir synp içerki gurluşyny paş etse, içerki amallaryny üýtgedip bilmez we şonuň üçin abstrakt edip bolmaz. Abstrakt synp we abstrakt usul näme? Ösüş döwründe esasy synpyň diňe alnan synplara interfeýs bermegini isleýänligiňiz bolýar. .Agny, hiç kimiň esasy synp mysallaryny döretmegini islemeýärsiňiz. Interfeýsi diňe obýektleri zyňjak derejede ulanmalysyňyz (bu polimorf hereketlere mümkinçilik berýän aç-açan guýma). Bu açar söz ulanyp, bu synpy abstrakt etmek arkaly gazanylýar abstract. Bu abstrakt synpyň mysallaryny döredip bilmezlik ýaly käbir çäklendirmeleri girizýär; abstrakt synpy ulananyňyzda abstrakt usullary durmuşa geçirmeli. Bu polimorfizmi üpjün edýär. Abstrakt synpda abstrakt we anyk usullar bolup biler. Bir synpda iň bolmanda bir usul abstrakt diýlip yglan edilse, tutuş synp hem abstrakt diýlip yglan edilmelidir. Şeýle-de bolsa, ters tarapdaky düzgün berjaý edilmeli däldir. Synp abstrakt diýlip yglan edilse, abstrakt usullary öz içine alyp bilmez. Diňe gollaryny kesgitleýän we durmuşa geçirmegi üpjün etmeýän usula abstrakt diýilýär. Hakyky ýerine ýetirilişi abstrakt synpy giňeldýän kiçi toparlara galdyrylýar. Abstrakt usul bir obýekt tarapyndan ulanylyp bilinmez, ony diňe başga bir synp giňeldip biler. Abstrakt synpy haçan ulanmaly? Abstrakt synplar käbir adaty hereketleri kesgitlemäge mümkinçilik berýär we kiçi klasslarda belli bir özüni alyp barşyny üpjün edýär. Mysal üçin: List(sanaw) interfeýs bolup, öz gezeginde AbstractListsanawyň esasy özüni alyp barşyny kesgitleýär, bu kiçi toparda bolşy ýaly ýa-da arassalanylyp bilner, mysal üçin ArrayList(sanaw sanawy). Interfeýs näme? Interfeýs düşünjesi abstrakt synp, ýöne interfeýs (açar söz bilen kesgitlenýär interface) bir ädim öňe barýar. Usulyň ýa-da funksiýanyň asla durmuşa geçirilmeginiň öňüni alýar. Diňe bir usuly ýa-da funksiýany yglan edip bilersiňiz, ýöne ýerine ýetirilmegini üpjün edip bilmersiňiz. Interfeýsi amala aşyrýan synp, hakyky ýerine ýetirilişi barada alada etmeli. Interfeýsler gaty peýdaly we OOP-da giňden ulanylýar. Interfeýsiň özi we ýerine ýetirilişi bilen paýlaşýandyklary sebäpli, ulanmagyň köp artykmaçlyklaryny üpjün edýärler:
  1. Birnäçe miras .
  2. Boş birikdirme . Gatnaşyk ýaly amalyň abstraksiýasy bar we anyk ýerine ýetiriş islendik zat bolup biler: JDBC, JPA, JTA we ş.m.
  3. Interfeýs programmasy ýerine ýetirilmeýär .
  4. Dinamiki baglanyşdyryjy polimorfizm : Bir obýektiň programmirleme interfeýsi, hakyky ýerine ýetirilişini açmazdan açylýar.
  5. Abstrakt derejeler , işlemegiň bölünişi.
Interfeýs bilen abstrakt synpyň arasyndaky tapawut.
  • Interfeýs, bu interfeýsi amala aşyrýan synplar bilen şertnama gatnaşygy bolup, ýerine ýetirişiň interfeýs tarapyndan bellenilen görnüşde bolup geçýändigini görkezýär. Bu yglan edilen usullar bilen boş gabyk.
  • Abstrakt synp käbir umumy häsiýeti kesgitleýär we kiçi synplaryndan synplary üçin adaty däl ýa-da aýratyn häsiýeti kesgitlemegini soraýar.
  • Usullar we abstrakt synpyň agzalary islendik giriş üýtgediji bilen kesgitlenip bilner, öz gezeginde ähli interfeýs usullary köpçülige açyk bolmaly.
  • Abstrakt synpy miras alanyňda, nesil synpy abstrakt usullary kesgitlemeli, interfeýs bolsa usullaryny kesgitlemezden başga bir interfeýsi miras alyp biler.
  • Nesil synpy diňe bir abstrakt synpy uzaldyp biler, ýöne interfeýs giňelip biler ýa-da synp başga-da köp interfeýsleri amala aşyryp biler.
  • Nesil synpy abstrakt usullary şol bir ýa-da az çäklendiriji giriş modifikatory bilen kesgitläp biler, ýöne interfeýsi amala aşyrýan synp şol bir derejedäki usullary kesgitlemeli.
  • Interfeýsde konstruktorlar ýok, abstrakt synp bolsa.
  • Java interfeýsinde yglan edilen üýtgeýjiler deslapky görnüşde gutarnykly. Abstrakt synpda gutarnykly däl üýtgeýjiler bolup biler.
  • Java interfeýsiniň ähli agzalary public. Abstrakt synpyň agzalary publicwe protectedş.m.

Kompozisiýa

Koddan peýdalanmak mirasy we kompozisiýany ulanmak arkaly gazanylyp bilner. Compositionöne kompozisiýany ulanmak, mirasa garanyňda has ýokary derejeli encapsulýasiýa üpjün edýär, sebäbi yzky synpdaky üýtgeşmeler öňdäki klasa degişli koda täsir etmez. Kompozisiýa, sapaklarda “has-a” (bar, öz içine alýar) gatnaşyklaryny ulanýan dizaýn usulydyr. Kodany gaýtadan ulanmak üçin java mirasy we obýekt kompozisiýasy ulanylyp bilner. Kompozisiýanyň manysy, obýektleriň arasynda “a” gatnaşygy aňlatmakdyr. Oturgyç hakda pikir ediň. Oturgyçda oturgyç bar. Oturgyjyň arkasy bar. Oturgyçda belli bir aýak bar. “A” jümlesi, oturgyjyň başga bir obýektiň ýa-da iň bolmanda ulanýan gatnaşyklaryny aňladýar. Bu kompozisiýanyň esasyny düzýän “has-a” gatnaşygydyr. Üstünlikleri:
  • Görüniş gözegçiligi
  • Iş ýerine ýetirilende ýerine ýetirilip bilner
  • Boş birikdirme, sebäbi interfeýs synpy durmuşa geçirilmegine bagly däl.
Kompozisiýa bilen mirasyň arasyndaky tapawutlar
No.ok. Kompozisiýa (bar / bar) Miras (a / is)
1 Polimorfizmi we kodlary gaýtadan ulanmagy goldaýar. Polimorfizmi we kodlary gaýtadan ulanmagy goldaýar.
2 Işleýiş wagty obýekti eýýäm döredildi. Obýekt jemlenen wagtda dinamiki döredilýär.
3 Iş ýerine ýetirilende ýerine ýetirilip bilner. Complementerine ýetiriş düzülende üýtgedilip bilner.
4 Kiçi klas ene-atasy synpyndan garaşsyz, boş birleşmegi goldaýar (esasanam interfeýs gözegçiligi astynda). Kiçi synp ene-atalar synpynyň durmuşa geçirilmegine baglydyr, şonuň üçin baglanyşyk berk hasaplanýar.
5 Ulanyş: Jaýda hammam bar. Jaýyň hammamdygyny aýtmak ýalňyş. Miras bir taraplaýyn: Jaý bina. Emma bina jaý däl.
Bellik: Kodyň gaýtadan ulanylmagyny üpjün etmek üçin mirasy ulanmaň. “Is” (is) bilen baglanyşyk ýok bolsa, kompozisiýa bu maksatlar üçin ulanylýar. Kompozisiýa bilen jemlemäniň arasyndaky tapawut obýekt gatnaşyklarynda. Agregasiýa , bir synpyň kolleksiýa gabat gelýän gatnaşygydyr. Bu tutuş bir gatnaşyklaryň bir bölegi, bu bölegi tutuşlygyna bolmazdan bolup biler. Şeýle gatnaşyklar has gowşak. Tigirli garaşlylyk ýok. Mysal üçin: sargyt we önüm. Kompozisiýa, bir synpyň kolleksiýa gabat gelýän gatnaşygydyr. Bütin gatnaşyklaryň bir bölegi, bu bölegi tutuşlygyna bolmaz. Tutuşlygyna ýok edilse, ähli düzüm bölekleri hem ýok ediler. Bu has berk gatnaşyk. Mysal üçin: köpburçluk we onuň uçlary, tertip we onuň düzümi.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION