ក្នុងចំណោមអ្នកអភិវឌ្ឍន៍ ការសរសេរកម្មវិធីតម្រង់ទិសវត្ថុបានទាក់ទាញអ្នកបន្ទាប់ដែលមានទំហំធំ។ ភាសាកុំព្យូទ័រដ៏ពេញនិយម Python ក៏ប្រកាន់ខ្ជាប់នូវគំរូតម្រង់ទិសវត្ថុផងដែរ។
វាទាក់ទងនឹងការកំណត់វត្ថុ និងថ្នាក់នៅក្នុង Python ដែលបង្កើតជាមូលដ្ឋានសម្រាប់គោលការណ៍ OOPs ។ នៅក្នុងមេរៀននេះស្តីពី "ការសរសេរកម្មវិធីតម្រង់ទិសវត្ថុនៅក្នុង Python" អ្នកនឹងរៀនពីរបៀបប្រកាសថ្នាក់ Python បង្កើតវត្ថុពីពួកវា និងប្រើបច្ចេកទេស OOPs ចំនួនបួន។
ដូច្នេះរឿងដំបូង។
តើការសរសេរកម្មវិធីតាមទិសដៅជាកម្មវត្ថុគឺជាអ្វី?
ការផ្តោតសំខាន់នៃកម្មវិធីតម្រង់ទិសវត្ថុ (OOP) គឺការបង្កើត "វត្ថុ" ។ បណ្តុំនៃអថេរ និងមុខងារដែលទាក់ទងគ្នាបង្កើតបានជាវត្ថុមួយ។
អថេរទាំងនេះត្រូវបានសំដៅជាញឹកញាប់ថាជាគុណលក្ខណៈរបស់វត្ថុ ហើយអាកប្បកិរិយារបស់វាត្រូវបានសំដៅជាញឹកញាប់ថាជាមុខងាររបស់វា។ ធាតុទាំងនេះផ្តល់ឱ្យកម្មវិធីនូវរចនាសម្ព័ន្ធដែលមានប្រសិទ្ធភាព និងអាចយល់បាន។ រថយន្តគឺជាឧទាហរណ៍នៃវត្ថុមួយ។
ប្រសិនបើរថយន្តជារបស់មួយ គុណលក្ខណៈរបស់វានឹងរួមបញ្ចូលរបស់ជាច្រើនដូចជា ពណ៌ ម៉ូដែល តម្លៃ ម៉ាកជាដើម។ លើសពីនេះ វានឹងបង្កើនល្បឿន បន្ថយល្បឿន និងផ្លាស់ប្តូរប្រអប់លេខ។
រូបភាពមួយទៀត៖ ប្រសិនបើយើងគិតថាឆ្កែជារបស់មួយ នោះលក្ខណៈមួយចំនួនរបស់វាអាចមានពណ៌ ពូជ ឈ្មោះ ទម្ងន់។ល។
ដោយសារតែវារួមបញ្ចូលនូវគោលគំនិតក្នុងពិភពពិត ដូចជាវត្ថុ ការលាក់កំបាំង ការទទួលមរតកជាដើម។ ទៅក្នុងកម្មវិធី ការសរសេរកម្មវិធីតម្រង់ទិសវត្ថុត្រូវបានគេស្គាល់យ៉ាងច្បាស់។ ដោយសារតែវាស្រដៀងទៅនឹងកាលៈទេសៈក្នុងពិភពពិត ដូច្នេះការមើលឃើញត្រូវបានធ្វើឱ្យសាមញ្ញជាង។
គោលគំនិតនៃការសរសេរកម្មវិធីតម្រង់ទិសវត្ថុ
ថ្នាក់ & វត្ថុនៅក្នុង Python
ដូចភាសាដែលតម្រង់ទិសវត្ថុផ្សេងទៀត Python អនុញ្ញាតឱ្យអ្នករចនាថ្នាក់ដើម្បីបង្កើតវត្ថុ។ ប្រភេទទិន្នន័យពេញនិយមបំផុតនៅក្នុង Python រួមទាំង strings បញ្ជី វចនានុក្រម និងវត្ថុផ្សេងទៀត គឺជាថ្នាក់ដែលភ្ជាប់មកជាមួយ។
ថ្នាក់គឺជាក្រុមនៃវិធីសាស្រ្តដែលបានតភ្ជាប់ និងអថេរឧទាហរណ៍ដែលកំណត់ប្រភេទវត្ថុជាក់លាក់មួយ។ ថ្នាក់អាចត្រូវបានគេមើលឃើញថាជាគំរូ ឬគំរូសម្រាប់វត្ថុមួយ។ អថេរដែលបង្កើតជាថ្នាក់ត្រូវបានគេស្គាល់ថាជាគុណលក្ខណៈ។
វត្ថុគឺជាសមាជិកនៃថ្នាក់ដែលមានសំណុំគុណលក្ខណៈដែលបានកំណត់។ ដោយសារតែនេះ ចំនួនវត្ថុណាមួយអាចត្រូវបានបង្កើតដោយប្រើថ្នាក់ដូចគ្នា។
ថ្នាក់ Python ត្រូវបានកំណត់ដោយប្រើពាក្យ class ដែលបន្ទាប់មកតាមឈ្មោះ class និង colon ។ រូបភាពនៃថ្នាក់សេកអាចជា៖
នៅទីនេះយើងប្រកាសថ្នាក់ទទេ Parrot ដោយប្រើពាក្យគន្លឹះថ្នាក់។ យើងបង្កើតឧទាហរណ៍ពីថ្នាក់។ instance គឺជាវត្ថុជាក់លាក់មួយដែលត្រូវបានបង្កើតឡើងពីថ្នាក់ជាក់លាក់មួយ។ 'pass' ត្រូវបានគេប្រើជាញឹកញាប់ជា stand-in សម្រាប់កូដដែលការអនុវត្តដែលយើងអាចបោះបង់ចោលសម្រាប់ពេលនេះ។ យើងអាចប្រតិបត្តិកូដ Python ដោយមិនចាំបាច់បង្កើតកំហុសដោយប្រើពាក្យគន្លឹះ "pass"។
ការធ្វើភ្លាមៗនៃថ្នាក់នាំឱ្យមានវត្ថុ (ឧទាហរណ៍) ។ មានតែការពិពណ៌នារបស់ object ប៉ុណ្ណោះដែលត្រូវបានកំណត់នៅពេលដែល class ត្រូវបានបង្កើត។ ជាលទ្ធផល គ្មានអង្គផ្ទុកទិន្នន័យ ឬ RAM ត្រូវបានបម្រុងទុកទេ។
ឧទាហរណ៍នៃវត្ថុថ្នាក់សេកគឺ៖
Obj គឺជាវត្ថុថ្នាក់សេកក្នុងឧទាហរណ៍នេះ។
ចូរនិយាយថាយើងដឹងជាក់លាក់អំពីសេក។ ឥឡូវនេះយើងនឹងបង្ហាញពីរបៀបបង្កើតថ្នាក់សេក និងវត្ថុរបស់វា។
វិធីសាស្រ្តពិសេស (__init__)
វិធីសាស្រ្តមួយហៅថា init កំណត់គុណលក្ខណៈដែលគ្រប់ Parrot object ត្រូវតែមាន ()។ នៅពេលដែលវត្ថុសេកថ្មីត្រូវបានបង្កើតឡើង មុខងារ __init__ បង្កើតស្ថានភាពដំបូងរបស់វត្ថុដោយកំណត់តម្លៃដែលយើងផ្គត់ផ្គង់ក្នុងលក្ខណៈសម្បត្តិរបស់វត្ថុ។
ដូច្នេះ instance ថ្មីនីមួយៗនៃ class ត្រូវបានចាប់ផ្តើមដោយប្រើ __init__()។ ទោះបីជា __init__() អាចទទួលយកចំនួនប៉ារ៉ាម៉ែត្រណាមួយក៏ដោយ ខ្លួនឯងតែងតែជាប៉ារ៉ាម៉ែត្រដំបូង។
សេចក្តីយោងទៅវត្ថុថ្នាក់សកម្មត្រូវបានរួមបញ្ចូលក្នុងអាគុយម៉ង់ខ្លួនឯង។ ប៉ារ៉ាម៉ែត្រដោយខ្លួនឯង ដែលភ្ជាប់ទៅអាសយដ្ឋាននៃវត្ថុបច្ចុប្បន្ននៃថ្នាក់ និងផ្តល់ឱ្យយើងនូវការចូលទៅកាន់ទិន្នន័យអថេរ (វត្ថុ) របស់វា មានន័យថា។
ឧទាហរណ៍ 1
យើងបានបង្កើតថ្នាក់មួយហៅថា Parrot នៅក្នុងកូដខាងលើ។ បន្ទាប់ លក្ខណៈសម្បត្តិត្រូវបានកំណត់។ លក្ខណៈនៃវត្ថុគឺជាលក្ខណៈសម្បត្តិរបស់វា។ មុខងារ __init__ របស់ថ្នាក់គឺជាកន្លែងដែលលក្ខណៈទាំងនេះត្រូវបានបញ្ជាក់។
នៅពេលដែលវត្ថុមួយត្រូវបានបង្កើតឡើង វិធីសាស្ត្របង្កើតដំបូង គឺជាអ្វីដែលហៅថាដំបូង។ បន្ទាប់មក ឧទាហរណ៍នៃថ្នាក់សេកត្រូវបានបង្កើត។ Blaze និង Wonda នៅក្នុងករណីនេះគឺជាឯកសារយោង (តម្លៃ) ចំពោះវត្ថុថ្មីរបស់យើង។ __class .species អនុញ្ញាតឱ្យយើងចូលប្រើ class attribute ។
រាល់ឧទាហរណ៍នៃថ្នាក់នីមួយៗមានលក្ខណៈដូចគ្នា។ លក្ខណៈនៃវត្ថុក៏អាចចូលប្រើបានដោយប្រើ blaze.name និង blaze.age។ ទោះជាយ៉ាងណារាល់វត្ថុនៃថ្នាក់មានគុណលក្ខណៈវត្ថុតែមួយគត់។
ឧទាហរណ៍ 2
វិធីសាស្រ្ត
មុខងារដែលបានកំណត់នៅក្នុងតួនៃថ្នាក់ត្រូវបានគេហៅថាវិធីសាស្រ្ត។ ពួកគេត្រូវបានជួលដើម្បីបញ្ជាក់ពីរបៀបដែលធាតុនឹងមានឥរិយាបទ។
វិធីសាស្រ្តពីរគឺ ច្រៀង() និងរាំ ត្រូវបានកំណត់នៅក្នុងកម្មវិធីដែលបានរៀបរាប់ខាងលើ ()។ ដោយសារតែពួកវាត្រូវបានហៅនៅលើវត្ថុឧទាហរណ៍ដូចជាអណ្តាតភ្លើង ទាំងនេះត្រូវបានគេហៅថាវិធីសាស្ត្រឧទាហរណ៍។
មូលដ្ឋានគ្រឹះនៃគំនិត OOPS
គំនិតស្នូលទាំងបួននៃកម្មវិធីតម្រង់ទិសវត្ថុគឺ៖
- មរតក។
- Encapsulation
- ពហុនិយម
- ទាញយក
មរតក។
មនុស្សជាញឹកញាប់ប្រាប់ទារកទើបនឹងកើតថាពួកគេមានមុខមាត់ស្រដៀងនឹងឪពុកម្តាយរបស់ពួកគេ ឬថាពួកគេបានទទួលមរតកលក្ខណៈពិសេសពីឪពុកម្តាយរបស់ពួកគេ។
វាអាចទៅរួចដែលអ្នកបានសង្កេតឃើញថាអ្នកចែករំលែកលក្ខណៈមួយចំនួនជាមួយឪពុកម្តាយរបស់អ្នក។ ស្ថានភាពពិភពលោកពិតគឺស្រដៀងគ្នានឹងមរតកដែរ។
ទោះយ៉ាងណាក៏ដោយ ក្នុងករណីនេះ លក្ខណៈ "ថ្នាក់មេ" ត្រូវបានបញ្ជូនទៅ "ថ្នាក់កូន" ។ ទិដ្ឋភាពទាំងនេះត្រូវបានគេហៅថា "លក្ខណៈសម្បត្តិ" និង "វិធីសាស្រ្ត" នៅក្នុងបរិបទនេះ។
class អាចទាញយក method និង attributes របស់វាពី class ផ្សេងទៀតដោយប្រើបច្ចេកទេសដែលគេស្គាល់ថា inheritance។ Inheritance គឺជាដំណើរការនៃថ្នាក់កូនដែលទទួលលក្ខណៈសម្បត្តិនៃថ្នាក់មេ។
ឧទាហរណ៍:
ថ្នាក់មេ Human ត្រូវបានទទួលមរតកដោយថ្នាក់កុមារ Boy ក្នុងឧទាហរណ៍ខាងលើ។ ដោយសារតែ Boy ត្រូវបានទទួលមរតកពីមនុស្ស យើងអាចចូលប្រើវិធីសាស្រ្ត និងគុណលក្ខណៈរបស់វាទាំងអស់ នៅពេលដែលយើងបង្កើតឧទាហរណ៍នៃថ្នាក់ Boy ។
នៅក្នុងថ្នាក់ Boy វិធីសាស្ត្រដែលហៅថា schoolName ក៏ត្រូវបានកំណត់ផងដែរ។ វត្ថុថ្នាក់មេមិនអាចចូលប្រើ method schoolName បានទេ។ ទោះយ៉ាងណាក៏ដោយ វិធីសាស្ត្រ schoolName អាចត្រូវបានហៅដោយការបង្កើតវត្ថុថ្នាក់កុមារ (ក្មេងប្រុស) ។
Encapsulation
ការផ្តល់អថេរទាំងអស់នៅក្នុងកម្មវិធីចូលប្រើជាសកលមិនមែនជាការផ្លាស់ប្តូរដ៏ឆ្លាតវៃទេនៅពេលធ្វើការជាមួយថ្នាក់ និងគ្រប់គ្រងទិន្នន័យរសើប។
ដោយមិនផ្តល់ឱ្យកម្មវិធីពេញលេញនូវការចូលទៅកាន់អថេរណាមួយនោះ encapsulation ផ្តល់នូវយន្តការសម្រាប់យើងដើម្បីទទួលបានអថេរចាំបាច់។
វិធីសាស្រ្តដែលត្រូវបានកំណត់យ៉ាងច្បាស់សម្រាប់គោលបំណងអាចត្រូវបានប្រើដើម្បីធ្វើបច្ចុប្បន្នភាព កែសម្រួល ឬលុបទិន្នន័យពីអថេរ។ វិធីសាស្រ្តនៃការសរសេរកម្មវិធីនេះមានគុណសម្បត្តិនៃការពង្រឹងសុវត្ថិភាព និងការគ្រប់គ្រងលើការបញ្ចូលទិន្នន័យ។
សូមមើលថាតើអថេរអាចចូលប្រើបានលឿនប៉ុណ្ណាក្នុងការបង្ហាញខាងក្រោម៖
ពហុនិយម
ចូរនិយាយថាអ្នកកំពុងប្រើទូរស័ព្ទរបស់អ្នកដើម្បីរុករក មតិព័ត៌មាន Instagram. នៅពេលដែលអ្នកទទួលបានការជម្រុញឱ្យស្តាប់តន្ត្រីមួយចំនួន អ្នកចូលប្រើ Spotify ហើយចាប់ផ្តើមចាក់បទចម្រៀងដែលអ្នកចូលចិត្ត។
បន្ទាប់ពីមួយរយៈ អ្នកបានទទួលការហៅទូរសព្ទ ដូច្នេះអ្នកផ្អាកអ្វីដែលអ្នកកំពុងធ្វើនៅផ្ទៃខាងក្រោយដើម្បីឆ្លើយវា។ មិត្តភ័ក្តិរបស់អ្នកបានទូរស័ព្ទមក និងស្នើសុំឱ្យអ្នកផ្ញើសារទៅកាន់ពួកគេនូវលេខទូរស័ព្ទរបស់បុគ្គលជាក់លាក់មួយ។
ដូច្នេះ អ្នកបានផ្ញើលេខទូរសព្ទទៅគាត់តាមរយៈសារ SMS ហើយបន្តកិច្ចការរបស់អ្នក។ តើអ្នកបានរើសអ្វីទេ? ដោយប្រើឧបករណ៍តែមួយ - ទូរស័ព្ទដៃរបស់អ្នក - អ្នកអាចរុករកតាមមតិព័ត៌មាន ស្តាប់តន្ត្រី យក និងធ្វើការហៅទូរសព្ទ និងផ្ញើសារ។
ដូច្នេះ polymorphism គឺអាចប្រៀបធៀបទៅនឹងនោះ។ Poly មានន័យថាច្រើន ហើយ morph បង្ហាញពីទម្រង់ផ្សេងៗគ្នា។ ដូច្នេះ polymorphism ទាំងមូលសំដៅទៅលើអ្វីមួយដែលមានទម្រង់ផ្សេងៗគ្នា។
ឬ "អ្វីមួយ" ដែលអាស្រ័យលើកាលៈទេសៈអាចបង្ហាញអាកប្បកិរិយាផ្សេងៗគ្នា។ នៅក្នុង OOPS, polymorphism ពិពណ៌នាអំពីមុខងារដែលមានឈ្មោះដូចគ្នា ប៉ុន្តែអាកប្បកិរិយាខុសគ្នា។ ម៉្យាងទៀត ហត្ថលេខាមុខងារផ្សេងគ្នាដែលមានឈ្មោះមុខងារដូចគ្នា (ប៉ារ៉ាម៉ែត្របានបញ្ជូនទៅមុខងារ)។
ឧទាហរណ៍:
នៅទីនេះ យើងអាចប្រើសត្វអថេរដើម្បីធ្វើឡើងវិញលើវត្ថុរបស់ Zebra និង Rabbit ដោយប្រើវិធីសាស្ត្រឧទាហរណ៍រៀងៗខ្លួន។ ជាលទ្ធផល ឥរិយាបទ (ពណ៌() & បរិភោគ()) ទាំងសេះបង្កង់ និងទន្សាយត្រូវបានតំណាងនៅទីនេះដោយអថេរតែមួយហៅថាសត្វ។ ដូច្នេះ វាត្រូវបានប្រកាន់ខ្ជាប់ទៅនឹងច្បាប់ polymorphism ។
ទាញយក
អ្នកទំនងជាប្រើកុំព្យូទ័រយួរដៃ ទូរសព្ទ ឬថេប្លេត ដើម្បីអានខ្លឹមសារនេះ។ ខណៈពេលកំពុងអានវា អ្នកក៏សន្មត់ថាកំពុងកត់ចំណាំ គូសបញ្ជាក់វគ្គសំខាន់ៗ ហើយប្រហែលជារក្សាទុកព័ត៌មានមួយចំនួននៅក្នុងឯកសារផ្ទាល់ខ្លួនរបស់អ្នក។
អ្វីទាំងអស់ដែលអ្នកអាចមើលឃើញនៅពេលអ្នកអាននេះគឺជា "អេក្រង់" ជាមួយនឹងទិន្នន័យដែលត្រូវបានបង្ហាញដល់អ្នក។ អ្នកគ្រាន់តែឃើញគ្រាប់ចុចរបស់ក្តារចុចនៅពេលអ្នកវាយ ដូច្នេះអ្នកមិនចាំបាច់ព្រួយបារម្ភអំពីព័ត៌មានលំអិតខាងក្នុងដូចជារបៀបរុញគ្រាប់ចុចអាចធ្វើឱ្យពាក្យនោះលេចឡើងនៅលើអេក្រង់នោះទេ។
ម៉្យាងទៀត ការចុចប៊ូតុងនៅលើអេក្រង់របស់អ្នកអាចដំណើរការផ្ទាំងថ្មី។
ដូច្នេះ អ្វីក៏ដោយដែលយើងអាចសង្កេតឃើញក្នុងស្ថានភាពនេះគឺអរូបី។ យើងអាចមើលឃើញតែលទ្ធផលដែលវាត្រូវបានបង្កើត ហើយមិនមែនជាភាពស្មុគ្រស្មាញខាងក្នុងទេ (ដែលពិតជាសំខាន់សម្រាប់យើង)។
ស្រដៀងគ្នានេះដែរ អរូបីបង្ហាញតែមុខងារដែលអ្វីៗមាន ខណៈពេលដែលលាក់បាំងការអនុវត្ត ឬព័ត៌មានលម្អិតផ្ទៃក្នុង។
គោលបំណងសំខាន់របស់ Abstraction គឺដើម្បីលាក់បាំងព័ត៌មានផ្ទៃខាងក្រោយ និងការអនុវត្តទិន្នន័យក្រៅប្រព័ន្ធ ដើម្បីឲ្យមនុស្សមើលឃើញតែអ្វីដែលពួកគេត្រូវមើលប៉ុណ្ណោះ។ វាជួយក្នុងការគ្រប់គ្រងភាពស្មុគស្មាញនៃកូដ។
ឧទាហរណ៍:
ថ្នាក់អរូបីដែលទាក់ទងនឹងយានយន្តមានវត្តមាននៅទីនេះ។ ដោយសារតែវាទទួលមរតកពីថ្នាក់អរូបី ABC វាគឺជាអរូបី។ ដោយសារវិធីសាស្រ្តអរូបីមិនត្រូវបានកំណត់ ឬនៅទទេ យានជំនិះមានវិធីសាស្ត្រអរូបីហៅថា No of wheels ដែលខ្វះនិយមន័យ។
ពួកគេគិតទុកជាមុនអំពីថ្នាក់ដែលទទួលមរតកនៃថ្នាក់អរូបី ដើម្បីផ្តល់នូវការអនុវត្តវិធីសាស្ត្រ។
អត្ថប្រយោជន៍នៃគំនិត OOPS
- តាមរយៈការបិទភ្ជាប់ សុវត្ថិភាពខ្ពស់ និងឯកជនភាពទិន្នន័យត្រូវបានសម្រេច។
- ភាពបត់បែនក្នុងការមានកំណែ polymorphic ជាច្រើននៃថ្នាក់ដូចគ្នា។
- កម្រិតខ្ពស់នៃភាពស្មុគស្មាញនៃកូដត្រូវបានកាត់បន្ថយដោយការអរូបី។
- ជំនួសឱ្យការរុះរើតាមបន្ទាត់រាប់រយនៃកូដដើម្បីកំណត់ទីតាំងបញ្ហាតែមួយ ម៉ូឌុលនៃការសរសេរកម្មវិធីធ្វើឱ្យការបំបាត់កំហុសមានលក្ខណៈសាមញ្ញ។
- ការប្រើប្រាស់កូដឡើងវិញគឺបណ្តាលមកពីការទទួលមរតករបស់ថ្នាក់កូននៃលក្ខណសម្បត្តិថ្នាក់មេ។
- ការដោះស្រាយបញ្ហាប្រកបដោយប្រសិទ្ធភាពគឺអាចធ្វើទៅបានព្រោះយើងបង្កើតថ្នាក់ដែលធ្វើសកម្មភាពចាំបាច់សម្រាប់បញ្ហាតូចនីមួយៗ។ បញ្ហាខាងក្រោមអាចដោះស្រាយបានលឿនជាងមុន ដោយសារយើងអាចប្រើថ្នាក់ទាំងនោះឡើងវិញបាន។
សន្និដ្ឋាន
សរុបមក យើងបានរៀនអំពីគំនិត OOPS នៅក្នុង Python ដែលជាគំរូនៃការសរសេរកម្មវិធីដ៏ពេញនិយមបំផុតនៅពេលនេះ។
បន្ទាប់ពីអានវាហើយ អ្នកត្រូវតែដឹងថា គំរូ OOPS ដោះស្រាយទាំងស្រុងជាមួយនឹងគំនិតនៃថ្នាក់ និងវត្ថុ។ និងគោលគំនិតរបស់ OOPS ដូចជា encapsulation, polymorphism, inheritance, និង abstraction។
សូមផ្ដល់យោបល់