සංවර්ධකයින් අතර, වස්තු-නැඹුරු වැඩසටහන්කරණය සැලකිය යුතු අනුගාමික පිරිසක් ආකර්ෂණය කර ඇත. ජනප්රිය පරිගණක භාෂාවක් වන Python ද වස්තු-නැඹුරු ආදර්ශයට අනුගත වේ.
එය OOPs මූලධර්ම සඳහා පදනම වන පයිතන් හි වස්තු සහ පන්ති නිර්වචනය කිරීම සමඟ කටයුතු කරයි. “Python හි වස්තු-නැඹුරු ක්රමලේඛනය” පිළිබඳ මෙම නිබන්ධනයේදී, ඔබ පයිතන් පන්ති ප්රකාශ කරන්නේ කෙසේද, ඒවායින් වස්තූන් නිර්මාණය කරන්නේ කෙසේද සහ OOPs ශිල්පීය ක්රම හතර භාවිතා කරන්නේ කෙසේදැයි ඉගෙන ගනු ඇත.
ඉතින්, පළමු දෙය පළමුව.
Object-Oriented Programming යනු කුමක්ද?
Object-oriented programming (OOP) හි ප්රධාන අවධානය යොමු වන්නේ "වස්තු" නිර්මාණය කිරීමයි. අන්තර් සම්බන්ධිත විචල්ය සහ ශ්රිත එකතුවක් වස්තුවක් සෑදේ.
මෙම විචල්යයන් වස්තුවේ ගුණාංග ලෙස නිතර හඳුන්වනු ලබන අතර, එහි හැසිරීම් නිතර එහි කාර්යයන් ලෙස හැඳින්වේ. මෙම අයිතමයන් යෙදුමට වඩාත් ඵලදායී සහ තේරුම්ගත හැකි ව්යුහයක් සපයයි. මෝටර් රථයක් යනු අයිතමයකට උදාහරණයකි.
මෝටර් රථය අයිතමයක් නම්, එහි ගුණාංගවලට එහි වර්ණය, ආකෘතිය, මිල, වෙළඳ නාමය වැනි දේ ඇතුළත් වේ. ඊට අමතරව, එය වේගවත් කිරීම, වේගය අඩු කිරීම සහ ගියර් වෙනස් කිරීම සිදු කරයි.
තවත් නිදර්ශනයක්: අපි බල්ලෙක් අයිතමයක් ලෙස සිතන්නේ නම්, එහි සමහර ලක්ෂණ වර්ණය, අභිජනනය, නම, බර යනාදිය විය හැකිය. ඔහු එහා මෙහා ගමන් කරයි, බුරමින්, සෙල්ලම් කරයි.
එය ක්රමලේඛනයට වස්තූන්, සැඟවීම, උරුමය වැනි සැබෑ ලෝක සංකල්ප ඇතුළත් කර ඇති නිසා, වස්තු-නැඹුරු ක්රමලේඛනය හොඳින් දනී. එය සැබෑ ලෝක තත්වයන්ට බෙහෙවින් සමාන නිසා, දෘශ්යකරණය සරල කර ඇත.
වස්තු-නැඹුරු ක්රමලේඛන සංකල්ප
පයිතන් හි පන්ති සහ වස්තු
අනෙකුත් සියලුම වස්තු-නැඹුරු භාෂා මෙන්, වස්තු ජනනය කිරීම සඳහා පන්ති සැලසුම් කිරීමට Python ඔබට හැකියාව ලබා දෙයි. තන්තු, ලැයිස්තු, ශබ්දකෝෂ, සහ අනෙකුත් වස්තු ඇතුළුව Python හි වඩාත් ජනප්රිය දත්ත වර්ග, තනා ඇති පන්ති වේ.
පන්තියක් යනු යම් ආකාරයක වස්තුවක් නිර්වචනය කරන සම්බන්ධිත ක්රම සහ අවස්ථා විචල්ය සමූහයකි. පන්තියක් වස්තුවක් සඳහා ආකෘතිය හෝ අච්චුව ලෙස දැකිය හැකිය. පන්තියක් සෑදෙන විචල්යයන් ගුණාංග ලෙස හැඳින්වේ.
වස්තුවක් යනු නිශ්චිත ගුණාංග සමූහයක් ඇති පන්තියක සාමාජිකයෙකි. මේ නිසා, එකම පන්තිය භාවිතා කර ඕනෑම වස්තු ගණනක් නිර්මාණය කළ හැකිය.
පයිතන් පන්ති නිර්වචනය කරනු ලබන්නේ පන්තිය යන වචනය භාවිතයෙන් වන අතර, පසුව පන්තියේ නම සහ කොලනයක් අනුගමනය කරයි. ගිරවුන් පන්තියක නිදර්ශනයක් විය හැක්කේ:
මෙන්න, අපි class keyword එක භාවිතා කර හිස් පන්තියේ Parrot ප්රකාශ කරමු. අපි පන්ති වලින් අවස්ථා නිර්මාණය කරමු. උදාහරණයක් යනු කිසියම් පන්තියකින් සාදන ලද විශේෂිත වස්තුවකි. 'pass' නිතර භාවිතා වන කේතය සඳහා ස්ථාවරයක් ලෙස භාවිතා කරනු ලබන අතර එහි ක්රියාත්මක කිරීම අප විසින් දැනට අත්හැරිය හැක. “pass” යන මූල පදය භාවිතා කිරීමෙන් අපට පයිතන් කේතය දෝෂයක් ඇති නොකර ක්රියාත්මක කළ හැකිය.
පන්තියක ක්ෂණයකින් වස්තුවක් (උදාහරණයක්) ඇතිවේ. පන්තියක් සාදන විට වස්තුවේ විස්තරය පමණක් අර්ථ දක්වයි. ප්රතිඵලයක් වශයෙන්, ගබඩාවක් හෝ RAM එකක් වෙන් නොකෙරේ.
ගිරවුන් පන්තියේ වස්තුවක උදාහරණයක් වන්නේ:
Obj යනු මෙම අවස්ථාවේ දී ගිරවුන් පන්තියේ වස්තුවකි.
අපි කියමු අපි ගිරවුන් ගැන විශේෂතා දන්නවා කියලා. අපි දැන් ගිරවුන් පන්තිය සහ එහි වස්තූන් නිර්මාණය කරන්නේ කෙසේද යන්න නිරූපණය කරන්නෙමු.
විශේෂ ක්රමය (__init__)
init නම් ක්රමයක් මගින් සෑම Parrot වස්තුවකටම තිබිය යුතු ගුණාංග නිර්වචනය කරයි (). නව ගිරවා වස්තුවක් සෑදූ විට, __init__ ශ්රිතය වස්තුවේ ගුණාංග තුළ අප සපයන අගයන් ලබා දීමෙන් වස්තුවේ ආරම්භක තත්ත්වය නිර්මාණය කරයි.
එබැවින්, පන්තියේ සෑම නව අවස්ථාවක්ම __init__() භාවිතයෙන් ආරම්භ කෙරේ. __init__() හට ඕනෑම පරාමිති ගණනක් පිළිගත හැකි වුවද, ස්වයං සෑම විටම පළමු පරාමිතිය වේ.
සක්රීය පන්ති අවස්ථාවට සඳහනක් ස්වයං තර්කයට ඇතුළත් වේ. පන්තියක වත්මන් වස්තුවේ ලිපිනයට සම්බන්ධ කර එහි (වස්තුවේ) විචල්ය දත්ත වෙත අපට ප්රවේශය ලබා දෙන ස්වයං පරාමිතිය එය ඇඟවුම් කරයි.
උදාහරණයක් 1
අපි ඉහත code එකේ Parrot කියලා class එකක් ස්ථාපිත කළා. ඊළඟට, දේපල අර්ථ දක්වා ඇත. වස්තුවක ලක්ෂණ එහි ගුණාංග වේ. පන්තියේ __init__ ශ්රිතය මෙම ලක්ෂණ නියම කර ඇත.
වස්තුවක් සෑදූ විට, ආරම්භක ක්රමය මුලින් හඳුන්වනු ලැබේ. ඉන්පසුව, ගිරවුන් පන්තියේ අවස්ථා නිර්මාණය වේ. මෙම අවස්ථාවේදී Blaze සහ Wonda අපගේ නව වස්තූන් වෙත යොමු (අගය) වේ. __class .species අපට class attribute වෙත ප්රවේශ වීමට ඉඩ සලසයි.
පන්තියක සෑම අවස්ථාවක්ම එකම ලක්ෂණ ඇත. නිදසුන් ලක්ෂණ blaz.name සහ blaz.age භාවිතයෙන් ද ප්රවේශ විය හැක. කෙසේ වෙතත්, පන්තියක සියලුම අවස්ථාවන්ට අනන්ය නිදර්ශන ගුණාංග ඇත.
උදාහරණයක් 2
ක්රම
පන්තියක ශරීරය තුළ අර්ථ දක්වා ඇති කාර්යයන් ක්රම ලෙස හැඳින්වේ. අයිතමයක් හැසිරෙන්නේ කෙසේද යන්න සඳහන් කිරීමට ඔවුන් යොදවා ඇත.
sing() සහ dance යන ක්රම දෙකක් ඉහත සඳහන් යෙදුමේ () අර්ථ දක්වා ඇත. ගිනිදැල් වැනි නිදසුන් වස්තුවක් මත ඒවා ආයාචනා කරනු ලබන බැවින්, මේවා නිදසුන් ක්රම ලෙස හැඳින්වේ.
OOPS සංකල්පයේ මූලික කරුණු
වස්තු-නැඹුරු වැඩසටහන්කරණයේ මූලික අදහස් හතර වන්නේ:
- උරුමය
- කප්පාදුව
- බහුමාපකය
- ආකෘතිය
උරුමය
අලුත උපන් බිළිඳුන්ට තම දෙමාපියන්ගේ මුහුණට සමාන මුහුණු ලක්ෂණ ඇති බව හෝ ඔවුන්ට ඔවුන්ගේ දෙමව්පියන්ගෙන් විශේෂිත ගති ලක්ෂණ ඇති බව මිනිසුන් නිතරම පවසති.
ඔබ ඔබේ දෙමාපියන් සමඟ ලක්ෂණ කිහිපයක් බෙදා ගන්නා බව ඔබ නිරීක්ෂණය කර ඇති බව සිතිය හැකිය. සැබෑ ලෝක තත්ත්වය ද උරුමයට බොහෝ දුරට සමාන ය.
කෙසේ වෙතත්, මෙම අවස්ථාවේ දී, "මාපිය පන්ති" ලක්ෂණ "ළමා පන්ති" වෙත සම්මත වේ. මෙම සන්දර්භය තුළ මෙම අංගයන් "ගුණාංග" සහ "ක්රම" ලෙස හැඳින්වේ.
පන්තියකට එහි ක්රම සහ ගුණාංග වෙනත් පන්තියකින් ලබා ගත හැක්කේ උරුමය ලෙස හඳුන්වන තාක්ෂණය භාවිතා කරමිනි. උරුමය යනු ළමා පන්තියකට මාපිය පන්තියක දේපළ ලැබීමේ ක්රියාවලියයි.
උදාහරණයක්:
ඉහත උදාහරණයේ ළමා පන්තියේ පිරිමි ළමයාට මාපිය පන්තිය මානව උරුමය වේ. පිරිමි ළමයා මිනිසාගෙන් උරුම වන නිසා, අපි පිරිමි පන්තියේ අවස්ථාවක් නිර්මාණය කරන විට එහි සියලු ක්රම සහ ගුණාංග වෙත ප්රවේශ විය හැක.
Boy class එකේ schoolName කියල ක්රමයක් ද අර්ථ දක්වා ඇත. මාපිය පන්තියේ වස්තුවට schoolName ක්රමයට ප්රවේශ විය නොහැක. කෙසේ වෙතත්, schoolName ක්රමය ළමා පන්ති වස්තුවක් (Boy) නිර්මාණය කිරීමෙන් හැඳින්විය හැක.
කප්පාදුව
පන්ති සමඟ වැඩ කිරීමේදී සහ සංවේදී දත්ත හැසිරවීමේදී වැඩසටහනේ සෑම විචල්යයක්ම ගෝලීය ප්රවේශය ලබා දීම බුද්ධිමත් පියවරක් නොවේ.
එම කිසිදු විචල්යයකට වැඩසටහනට සම්පූර්ණ ප්රවේශයක් ලබා නොදී, අවශ්ය විචල්යයන් ලබා ගැනීමට අපට යාන්ත්රණයක් encapsulation සපයයි.
විචල්ය වලින් දත්ත යාවත්කාලීන කිරීමට, සංස්කරණය කිරීමට හෝ මකා දැමීමට අරමුණ සඳහා නිශ්චිතව නිර්වචනය කර ඇති ක්රම භාවිතා කළ හැක. මෙම ක්රමලේඛන ක්රමයට වැඩි දියුණු කළ ආරක්ෂාව සහ දත්ත ආදානය පාලනය කිරීමේ වාසි ඇත.
පහත ආදර්ශයෙන් විචල්යයන් කෙතරම් ඉක්මනින් ප්රවේශ විය හැකිදැයි බලන්න:
බහුමාපකය
අපි කියමු ඔබ බ්රවුස් කිරීමට ඔබගේ දුරකථනය භාවිතා කරන බව Instagram පෝෂණය. ඔබට සංගීතයට සවන් දීමට ආශාවක් ඇති වූ විට, ඔබ Spotify වෙත ප්රවේශ වී ඔබේ ප්රියතම ගීතය වාදනය කිරීමට පටන් ගත්තේය.
ටික වේලාවකට පසු, ඔබට ඇමතුමක් ලැබුණි, එබැවින් ඔබ එයට පිළිතුරු දීමට පසුබිමේ කරමින් සිටි ඕනෑම දෙයක් විරාම කළේය. ඔබේ මිතුරා අමතා යම් පුද්ගලයෙකුගේ දුරකථන අංකයට කෙටි පණිවිඩයක් එවන ලෙස ඉල්ලා සිටියේය.
එබැවින් ඔබ ඔහුට කෙටි පණිවුඩයක් හරහා දුරකථන අංකය යවා ඔබේ කාර්යයන් කරගෙන ගියේය. ඔබ යමක් තෝරාගෙන තිබේද? එක් උපාංගයක් සමඟ-ඔබගේ ජංගම දුරකථනය-ඔබට සංග්රහ හරහා සැරිසැරීමට, සංගීතයට සවන් දීමට, දුරකථන ඇමතුම් ගැනීමට සහ ලබා ගැනීමට සහ පණිවිඩ යැවීමට හැකිය.
එබැවින් බහුරූපතාව ඊට සමාන වේ. Poly යන්නෙන් බොහෝ අදහස් වන අතර, මෝර්ෆ් විවිධ ආකාර දක්වයි. එබැවින්, බහුරූපතාව යනු සමස්තයක් ලෙස විවිධ ස්වරූප සහිත දෙයකි.
නැතහොත් "යමක්", තත්වය අනුව, විවිධාකාර හැසිරීම් ප්රදර්ශනය කළ හැකිය. OOPS හි, බහුරූපතාව එකම නම් සහිත නමුත් වෙනස් හැසිරීම් සහිත කාර්යයන් විස්තර කරයි. විකල්පයක් ලෙස, එකම ශ්රිත නාමය සහිත වෙනස් ශ්රිත අත්සනක් (ශ්රිතයට ලබා දුන් පරාමිති).
උදාහරණයක්:
මෙහිදී, අපට සීබ්රා සහ හාවාගේ වස්තූන් හරහා පුනරාවර්තනය කිරීමට විචල්ය සත්වය භාවිතා කළ හැකිය, ඒවායේ අදාළ අවස්ථා ක්රම භාවිතා කරයි. මෙහි ප්රතිඵලයක් ලෙස, සීබ්රා සහ හාවා යන දෙපිරිසගේම හැසිරීම (වර්ණ() සහ කෑම()) සත්ව නම් වූ තනි විචල්යයකින් මෙහි නිරූපණය කෙරේ. එබැවින් එය බහුරූපතා රීතිවලට අනුකූල වේ.
ආකෘතිය
මෙම අන්තර්ගතය කියවීමට ඔබ බොහෝ විට ලැප්ටොප් පරිගණකයක්, දුරකථනයක් හෝ ටැබ්ලටයක් භාවිතා කරයි. එය කියවන අතරතුර, ඔබ අනුමාන වශයෙන් සටහන් ගනිමින්, ප්රධාන ඡේද යටින් ඉරි අඳිමින්, සමහර විට ඔබේ පුද්ගලික ලිපිගොනුවල යම් තොරතුරු ගබඩා කරමින් සිටිනවා විය හැක.
ඔබ මෙය කියවන විට ඔබට පෙනෙන්නේ ඔබට දර්ශනය වන දත්ත සහිත "තිරයක්" පමණි. ඔබ යතුරුපුවරුවේ යතුරු ටයිප් කරන විට ඔබට පෙනෙනු ඇත, එබැවින් යතුරක් තල්ලු කිරීමෙන් එම වචනය තිරය මත දිස්වන ආකාරය වැනි අභ්යන්තර සියුම්කම් ගැන ඔබට කරදර විය යුතු නැත.
විකල්පයක් ලෙස, ඔබගේ තිරය මත බොත්තමක් එබීමෙන් නව ටැබයක් දියත් කළ හැක්කේ කෙසේද.
එමනිසා, මෙම තත්වය තුළ අපට නිරීක්ෂණය කළ හැකි ඕනෑම දෙයක් වියුක්ත ය. අපට දැකිය හැක්කේ එය නිර්මාණය කරන ප්රතිඵලය මිස අභ්යන්තරයේ ඇති සංකීර්ණතා (ඇත්ත වශයෙන්ම අපට වැදගත්) නොවේ.
මේ හා සමානව, වියුක්තකරණය මගින් හෙළිදරව් කරන්නේ කිසියම් ක්රියාත්මක කිරීමක් හෝ අභ්යන්තර තොරතුරු සඟවන අතරතුර සෑම දෙයක්ම සතු ක්රියාකාරකම් පමණි.
වියුක්තකරණයේ ප්රධාන අරමුණ වන්නේ පසුබිම් තොරතුරු වසන් කිරීම සහ ඕනෑම බාහිර දත්ත ක්රියාත්මක කිරීමක් වන අතර එමඟින් මිනිසුන්ට දැකීමට අවශ්ය දේ පමණක් පෙනේ. එය කේතයේ සංකීර්ණත්වය කළමනාකරණය කිරීමට උපකාරී වේ.
උදාහරණයක්:
වාහනය සම්බන්ධ වියුක්ත පන්තියක් මෙහි ඇත. එය වියුක්ත ABC පන්තියෙන් උරුම වන නිසා එය වියුක්ත වේ. වියුක්ත ක්රම නිර්වචනය කර නැති නිසා හෝ හිස්ව පවතින නිසා, class Vehicle සතුව නිර්වචනයක් නොමැති රෝදවල අංකය ලෙස හැඳින්වෙන වියුක්ත ක්රමයක් ඇත.
ක්රමය ක්රියාත්මක කිරීම සඳහා වියුක්ත පන්ති උරුම වන පන්ති ඔවුන් අපේක්ෂා කරයි.
OOPS සංකල්පවල ප්රතිලාභ
- සංවෘත කිරීම මගින් ඉහළ ආරක්ෂාවක් සහ දත්ත රහස්යතාවක් සාක්ෂාත් කරගනු ලැබේ.
- එකම පන්තියේ බහුරූපී අනුවාද රාශියක් තිබීමේ නම්යශීලී බව.
- කේත සංකීර්ණතාවයේ ඉහළ මට්ටම වියුක්ත කිරීම මගින් අඩු කරන ලදී.
- එක් ගැටලුවක් සොයා ගැනීම සඳහා කේත පේළි සිය ගණනක් හරහා පෙරළීම වෙනුවට, ක්රමලේඛනයේ මොඩියුලරිටි නිසා නිදොස්කරණය සරල කරයි.
- කේත නැවත භාවිතා කිරීම ළමා පන්තියකට මාපිය පන්තියේ දේපල උරුම වීම නිසා සිදු වේ.
- අපි එක් එක් කුඩා ගැටලුව සඳහා අවශ්ය ක්රියා කරන පන්ති නිර්මාණය කරන නිසා ඵලදායී ගැටළු විසඳීමට හැකි වේ. අපට එම පන්ති නැවත භාවිතා කළ හැකි බැවින් පහත ගැටලුව වඩාත් ඉක්මනින් විසඳා ගත හැක.
නිගමනය
අවසාන වශයෙන්, අපි දැනට උණුසුම්ම ක්රමලේඛන ආදර්ශය වන Python හි OOPS අදහස් ගැන ඉගෙන ගත්තෙමු.
මෙය කියවීමෙන් පසු, OOPS සුසමාදර්ශය සම්පූර්ණයෙන්ම පන්ති සහ වස්තු පිළිබඳ අදහස සමඟ කටයුතු කරන බව ඔබට වැටහෙන්නට ඇත. සහ OOPS සංකල්ප වන කැප්සියුලේෂන්, බහුරූපතාව, උරුමය සහ වියුක්ත කිරීම.
ඔබමයි