Tutorial

Mataupu Faavae o le Liskov Suiga, lona tolu o mataupu autu a le SOLID

O vasega a tamaiti e le tatau lava ona a'afia pe suia le mea defifaʻamatalaga o le ituaiga o matua vasega.

O le manatu o lenei mataupu faavae na folasia e Barbara Liskov i se autu o le konafesi i le 1987 ma mulimuli ane lomia i se pepa faatasi ma Jannette Wing i le 1994. defiuluai tion e faapea:

Tuʻu le q (x) o se meatotino faʻaalia i luga o mea faitino x o le ituaiga T. Ona tatau lea ona faʻaalia le q (y) mo mea faitino o le ituaiga S o le S o se subtype o le T.

Mulimuli ane, faatasi ai ma le lomiaina o mataupu faavae SOLID a Robert C. Martin i lana tusi Agile Software Development, Principles, Patterns, and Practices ona toe lomia lea i le C# version o le tusi Agile Principles, Patterns, and Practices in C#, le defina lauiloa o le Liskov substitution principle.

O lenei mea e aumaia ai i tatou i le defifaamatalaga na tuuina mai e Robert C. Martin: Subtypes tatau ona suia ma a latou faʻavae tulaga.

Faigofie, o se vasega vasega tatau ona soʻona faʻateʻia metotia a matua vasega i se auala e le motusia ai gaioiga mai le tagata faʻatau manatu o le manatu. Lenei o se faigofie faʻataʻitaʻiga e faʻaali ai le manatu.

Taavale vasega {

    galuega amata startEngine () {

        // Leai masini amata amata galuega

    }

 

    galue faʻatelevave () {

        // Lefaʻagafuaina o galuega

    }

}

Tuuina atu o le Taavale vasega - e mafai ona avea ma auiliiliga - ma lua faʻatinoina:

vasega taʻavale faʻalauteleina Taavale {

    galuega amata startEngine () {

        $ this-> auaiIgnition ();

        matua :: startEngine ();

    }

 

    galuega tumaoti faʻaaofiaIgnition () {

        // Faiga ole sulu

    }

}

 

vasega ElectricBus faʻalauteleina Taavale {

    galue faʻatelevave () {

        $ lenei-> faateleinaVoltage ();

        $ lenei-> fesoʻotaʻiItasi Taʻitoʻatasi ();

    }

 

    galuega tumaoti faʻaopoopoVoltage () {

        // Faʻamatalaga uila

    }

 

    galuega tumaoti fesootaiIndividualEngines () {

        // Mafaufauga fesoʻotaʻi

    }

}

vasega Avetaʻavale {

    alu alu (Taavale $ v) {

        $ v-> startEngine ();

        $ v-> faʻavave ();

    }

}

O le vasega tagata faʻatau e tatau ona mafai ona faʻaaogaina uma pe a mafai ona faʻaaoga Taʻavale.

Lea e aumaia ai i tatou i se faigofie faʻatinoina o le Mamanu Metotia Fuafua Mamanu pei ona matou faʻaaogaina i le OCP.

Atonu e te fiafia foi i le mataupu faavae lona lua SOLID: https: //bloginnovazione.en / tatala-tapuni-lua-maua-mataupu faavae / 3906 /

Faʻavae i luga o matou poto masani muamua ma le Tatala / Tapunia mataupu faʻavae, e mafai ona matou faʻamaeʻaina o le Liskov suia mataupu faʻavae e vavalalata ma le OCP. O le mea moni, "o le solia o le LSP o se latent solia o le OCP" (Robert C. Martin), ma le Faʻataʻitaʻiga Metotia mamanu Mamanu o se masani faʻataʻitaʻiga o le faʻaaloalo ma le faʻatinoina o le LSP, ma i se tasi itu o tali e tatau foi ona tausisia ma le OCP.

Faʻataʻitaʻiga o le LSP soli

vasega Tafatafaʻilagi {

    tumaoti $ topLeft;

    tumaoti $ lautele;

    tumaoti $ maualuga;

 

    gaioiga lautele setHeight ($ maualuga) {

        $ lenei-> maualuga = $ maualuga;

    }

 

Talafou fou
Aua nei misia le tala sili ona taua e uiga i mea fou. Saini e maua i latou ile imeli.

    gaioiga lautele getHeight () {

        toe faafoi $ lenei-> maualuga;

    }

 

    lautele galuega setWidth ($ lautele) {

        $ lenei-> lautele = $ lautele;

    }

 

    galuega a le lautele getWidth () {

        toe faafoi $ lenei-> lautele;

    }

}

