Tutorial

د لیسکوف فرعي اصولو ، دریم سولیډ اصول

د ماشومانو ټولګي باید هیڅکله اغیزه یا بدلون ونلري defiد والدین ټولګي ډول بیانونه.

د دې اصل مفهوم د باربرا لیسکوف لخوا په 1987 کې د کنفرانس کلیدي وینا کې معرفي شو او وروسته په 1994 کې د جینیټ ونګ سره یوځای په یوه مقاله کې خپور شو. defiاصلي بڼه په لاندې ډول ده:

پرېږدئ چې Q (x) د T ډول T توکمونو باندې د توضیح وړ ملکیت شي. بیا Q (y) د S ډول S څیزونو لپاره چې د S ډول T ډول دی.

وروسته، د رابرټ سي مارټین د سولیډ اصولو په خپل کتاب کې د Agile سافټویر پراختیا، اصولو، نمونو، او طرزالعملونو په خپرولو سره او بیا په C# کې د Agile Principles, Patterns, and Practices کتاب په C# نسخه کې بیا خپور شو. defiدا د لیسکوف د بدیل اصول په توګه پیژندل شوی.

دا موږ ته راوړي defiد رابرټ سی مارتین لخوا ورکړل شوي معلومات: فرعي ډولونه باید د دوی د اساس ډولونو سره د بدلېدو وړ وي.

په ساده ډول ، فرعي طبقه باید د اصلي ټولګي میتودونه په داسې ډول تحلیل کړي چې د پیرودونکي نظر څخه فعالیت نه ماتوي. د تصور څرګندولو لپاره دلته یو ساده مثال دی.

د ټولګی موټر {

    فعالیت پیل ایجینین () {

        // د ډیفالټ انجن پیل فعالیت

    }

 

    د فعالیت سرعت () {

        // د ډیفالټ ګړندي فعالیت

    }

}

د وسایط ټولګی ورکړل شوی - دا خلاص کیدی شي - او دوه پلي کول:

د ټولګي موټر د موټرو غځول {

    فعالیت پیل ایجینین () {

        $ this- >ंगेګنه ()؛

        مور: :: startEngine ()؛

    }

 

    شخصي فعالیت بوختیا () {

        // د احتراق پروسه

    }

}

 

د ټولګی بریښنا بس د موټرو غزول {

    د فعالیت سرعت () {

        $ this-> وولټ ولټاژ ()؛

        $ this-> نښلونکی انډیزونه ()؛

    }

 

    د خصوصي فعالیت وده ولټاژ () {

        // بریښنایی منطق

    }

 

    شخصي فعالیت وصل

        // د پیوستون منطق

    }

}

د ټولګي چلونکی {

    فنکشن و (ګاډي $ v) {

        $ v-> startEngine ()؛

        $ v-> ګړندی کول ()؛

    }

}

د پیرودونکي ټولګی باید دواړه وکاروي که چیرې دا وسایط وکاروي.

کوم چې موږ ته د ټیمپلیټ میتود ډیزاین پا aې ساده پلي کولو ته راوړو لکه څنګه چې موږ دا په OCP کې کارولی.

تاسو ممکن د دوهم SOLID اصولو سره هم علاقه ولرئ: https: //bloginnovazione.en / خلاص-تړل شوی-دوهم-سخت-اصول / 3906 /

د خلاص / تړل شوي اصولو سره زموږ د پخوانۍ تجربې پراساس ، موږ کولی شو دې پایلې ته ورسیږو چې د لیسکوف بدیل اصول له OCP سره نږدې تړاو لري. په حقیقت کې ، "د LSP څخه سرغړونه د OCP یوه ناوړه سرغړونه ده" (رابرټ سی. مارتین) ، او د ټیمپټ میتود ډیزاین پیټرن د LSP د درناوي او پلي کولو کلاسیک مثال دی ، کوم چې په پایله کې د حل کولو یوه لاره هم ده چې اطاعت یې کوي. د OCP سره.

