පළමු අධ්යයන වාරයේ දී ජාවා සහ යූඑම්එල් හරහා සංයුක්තකරණය, දත්ත සැඟවීම, මොඩියුලරිටි, උරුමය වැනි OOP සංකල්ප අපට හඳුන්වා දෙන ලදී. (ජාවා මගේ පළමු ක්රමලේඛන භාෂාවයි)
ඒ කිසිවක් OOP සංකල්ප නොවේ. ඒවා සියල්ලම OO ට පිටතින් පවතින අතර OO වලින් ස්වාධීන වන අතර බොහෝ ඒවා OO ට පෙර සොයා ගන්නා ලදී.
ඒ නිසා, ඔබ හිතන්නේ නම් ඒ OO ඇත්තේ ඒ නිසයි, එසේ නම් ඔබේ නිගමනය හරි: ඔබ, කාර්ය පටිපාටික භාෂා එම සියල්ල කළ හැකියි ඔවුන් OO සමග ගෑවිලාවත් නැත නිසා .
නිදසුනක් ලෙස, මොඩියුලරිටි පිළිබඳ මූලික පත්රිකා වලින් එකක් වන්නේ පද්ධති මොඩියුලවලට දිරාපත් කිරීමේදී භාවිතා කළ යුතු නිර්ණායකයන් ය . OO ගැන එහි කිසිදු සඳහනක් නොමැත. (එය ලියා ඇත්තේ 1972 දී ය. ඒ වන විටත් දශකයකට වඩා පැරණි වුවත් OO තවමත් අපැහැදිලි ස්ථානයකි.)
අතර දත්ත වියුක්තීකරණය OO වැදගත් වේ, එය වැඩිපුර කෑම ප්රතිඵලයක් එය නිර්වචනය ලක්ෂණය වඩා OO (පණිවිඩ) ප්රාථමික විශේෂාංගය. එසේම, විවිධ වර්ගයේ දත්ත සාරාංශ ඇති බව මතක තබා ගැනීම ඉතා වැදගත් වේ . අද භාවිතයේ පවතින වඩාත් සුලභ දත්ත සාරාංශ දෙක (අපි අනෙක් සංයෝජන දෙකට වඩා තවමත් භාවිතා කරන “සාරාංශයක් නැත” යන්න නොසලකා හැරියහොත්) වියුක්ත දත්ත වර්ග සහ වස්තු වේ. එබැවින්, "තොරතුරු සැඟවීම", "එන්කැප්සුලේෂන්" සහ "දත්ත සාරාංශය" යනුවෙන් පැවසීමෙන් ඔබ OO ගැන කිසිවක් පවසා නැත, මන්ද OO යනු දත්ත සාරාංශයේ එක් ආකාරයක් පමණක් වන අතර මේ දෙක ඇත්ත වශයෙන්ම මූලික වශයෙන් වෙනස් ය:
- වියුක්ත දත්ත වර්ග සමඟ, වියුක්ත කිරීමේ යාන්ත්රණය වර්ගය ක්රමයයි ; එය ක්රියාත්මක කිරීම සඟවන ආකාරයේ පද්ධතියයි. (වර්ගය පද්ධතිය ස්ථිතික විය යුතු නොවේ.) වස්තු සමඟ, ක්රියාත්මක කිරීම ක්රියා පටිපාටික අතුරුමුහුණතක් පිටුපස සැඟවී ඇති අතර එය වර්ග අවශ්ය නොවේ. (නිදසුනක් ලෙස, එය ECMAScript හි සිදු කර ඇති පරිදි වසා දැමීම් සමඟ ක්රියාත්මක කළ හැකිය.)
- වියුක්ත දත්ත වර්ග සමඟ, විවිධ ADT වල අවස්ථා එකිනෙකාගෙන් සංයුක්ත කර ඇත, නමුත් එකම ADT හි අවස්ථා එකිනෙකාගේ නිරූපණය සහ පුද්ගලික ක්රියාත්මක කිරීම පරීක්ෂා කර ප්රවේශ විය හැකිය. වස්තූන් සෑම විටම සෑම දෙයකින්ම සංයුක්ත වේ . තමන්ගේ නිරූපණය පරීක්ෂා කර බලා එය ක්රියාත්මක කිරීමට ප්රවේශ විය හැක්කේ වස්තුවට පමණි . වෙනත් කිසිදු වස්තුවක් , එකම වර්ගයේ වෙනත් වස්තූන්, එකම පන්තියේ වෙනත් අවස්ථා, එකම මූලාකෘතියක් ඇති වෙනත් වස්තූන්, වස්තුවේ ක්ලෝන හෝ එය කළ හැකි කිසිවක් නැත. කිසිවක් නැත .
මෙයින් අදහස් කරන්නේ, ජාවාහි, පන්ති වස්තු-නැඹුරු නොවන බවයි. එකම පන්තියේ අවස්ථා දෙකකට එකිනෙකාගේ නිරූපණයට සහ පුද්ගලික ක්රියාත්මක කිරීමට ප්රවේශ විය හැකිය . එමනිසා, පංතිවල අවස්ථා වස්තු නොවේ, ඒවා ඇත්ත වශයෙන්ම ADT අවස්ථා වේ. ජාවා interface
හි, කෙසේ වෙතත්, නැහැ වස්තුව-අභිමුඛ දත්ත වියුක්තීකරණය ලබා දෙයි. එබැවින්, වෙනත් වචන වලින් කිවහොත්: ජාවාහි ඇති වස්තූන් වන්නේ අතුරුමුහුණත් සඳහා පමණි.
මූලික වශයෙන්, වර්ග සඳහා, ඔබට භාවිතා කළ හැක්කේ අතුරු මුහුණත් පමණි. මෙයින් අදහස් කරන්නේ පරාමිති ක්රම සහ ඉදිකිරීම්කරුවන්, ආපසු පැමිණීමේ ක්රම, නිදර්ශන ක්ෂේත්ර, ස්ථිතික ක්ෂේත්ර සහ දේශීය ක්ෂේත්ර, instanceof
ක්රියාකරුට හෝ වාත්තු ක්රියාකරුට තර්කය සහ සාමාන්ය වර්ගයේ ඉදිකිරීම්කරුවෙකු සඳහා වන තර්ක සෑම විටම අතුරුමුහුණත් විය යුතුය. පංතියක් භාවිතා කළ හැක්කේ new
ක්රියාකරුට පසුව පමණි .
නිදසුනක් ලෙස, මොඩියුලරිටි සඳහා අපට වෙනම ලිපිගොනු වල කේතය අඩංගු මනාව නිර්වචනය කරන ලද කාර්යයන් ඉටු කරන බොහෝ කුඩා වැඩසටහන් වලට වැඩසටහන බෙදිය හැකිය. මෙම වැඩසටහන් ඔවුන්ගේ මනාව නිර්වචනය කළ ආදානය සහ ප්රතිදානය හරහා එකිනෙකා සමඟ අන්තර්ක්රියා කරයි. සංකේතකරණය සාක්ෂාත් කර ගැනීම සඳහා ගොනු ආරක්ෂා කළ හැකිය (සංකේතනය කර තිබේද?). කේත නැවත භාවිතා කිරීම සඳහා අපට එම ගොනු නව වැඩසටහන් වලදී අවශ්ය විටෙක ඇමතිය හැකිය. OOP යනු කුමක්ද යන්න මේ සියල්ලම ග්රහණය කර නොගනීද? නැතහොත් මට පැහැදිලිව පෙනෙන දෙයක් නැති වී තිබේද?
ඔබ විස්තර කරන්නේ OO ය.
OO ගැන සිතීමට එය හොඳ ක්රමයකි. ඇත්ත වශයෙන්ම, ඕඕ හි මුල් නව නිපැයුම් කරුවන්ගේ මතකයේ තිබුනේ එයයි. (ඇලන් කේ තවත් එක් පියවරක් ඉදිරියට ගියේය: ජාලය හරහා එකිනෙකාට පණිවිඩ යවන කුඩා පරිගණක විශාල ප්රමාණයක් ඔහු දුටුවේය.) ඔබ “වැඩසටහන” ලෙස හඳුන්වන දේ සාමාන්යයෙන් “වස්තුවක්” ලෙස හඳුන්වන අතර “ඇමතුම” වෙනුවට අපි සාමාන්යයෙන් කියන්නේ “පණිවිඩයක් යවන්න ".
වස්තු දිශානතිය යනු පණිවුඩකරණය (aka ගතික යැවීම ) ය. "Object Oriented" යන පදය ස්මාල්ටෝක් හි ප්රධාන නිර්මාණකරු ආචාර්ය ඇලන් කේ විසින් නිර්මාණය කරන ලද අතර ඔහු එය අර්ථ දක්වන්නේ මෙසේ ය :
මට ඕඕපී යන්නෙන් අදහස් කරන්නේ පණිවුඩ යැවීම, දේශීයව රඳවා තබා ගැනීම සහ රාජ්ය ක්රියාදාමය ආරක්ෂා කිරීම සහ සැඟවීම සහ සියල්ල ප්රමාද වී බැඳීම පමණි.
අපි එය බිඳ දමමු:
- පණිවිඩ යැවීම ("ස්මාල්ටෝක්" ගැන ඔබ නොදන්නේ නම් "අතථ්ය ක්රම යැවීම")
- රාජ්ය ක්රියාවලිය විය යුතුය
- දේශීයව රඳවා තබා ඇත
- ආරක්ෂිතයි
- සැඟවී ඇත
- සෑම දෙයක්ම අතිශයින් ප්රමාද කිරීම
ක්රියාත්මක කිරීම අනුව, පණිවිඩ යැවීම ප්රමාද වූ ක්රියා පටිපාටිය ඇමතුමක් වන අතර, ක්රියා පටිපාටි ඇමතුම් ප්රමාද වී තිබේ නම්, ඔබ ඇමතීමට යන්නේ කුමක්දැයි සැලසුම් කරන වේලාවේදී ඔබට දැනගත නොහැක, එබැවින් ඔබට රාජ්යයේ සංයුක්ත නිරූපණය පිළිබඳව කිසිදු උපකල්පනයක් කළ නොහැක. ඉතින්, ඇත්ත වශයෙන්ම එය පණිවුඩකරණය පිළිබඳ වේ, ප්රමාද බන්ධනය යනු පණිවිඩ යැවීම ක්රියාත්මක කිරීම වන අතර සංවෘත කිරීම එහි ප්රති ence ලයකි.
ඔහු පසුව පැහැදිලි කළේ “ විශාල අදහස“ පණිවිඩ යැවීම ”වන අතර “ පණිවුඩ -නැඹුරු ”වෙනුවට“ වස්තු-නැඹුරු ”ලෙස හැඳින්වීම ගැන කනගාටු වන බැවිනි. ) සහ සැබවින්ම වැදගත් දෙයින් ract ත්වීම (පණිවිඩ යැවීම):
ස්මාල්ටෝක් යනු එහි වාක්ය ඛණ්ඩය හෝ පන්ති පුස්තකාලය පමණක් නොවන බවත්, එය පන්ති ගැනවත් නොවන බවත් සැමට මතක් කර දීමට මම අන්තිම OOPSLA හිදී යම් වේදනාවක් ගත් බව මෘදු මතක් කිරීමක් පමණි. බොහෝ කලකට පෙර මෙම මාතෘකාව සඳහා "වස්තූන්" යන යෙදුම යෙදීම ගැන මට කණගාටුයි, මන්ද බොහෝ දෙනෙකුට අඩු අදහස කෙරෙහි අවධානය යොමු කිරීමට එය හේතු වේ.
විශාල අදහස වන්නේ "පණිවිඩ යැවීම" - ස්මාල්ටෝක් / ස්කීක් හි කර්නලය යනු එයයි (එය අපගේ සෙරොක්ස් පාර්ක් අවධියේදී කිසි විටෙකත් සම්පුර්ණ නොවූ දෙයක්). ජපන් ජාතිකයින්ට කුඩා වචනයක් ඇත - ma - සඳහා “අතර ඇති දේ” - සමහර විට ළඟම ඇති ඉංග්රීසි සමාන “අන්තර් අන්තරාලය” විය හැකිය. විශිෂ් and හා වර්ධනය කළ හැකි පද්ධති සෑදීමේ ප්රධාන දෙය නම් ඒවායේ මොඩියුලයන් ඒවායේ අභ්යන්තර ගුණාංග හා හැසිරීම් කුමක් විය යුතුද යන්නට වඩා සන්නිවේදනය කරන ආකාරය සැලසුම් කිරීමයි. අන්තර්ජාලය ගැන සිතන්න - ජීවත්වීම සඳහා, (අ) ඕනෑම ප්රමිතියකට එහා ගිය විවිධාකාර අදහස් සහ අවබෝධයන් සඳහා ඉඩ දිය යුතු අතර (ආ) මෙම අදහස් අතර විවිධාකාර ආරක්ෂිත අන්තර්ක්රියාකාරිත්වයට ඉඩ දිය යුතුය.
(ඇත්ත වශයෙන්ම, අද බොහෝ දෙනා වස්තූන් කෙරෙහි නොව පන්ති කෙරෙහි අවධානය යොමු කරති, එය ඊටත් වඩා වැරදිය.)
OO සඳහා පණිවුඩකරණය මූලික වේ, එය රූපකයක් මෙන්ම යාන්ත්රණයක් ද වේ.
ඔබ යමෙකුට පණිවිඩයක් යවන්නේ නම්, ඔවුන් එය කරන්නේ කුමක් දැයි ඔබ නොදනී. මෙම පමණක් ඔබට නිරීක්ෂණය කළ හැක දෙයක්, ඔවුන්ගේ ප්රතිචාරය යි. ඔවුන් පණිවිඩය තමන් විසින්ම සකසා ඇත්දැයි ඔබ දන්නේ නැත (එනම් වස්තුවට ක්රමයක් තිබේ නම්), ඔවුන් පණිවිඩය වෙනත් කෙනෙකුට යොමු කළේ නම් (නියෝජිත කණ්ඩායම / ප්රොක්සිං), ඔවුන් එය තේරුම් ගත්තා නම්. සංවෘත කිරීම යනු එයයි, OO යනු එයයි. ප්රොක්සියක් ඔබ බලාපොරොත්තු වන ආකාරයට ප්රතිචාර දක්වන තාක් කල් ඔබට සැබෑ දෙයින් වෙන්කර හඳුනාගත නොහැක.
“පණිවිඩ යැවීම” සඳහා වඩාත් “නවීන” යෙදුමක් වන්නේ “ගතික ක්රම යැවීම” හෝ “අතථ්ය ක්රම ඇමතුම” යන්නයි, නමුත් එය රූපකය නැති වී යාන්ත්රණය කෙරෙහි අවධානය යොමු කරයි.
එබැවින්, ඇලන් කේගේ අර්ථ දැක්වීම දෙස බැලීමට ක්රම දෙකක් තිබේ: ඔබ එය තනිවම සිටගෙන සිටින්නේ නම්, පණිවුඩ යැවීම මූලික වශයෙන් ප්රමාද වූ ක්රියා පටිපාටිය ඇමතුමක් බවත් ප්රමාද බන්ධනය සංකේතවත් කිරීමක් අදහස් කරන බවත් ඔබට නිරීක්ෂණය කළ හැකිය, එබැවින් අපට # 1 සහ # 2 සැබවින්ම අතිරික්ත වන අතර OO යනු ප්රමාද බන්ධනයකි.
කෙසේ වෙතත්, ඔහු පසුව පැහැදිලි කළේ වැදගත් දෙය පණිවුඩකරණය බවත්, එබැවින් අපට එය වෙනත් කෝණයකින් බැලිය හැකි බවත් ය: පණිවිඩ යැවීම ප්රමාද වී ඇත. දැන්, පණිවුඩ යැවීම කළ හැකි එකම දෙය නම්, # 3 ඉතා සුළු වශයෙන් සත්ය වනු ඇත: එක් දෙයක් පමණක් තිබේ නම් සහ එම දෙය ප්රමාද වී තිබේ නම්, සියල්ල ප්රමාද වී ඇත. නැවත වරක්, පණිවිඩ යැවීමෙන් සංකේතනය කිරීම අනුගමනය කරයි.
විලියම් ආර්. කුක් විසින් නැවත සලකා බැලූ දත්ත අවබෝධ කර ගැනීමේදී ද, “වස්තුව” සහ “වස්තු දිශානතිය” පිළිබඳ සරල, නවීන නිර්වචන සඳහා වූ ඔහුගේ යෝජනාව ද ඒ හා සමාන කරුණු ඉදිරිපත් කර ඇත .
මෙහෙයුම් ගතිකව යැවීම වස්තූන්ගේ අත්යවශ්ය ලක්ෂණයයි. එහි අර්ථය වන්නේ ආයාචනය කළ යුතු මෙහෙයුම වස්තුවේම ගතික ගුණාංගයක් බවයි. මෙහෙයුම් සංඛ්යාත්මකව හඳුනාගත නොහැකි අතර, ලබා දී ඇති ඉල්ලීමකට ප්රතිචාර වශයෙන් ක්රියාත්මක වන්නේ කුමක් දැයි හරියටම දැන ගැනීමට ක්රමයක් නොමැත. මෙය සෑම විටම ගතිකව යවනු ලබන පළමු පන්තියේ කාර්යයන් හා සමාන වේ.
ස්මාල්ටෝක් -72 හි කිසිදු වස්තුවක්වත් නොතිබුණි! විග්රහ කර, නැවත ලිවීමට හා නැවත හරවා යැවූ පණිවිඩ ප්රවාහයන් පමණක් තිබුණි . මුලින්ම පැමිණි ක්රම (පණිවුඩ ප්රවාහ විග්රහ කිරීමට සහ නැවත හරවා යැවීමට සම්මත ක්රම), පසුව පැමිණියේ වස්තූන් (සමහර පෞද්ගලික රාජ්යයන් බෙදාගන්නා ක්රම සමූහ කිරීම). උරුමය බොහෝ කලකට පසුව පැමිණි අතර පන්ති හඳුන්වා දෙනු ලැබුවේ උරුමයට සහාය දැක්වීමේ මාර්ගයක් වශයෙනි. කේගේ පර්යේෂණ කණ්ඩායම දැනටමත් මූලාකෘති ගැන දැන සිටියේ නම්, ඔවුන් කිසි විටෙකත් පන්ති හඳුන්වා නොදෙනු ඇත.
වර්ග සහ ක්රමලේඛන භාෂාවල බෙන්ජමින් පියර්ස් තර්ක කරන්නේ වස්තු-දිශානතියේ නිර්වචනය වන්නේ විවෘත පුනරාවර්තනය බවයි.
ඉතින්: ඇලන් කේට අනුව, OO යනු පණිවිඩ යැවීමයි. විලියම් කුක් පවසන පරිදි, OO යනු ගතික ක්රම යැවීම පිළිබඳව වේ (එය ඇත්ත වශයෙන්ම එකම දෙයයි). බෙන්ජමින් පියර්ස්ට අනුව, OO යනු විවෘත පුනරාවර්තනය පිළිබඳ වන අතර, එයින් මූලික වශයෙන් අදහස් කරන්නේ ස්වයං යොමු කිරීම් ගතිකව විසඳා ඇති බවයි (හෝ අවම වශයෙන් එය සිතීමට ක්රමයක්) හෝ වෙනත් වචන වලින් පණිවිඩ යැවීම ය.
ඔබට පෙනෙන පරිදි, "ඕඕ" යන යෙදුම නිර්මාණය කළ පුද්ගලයාට වස්තූන් පිළිබඳ තරමක් පාරභෞතික දෘෂ්ටියක් ඇත, කුක් තරමක් ප්රායෝගික දෘෂ්ටියක් ඇති අතර පියර්ස් ඉතා දැඩි ගණිතමය දෘෂ්ටියක් ඇත. නමුත් වැදගත් දෙය නම්: දාර්ශනිකයා, ප්රායෝගිකවාදියා සහ න්යායාචාර්යවරයා සියල්ලෝම එකඟ වෙති! පණිවිඩ යැවීම OO හි එක් කුළුණකි. කාලය.
මෙහි උරුමය ගැන සඳහනක් නොමැති බව සලකන්න! OO සඳහා උරුමය අත්යවශ්ය නොවේ. පොදුවේ ගත් කල, බොහෝ OO භාෂාවන්ට නැවත ක්රියාත්මක කිරීමේ ක්රමයක් ඇති නමුත් එය අනිවාර්යයෙන්ම උරුමයක් විය යුතු නොවේ. උදාහරණයක් ලෙස එය යම් ආකාරයක නියෝජිත කණ්ඩායමක් විය හැකිය. ඇත්ත වශයෙන්ම, ඕර්ලන්ඩෝ ගිවිසුම මගින් උරුමය සඳහා විකල්පයක් ලෙස නියෝජිත පිරිස සාකච්ඡා කරන අතර වස්තු-නැඹුරුවන භාෂාවල සැලසුම් අවකාශය තුළ විවිධ නියෝජිත ස්ථාන සහ උරුමය විවිධ සැලසුම් ලක්ෂ්යයන්ට මඟ පෙන්වන්නේ කෙසේද. (ඇත්ත වශයෙන්ම ජාවා වැනි උරුමයට අනුබල දෙන භාෂාවල පවා මිනිසුන්ට එය වළක්වා ගැනීමට උගන්වනු ලබන අතර එය OO සඳහා අවශ්ය නොවන බව නැවතත් පෙන්නුම් කරයි.)