10 Prensîbên Bernamekirinê yên Objekt Oriented Divê Her Pêşdebir Pê Bizane

10 Prensîbên Bernamekirinê yên Objekt Oriented Divê Her Pêşdebir Pê Bizane

Pir caran ez bi pêşdebiran re hevdîtin dikim ku prensîbên SOLID nebihîstin (em li vir bi berfirehî behsa wan kir. — Werger.) an bernameya obje-oriented (OOP), an jî wan bihîstiye, lê wan di pratîkê de bikar neynin. Ev gotar feydeyên prensîbên OOP-ê yên ku di xebata xweya rojane de alîkariya pêşdebiran dikin vedibêje. Hin ji wan baş têne zanîn, yên din ne ew qas, ji ber vê yekê gotar dê hem ji bo destpêk û hem jî ji bo bernamenûsên xwedî ezmûn bikêr be.

Em bînin bîra xwe: ji bo hemî xwendevanên Habr - 10 ruble daxistinek dema ku hûn beşdarî qursek Skillbox-ê bi karanîna koda danasînê ya Habrê dibin.

Skillbox pêşniyar dike: Kursa perwerdehiya serhêl "pêşdebirê Java".

DRY (Xwe Dubare Nekin)

Prensîbek pir hêsan, ku cewhera wê ji navê xwe diyar e: "Xwe dubare neke." Ji bo bernamenûsek, ev tê vê wateyê ku pêdivî ye ku ji koda dubare dûr bikevin, û her weha derfeta karanîna abstraksiyonê di xebata xwe de.

Heke di kodê de du beşên dubare hene, divê ew di yek rêbazê de bêne hev kirin. Ger nirxek kodkirî ji carekê zêdetir were bikar anîn, hêja ye ku ew veguhezîne domdarek gelemperî.

Ev ji bo hêsankirina kodê û domandina wê hêsantir e, ku armanca sereke ya OOP-ê ye. Pêdivî ye ku hûn yekîtiyê jî zêde bikar neynin, ji ber ku heman kod dê hem bi OrderId û hem jî bi SSN-ê verastkirinê derbas neke.

Encapsulating Changes

Berhemên nermalava pir pargîdaniyan bi berdewamî pêşve diçin. Ev tê wê wateyê ku divê di kodê de guhertin bêne kirin, pêdivî ye ku ew piştgirî were kirin. Hûn dikarin bi karanîna encapsulasyonê jiyana xwe hêsantir bikin. Ev ê bihêle ku hûn bingeha koda xweya heyî bi bandortir ceribandin û biparêzin. Li vir mînakek e.

Ger hûn di Java-yê de binivîsin, hingê rê û rêbazên taybet û guhêrbar bi xweber veqetînin.

Prensîba vekirî / girtî

Ev prensîb bi xwendina gotina jêrîn bi hêsanî dikare were bibîranîn: "Desteyên nermalavê (ders, modul, fonksiyon, hwd.) Divê ji bo dirêjkirinê vekirî bin, lê ji bo guhartinê girtî bin." Di pratîkê de, ev tê vê wateyê ku ew dikarin rê bidin ku tevgera wan bêyî guheztina koda çavkaniyê were guheztin.

Prensîp girîng e dema ku guheztina koda çavkaniyê pêdivî bi guhertoya kodê, ceribandina yekîneyê û prosedurên din heye. Koda ku prensîba vekirî / girtî dişopîne dema ku were dirêj kirin nayê guheztin, ji ber vê yekê pir kêmtir pirsgirêkên wê hene.

Li vir mînakek kodê ye ku vê prensîbê binpê dike.

10 Prensîbên Bernamekirinê yên Objekt Oriented Divê Her Pêşdebir Pê Bizane

Heke hûn hewce ne ku tiştek tê de biguhezînin, ew ê gelek dem bigire, ji ber ku hemî beşên kodê yên ku pêwendiya wan bi perçeya xwestî re heye dê bêne guheztin.