د LSP سرغړونې مثال

مستطیل ټولګي {

    شخصي $ ټاپ لیفټ؛

    شخصي

    شخصي - قد

 

    د عمومي فعالیت سیټ هوټ ($ قد) {

        $ this-> قد = $ قد؛

    }

 

د نوښت خبر پاڼه
د نوښت په اړه خورا مهم خبرونه له لاسه مه ورکوئ. د بریښنالیک له لارې دوی ترلاسه کولو لپاره لاسلیک وکړئ.

    د عامه فعالیت getHeight () {

        بېرته $ this-> قد؛

    }

 

    د عمومي فعالیت سیټ چوکۍ ($ عرض) {

        $ this-> عرض = $ عرض؛

    }

 

    عامه فعالیت getWidth () {

        بېرته $ this-> عرض؛

    }

}

راځئ چې د لومړني جیوماتیک شکل ، مستطیل سره پیل وکړو. دا د سور او قد لپاره سیټرو او ګیټرو سره یوازې د معلوماتو ساده شی دی. تصور وکړئ چې زموږ غوښتنلیک کار کوي او دمخه په څو مراجعینو کې ځای په ځای شوي. اوس دوی نوې ب needې ته اړتیا لري. دوی باید د دې وړتیا ولري چې مربعې اداره کړي.

په ریښتیني ژوند کې ، په جیوماتري کې ، مربع د مستطیل ځانګړی شکل دی. نو موږ کولی شو د مربع ټولګي پلي کولو هڅه وکړو چې د مستطیل ټولګی وغزوي. ډیری وختونه ویل کیږي چې د ماشوم ټولګی د مور او پلار ټولګی دی ، او دا څرګندونې LSP ته هم موافقه کوي ، لږترلږه په لومړي نظر کې.

ټولګي مربع مستطیل s

    د عمومي فعالیت سیټ هوټ (ارزښت) {

        $ this-> پلنو = $ ارزښت؛

        $ this-> قد = $ ارزښت؛

    }

 

    د عمومي فعالیت سیټ چوکۍ ($ ارزښت) {

        $ this-> پلنو = $ ارزښت؛

        $ this-> قد = $ ارزښت؛

    }

}

چوکۍ د مساوي عرض او لوړوالي سره مستطیل دی او موږ کولی شو د تیرو مثال په څیر عجیب پلي کول ترسره کړو. موږ کولی شو دواړه سیټونه پورته کړو او عرض دواړه تنظیم کړو. مګر دا به څنګه د پیرودونکي کوډ اغیزه وکړي؟

د ټولګي پیرودونکی {

    د فعالیت ساحه تصدیقونکی (مستطیل $ r) {

        $ r-> setWidth (5)؛

        $ r-> سیټ هایت (4)؛

        که ($ r-> سیمه ()! = 20)

            نوی استثنا وغورځئ ('خرابه سیمه!')؛

        }

        سمه راستنه کړئ

    }

}

دا د پام وړ ده چې د پیرودونکي ټولګي ولرئ چې د مستطیل ساحه وګوري او استثنا یې وغورځوي که غلط وي.

د فعالیت ساحه () {

    بېرته $ this-> عرض * $ this-> قد؛

}

موږ په څرګند ډول پورته میتود زموږ د مستطیل ټولګي ته اضافه کړ ترڅو ساحه چمتو کړو.

LspTest ټولګي د PHPUnit_Framework_TestCase پراخوي {

    د فعالیت ازمونې ریکټانگلیا () {

        $ r = نوی مستطیل ()؛

        $ c = نوی پیرودونکی ()؛

        $ this-> assertTrue ($ c-> AreaVerifier ($ r))؛

    }

}

او موږ د ساحې چیکر ته د خالي مستطیل څیز په لیږلو سره یو ساده ازموینه رامینځته کړه او ازموینه پاس شوه. که زموږ ټولګي مربع وي defiپه سمه توګه ټاکل شوی، د مراجعینو ساحې ته یې لیږل باید د هغې فعالیت مات نه کړي. په هرصورت، مربع په هر ریاضياتي معنی کې یو مستطیل دی. مګر دا زموږ ټولګی دی؟