Tatou amata i se foliga masani geometric foliga, o se tafatolu. Ua naʻo se faigofie faʻamatalaga mea ma setters ma getters mo lautele ma maualuga. Vaʻai faalemafaufau o la matou tusi talosaga e galue ma ua uma ona tufatufaina atu luga o tele tagata o tausia. Nei latou te manaʻomia se foliga fou. E tatau ona mafai ona latou faʻataʻitaʻia sikuea.

I le olaga moni, i le geometry, o le sikuea o se faʻapitoa foliga o se tafatafa. Ma e mafai ona tatou taumafai e faʻatino se vasega Lotoa e faʻalauteleina se vasega tafaʻilagi. E masani ona fai mai o le tamaititi vasega o se matua vasega, ma o lenei faʻamatalaga e tusa foi ma LSP, a itiiti mai i le taimi muamua tepa.

vasega Lotoa faʻalautele faatafafa {

    lautele faʻatulagaina setHeight ($ taua) {

        $ lenei-> lautele = $ tau;

        $ lenei-> maualuga = $ tau;

    }

 

    lautele galuega setWidth ($ taua) {

        $ lenei-> lautele = $ tau;

        $ lenei-> maualuga = $ tau;

    }

}

O le sikuea o le sikuea ma tutusa lautele ma maualuga ma e mafai ona tatou faia se eseʻese faʻatinoina pei o le muamua faʻataʻitaʻiga. E mafai ona matou lafoaʻi setters uma e seti uma maualuga ma lautele. Ae faʻapefea ona aʻafia ai le code client?

vasega kalani {

    aoga eriaVerifier (Tafaʻilagi $ r) {

        $ a-> seti lautele (5);

        $ ----------------> seti Maualuga (4);

        afai ($ ----------------> vaega ()! = 20) {

            togi ese Tuusaunoa ('Eria leaga!');

        }

        toe foi mai moni;

    }

}

E mafai ona mafaufauina o iai se vasega tagata faʻatau e siaki le vaega o le faʻatafaʻata ma togi se tuusaunoa pe a fai e sese.

vaega galue () {

    faʻafoʻi $ lenei-> lautele * $ lenei-> maualuga;

}

Na matou mautinoa na faʻaopopo le auala i luga atu i le matou vasega tafaʻilagi e avatua le eria.

vasega LspTest faʻalauteleina PHPUnit_Framework_TestCase {

    galuega faatino testRectangleArea () {

        $ r = fou Tafatolu ();

        $ c = Tagata fou ();

        $ this-> assertTrue ($ c-> areaVerifier ($ r));

    }

}

Ma na matou faia se su'ega faigofie e ala i le lafoina o se mea fa'atafa'afa'afa avanoa i le su'ega o le eria ma pasi le su'ega. Afai o le matou vasega Square o defifa'auma sa'o, lafo i le Client's areaVerifier() e le tatau ona motusia ana galuega. A uma mea uma, o le sikuea ose rectangle i so'o se uiga fa'a-matematika. Ae o la tatou vasega ea?

galuega faatino suʻegaSquareArea () {

    $ r = Lotoa fou ();

    $ c = Tagata fou ();

    $ this-> assertTrue ($ c-> areaVerifier ($ r));

}

O lea la, o le matou vasega Square e le o se Rectangle. E soli tulafono o geometry. Ua le manuia ma soli le mataupu faavae sui Liskov.

Ercole Palmeri

Talafou fou
Aua nei misia le tala sili ona taua e uiga i mea fou. Saini e maua i latou ile imeli.

Talu ai nei tala

Veeam o loʻo faʻaalia le lagolago sili ona atoatoa mo ransomware, mai le puipuiga i le tali atu ma le toe faʻaleleia

Coveware e Veeam o le a faʻaauau pea ona tuʻuina atu auaunaga faʻalavelave faʻalavelave faʻafuaseʻi. Coveware o le a ofoina atu faʻamatalaga faʻafomaʻi ma faʻaleleia gafatia ...

23 Aperila 2024

Green and Digital Revolution: Fa'afefea ona Suia e le Tausiga Va'ai le Suau'u & Kesi Alamanuia

O le tausiga fa'anatinati o lo'o fa'afouina ai le vaega o le suau'u ma le kesi, fa'atasi ai ma se faiga fou ma le fa'agaoioia ile pulega o la'au.…

22 Aperila 2024

Ua fa'atupuina e le pule fa'atonu a le UK antitrust le fa'ailoga BigTech i luga o GenAI

Ua tuʻuina atu e le UK CMA se lapataiga e uiga i amioga a Big Tech i le maketi atamai faʻapitoa. O iina…

18 Aperila 2024

Casa Green: suiga malosi mo se lumanaʻi gafataulimaina i Italia

O le "Green Houses" Decree, na faia e le Iuni a Europa e faʻaleleia ai le malosi o fale, ua maeʻa lana faiga faʻatulafonoina ma ...

18 Aperila 2024