Bi awayê, vekirî-girtîbûn yek ji prensîbên SOLID e.

Prensîba Berpirsiyariya Yekane (SRP)

Prensîbek din ji set SOLID. Ew dibêje ku "tenê sedemek heye ku dibe sedema guhertina polê." Ders tenê pirsgirêkek çareser dike. Dibe ku gelek rêbaz hebin, lê her yek ji wan tenê ji bo çareserkirina pirsgirêkek hevpar tê bikar anîn. Hemû rêbaz û taybetmendî divê tenê vê xizmetê bikin.

10 Prensîbên Bernamekirinê yên Objekt Oriented Divê Her Pêşdebir Pê Bizane

Nirxa vê prensîbê ev e ku ew girêdana di navbera hêmana nermalava kesane û kodê de winda dike. Ger hûn ji yek fonksiyonê li polê zêde bikin, ew têkiliyek di navbera her du fonksiyonan de destnîşan dike. Bi vî rengî, heke hûn yek ji wan biguhezînin, şansek mezin heye ku ya duyemîn, ku bi ya yekem ve girêdayî ye, xera bike. Û ev tê vê wateyê ku çerxên ceribandinê zêde dike da ku pêşî li hemî pirsgirêkan nas bike.

Prensîba Veguhastina Girêdanê (DIP)

10 Prensîbên Bernamekirinê yên Objekt Oriented Divê Her Pêşdebir Pê Bizane

Li jor mînakek kodek heye ku AppManager bi EventLogWriter ve girêdayî ye, ku di encamê de bi AppManager re ji nêz ve tê girêdan. Ger ji we re rêyek cûda hewce ye ku hûn agahdariyek nîşan bidin, çi push, SMS an e-name be, hûn hewce ne ku pola AppManager biguhezînin.

Pirsgirêk bi karanîna DIP-ê tê çareser kirin. Ji ber vê yekê, li şûna AppManager, em daxwazek EventLogWriter dikin, ku dê bi karanîna çarçoweyê têkevin.

DIP bi guheztina modula pêwendiyê bi hêsanî modulên kesane bi yên din re biguhezîne. Ev dihêle ku meriv modulek biguhezîne bêyî ku bandorê li yên din bike.

Di şûna mîrasê de pêkhatin

10 Prensîbên Bernamekirinê yên Objekt Oriented Divê Her Pêşdebir Pê BizaneDu awayên sereke hene ku ji nû ve karanîna kodê bikar bînin: mîras û pêkhatin, ku her du jî xwedî avantaj û dezawantajên xwe ne. Bi gelemperî ya duyemîn tê tercîh kirin ji ber ku ew maqûltir e.

Pêkhatî ji we re şiyana ku hûn di dema xebitandinê de bi danîna taybetmendiyên wê re tevgera polê biguhezînin. Dema ku navbeynkaran bicîh dikin, polîmorfîzm tê bikar anîn, ku pêkanînek maqûltir dide.

Tewra Java-ya bi bandor ji hêla Joshua Bloch ve şîret dike ku kompozîsyona li ser mîrasê hilbijêrin.

Prensîba Cîgirkirina Barbara Liskov (LSP)

Prensîbek din ji toolkit SOLID. Ew diyar dike ku binecure divê li şûna supertîp bin. Ango rêbaz û fonksiyonên ku bi superclass re dixebitin divê bikaribin bêyî pirsgirêk bi binklasên wê re bixebitin.

LSP hem bi prensîba berpirsiyariya yekane û hem jî bi prensîba berpirsiyariya hevpar ve girêdayî ye. Ger çînek ji binkîfek bêtir fonksiyonel peyda bike, wê hingê ya paşîn dê hin fonksiyonan piştgirî neke, vê prensîbê binpê dike.

Li vir perçeyek kodê ye ku li dijî LSP-ê ye.