د فعالیت ټیسټ سټیریا () {

    $ r = نوی چوکۍ ()؛

    $ c = نوی پیرودونکی ()؛

    $ this-> assertTrue ($ c-> AreaVerifier ($ r))؛

}

نو، زموږ د مربع طبقه د ټولو وروسته مستطیل نه دی. دا د جیومیټری قوانین ماتوي. دا ناکامیږي او د لیسکوف بدیل اصول سرغړونه کوي.

Ercole Palmeri

د نوښت خبر پاڼه
د نوښت په اړه خورا مهم خبرونه له لاسه مه ورکوئ. د بریښنالیک له لارې دوی ترلاسه کولو لپاره لاسلیک وکړئ.

وروستي مقالې

د ګوګل نوی مصنوعي استخبارات کولی شي DNA، RNA او "د ژوند ټول مالیکولونه" ماډل کړي

ګوګل ډیپ مائنډ د خپل مصنوعي استخباراتو ماډل یوه پرمختللې نسخه معرفي کوي. نوی پرمختللي ماډل نه یوازې چمتو کوي ...

9 د 2024 ماین

د لارویل ماډلر معمارۍ سپړنه

لارویل، د خپل ښکلي نحو او ځواکمنو ځانګړتیاو لپاره مشهور، د ماډلر معمارۍ لپاره یو پیاوړی بنسټ هم چمتو کوي. هلته…

9 د 2024 ماین

د سیسکو هایپرشیلډ او د سپلنک استملاک د امنیت نوی دور پیل کیږي

سیسکو او سپلنک د پیرودونکو سره مرسته کوي چې د راتلونکي امنیت عملیاتو مرکز (SOC) ته خپل سفر ګړندي کړي ...

8 د 2024 ماین

د اقتصادي اړخ هاخوا: د ransomware غیر څرګند لګښت

Ransomware د تیرو دوه کلونو راهیسې په خبرونو تسلط لري. ډیری خلک ښه پوهیږي چې بریدونه ...

6 د 2024 ماین

په Augmented Reality کې نوښتګره مداخله، د کاتانیا پولی کلینیک کې د ایپل لیدونکي سره

د ایپل ویژن پرو سوداګریز لیدونکي په کارولو سره د سترګو د سترګو عملیات په کاتانیا پولی کلینیک کې ترسره شوي ...

3 د 2024 ماین

د ماشومانو لپاره د رنګینګ پاڼو ګټې - د هر عمر لپاره د جادو نړۍ

د رنګ کولو له لارې د موټرو ښه مهارتونو رامینځته کول ماشومان د نورو پیچلو مهارتونو لکه لیکلو لپاره چمتو کوي. رنګولو…

2 د 2024 ماین

راتلونکی دلته دی: د بار وړلو صنعت څنګه د نړیوال اقتصاد انقلاب کوي

سمندري سکتور یو ریښتینی نړیوال اقتصادي ځواک دی ، کوم چې د 150 ملیارد بازار په لور حرکت کړی ...

1 د 2024 ماین

خپرونکي او OpenAI تړونونه لاسلیک کوي ترڅو د مصنوعي استخباراتو لخوا پروسس شوي معلوماتو جریان تنظیم کړي

تیره دوشنبه، فایننشل ټایمز د OpenAI سره یوه معامله اعلان کړه. FT د نړۍ په کچه ژورنالیزم جواز ورکوي ...

30 اپریل 2024

نوښت په خپله ژبه ولولئ

د نوښت خبر پاڼه
د نوښت په اړه خورا مهم خبرونه له لاسه مه ورکوئ. د بریښنالیک له لارې دوی ترلاسه کولو لپاره لاسلیک وکړئ.

مونږ سره په