10 Prensîbên Bernamekirinê yên Objekt Oriented Divê Her Pêşdebir Pê Bizane

Rêbaza qada (Rectangle r) qada Rectangle hesab dike. Bername piştî darvekirina Meydan dê têk biçe ji ber ku Meydan li vir ne Reqtangle ye. Li gorî prensîba LSP-ê, fonksiyonên ku referansên çînên bingehîn bikar tînin divê karibin bêyî rêwerzên zêde tiştên çînên derhatî bikar bînin.

Ev prensîb, ku pênaseyek taybetî ya binecure ye, ji hêla Barbara Liskov ve di konferansek sereke ya 1987-an de bi sernavê "Data Abstraction and Hiyerarchy" hate pêşniyar kirin, ji ber vê yekê navê wê ye.

Prensîba Parçebûna Navberê (ISP)

Prensîbek din a SOLID. Li gorî wê, navbeyneke ku neyê bikaranîn divê neyê bicihanîn. Li pey vê prensîbê dibe alîkar ku pergalê dema ku guheztin di mantiqa xebitandinê de têne çêkirin nerm û maqûl bimîne ji bo vesazkirinê.

Bi gelemperî, ev rewş diqewime dema ku navber bi yekcarî çend fonksiyonan vedihewîne, û xerîdar tenê yek ji wan hewce dike.

Ji ber ku nivîsandina navberek karekî dijwar e, guheztina wê piştî ku kar qediya bêyî ku tiştek bişkîne dê bibe dijwariyek.

Feydeya prensîba ISP-ê di Java-yê de ev e ku hemî rêbaz divê pêşî bêne bicîh kirin, û tenê hingê ew dikarin ji hêla çînan ve werin bikar anîn. Ji ber vê yekê, prensîb gengaz dike ku hejmara rêbazan kêm bike.

10 Prensîbên Bernamekirinê yên Objekt Oriented Divê Her Pêşdebir Pê Bizane

Bernamekirin ji bo navberê, ne ji bo pêkanîna

Li vir her tişt ji navê xwe diyar e. Sepandina vê prensîbê dibe sedema afirandina kodek maqûl ku dikare bi her pêkanîna nû ya navbeynê re bixebite.

Divê hûn ji bo guhêrbar, celebên vegerê, an celebê argumana rêbazê celebê navbeynkar bikar bînin. Mînakek SuperClass ne ji SubClass bikar tîne.

Ku heye:

Hejmarên lîsteyê= getNumbers();

Lê na:

Hejmarên ArrayList = getNumbers();

Li vir pêkanînek pratîkî ya ku li jor hatî nîqaş kirin heye.

10 Prensîbên Bernamekirinê yên Objekt Oriented Divê Her Pêşdebir Pê Bizane

Prensîba heyetê

Nimûneyek hevpar di Java de rêbazên wekhev () û hashCode () ye. Dema ku pêdivî ye ku du tiştan bidin ber hev, ev kiryar li şûna ya xerîdar ji çîna têkildar re tê şandin.

Feydeya prensîbê ev e ku dubarekirina kodê tune ye û guheztina tevgerê bi nisbî hêsan e. Ew ji bo delegasyona bûyerê jî derbas dibe.

10 Prensîbên Bernamekirinê yên Objekt Oriented Divê Her Pêşdebir Pê Bizane

Hemî van prensîban dihêlin ku hûn kodek maqûltir, xweşik û pêbawer bi hevgirtinek bilind û girêdana kêm binivîsin. Bê guman, teorî baş e, lê ji bo pêşdebirek ku bi rastî zanîna wergirtî bikar bîne, pratîk hewce ye. Gava ku we prensîbên OOP-ê fêr kir, dibe ku gava weya paşîn fêrbûna şêwazên sêwiranê be da ku pirsgirêkên pêşkeftina nermalava hevpar çareser bike.

Skillbox pêşniyar dike:

Source: www.habr.com

Add a comment