OOP - Object Oriented Programming එහෙම නැත්නම් වස්තූන් පාදක ක්රම ලේඛනය කියන්නේ මොකක්ද කියන්න කලින් object එකක් එහෙම නැත්නම් වස්තුවක් කියන්නේ මොකක්ද කියලා බලමු.
Object
පුළුල් අර්ථයෙන් ගත්තාම object එකක් ස්පෘශ්ය හෝ අස්පෘශ්ය ඕනම දෙයක් වෙන්න පුළුවන්. එතකොට වස්තූන් පාදක ක්රමලේඛනය කියන්නේ මේ වස්තූන් පාදක කරගෙන වැඩසටහන් ලිවීමයි.වස්තූන් පාදක ක්රම ලේඛනය මත ලිවූ වැඩසටහනක් එහි වස්තූන් වල අන්තර් ක්රියාකාරීත්වය මත රදා පවතී.
උදා. ගනුදෙණුකරුවන්ගේ තොරතුරු තබා ගන්නා බයිසිකල් අලෙවිසලක වැඩසටහනක objects ලෙස Customer, Bicycle..ආදිය හදුනා ගත හැක.පුස්තකාලයක Book, Librarian,Member,...යනාදිය objects ලෙස හදුනා ගත හැක.
මෙම object එකක් තුල අන්තර්ගතයෙහි ප්රධාන කොටස් 2ක් දැකිය හැක.එනම්
1. Fields/Attributes -ලක්ෂණ හෝ ගුණාංග
2. Behaviors/Methods -ක්රියාකාරකම් හෝ ක්රමෝපායන්
උදා. බයිසිකලය object එකක් ලෙස සැලකූ විට එහි වේගය, රෝද කරකැවෙන වේගය, ගියරය... යනාදිය attributes ද ගියර මාරු කිරීම, තිරිංග තද කිරීම, පැඩලය පෑගීම...යනාදිය behaviors හෝ methods ලෙසද දැක්විය හැක. (1.1 රූපය)
Object
පුළුල් අර්ථයෙන් ගත්තාම object එකක් ස්පෘශ්ය හෝ අස්පෘශ්ය ඕනම දෙයක් වෙන්න පුළුවන්. එතකොට වස්තූන් පාදක ක්රමලේඛනය කියන්නේ මේ වස්තූන් පාදක කරගෙන වැඩසටහන් ලිවීමයි.වස්තූන් පාදක ක්රම ලේඛනය මත ලිවූ වැඩසටහනක් එහි වස්තූන් වල අන්තර් ක්රියාකාරීත්වය මත රදා පවතී.
උදා. ගනුදෙණුකරුවන්ගේ තොරතුරු තබා ගන්නා බයිසිකල් අලෙවිසලක වැඩසටහනක objects ලෙස Customer, Bicycle..ආදිය හදුනා ගත හැක.පුස්තකාලයක Book, Librarian,Member,...යනාදිය objects ලෙස හදුනා ගත හැක.
1.0 an object |
1. Fields/Attributes -ලක්ෂණ හෝ ගුණාංග
2. Behaviors/Methods -ක්රියාකාරකම් හෝ ක්රමෝපායන්
උදා. බයිසිකලය object එකක් ලෙස සැලකූ විට එහි වේගය, රෝද කරකැවෙන වේගය, ගියරය... යනාදිය attributes ද ගියර මාරු කිරීම, තිරිංග තද කිරීම, පැඩලය පෑගීම...යනාදිය behaviors හෝ methods ලෙසද දැක්විය හැක. (1.1 රූපය)
1.1 රූපය |
Class
අපට පියවි ලෝකයේ එක වර්ගයේ objects ගනනාවක් දැකිය හැක. එකම වර්ගයේ තවත් බයිසිකල් දහස් ගණනක් තිබිය හැක.සෑම බයිසිකලයක්ම එකම සැලැස්මකට(same blueprint), එකම වර්ගයේ උපාංග සහිතව නිපදවා ඇත.වස්තූන් පාදක ක්රමශිල්පයේදි අපි මෙය,
bicycle is an instance of the class of objects known as bicycles
බයිසිකලය යන වස්තුව, බයිසිකල් class එකේ instance එකක්(දෘෂ්ටාන්තයක්) ලෙස කියමු.
බොහෝ විට class එකක අරමුණ objects සෑදීමයි.
Bicycle b1 = new Bicycle();
Inheritance (ඉන් හෙරිටන්ස්)
මෙහි සිංහල අර්ථය වන් නේ 'ප්රවේණිය' යන් නයි.අපි මෙහි යොදාගැනීම සොයා බලමු. අපට පියවි ලෝකයේ මුනගැහෙන වෙනස් වර්ගයේ වස්තූන්වල එකිනකට යම් යම් සමානකම් තිබිය හැක.
අප කලින් භාවිතා කල බයිසිකල් උදාහරණය ගත් විට කදු නගින බයිසිකල්, මහා මාර්ගයේ පදින බයිසිකල්..ආදී වශයෙන් විවිධ objects තිබිය හැක.
Object oriented programming හීදී මෙම පොදු methods හා fields ප්රවේණි ක්රමය නැතහොත් inheritance යටතේ අනෙක් classes වලට ලබා ගැනීමට ඉඩ සලසයි.
මෙහිදී 'බයිසිකලය' යන් න superclass බවටත් එහි 'කදු නගින බයිසිකල්, මහා මාර්ගයේ පදින බයිසිකල්..' subclasses බවටත් පත් වේ.එනම් superclass හී සියලු attributes/fields හා behaviors/methods එහි subclasses වලට ලැබේ.
Interface
ඔබ පෙර ඉගෙන ගත් ආකාරයට, objects බාහිර ලෝකය සමග සිදු කරන අන්තර් ක්රියා නිර්වචනය වන්නේ objects එක තුල අනාවරණය කරන methods මගිනි. methods, object හි interface නැත්නම් අතුරු මුහුනතෙහි ආකෘතිය සකසයි.
උදා. ඔබේ රූපවාහිනි යන්ත්රයේ ඉදිරියේ ඇති buttons, ඔබ හා රූපවාහිනි යන්ත්රයේ විදුලි පරිපථ අතර අතුරු මුහුනතයි(interface).
මෙහි ප්රායෝගික යොදා ගැනීම මෙහෙම පැහැදිලි කරන්න පුලුවන්. අපි සාමාන්යයෙන් සංකීර්ණ මෘදුකාංග නිර්මානයේදි, එහි ක්රමලේඛනය පුද්ගලයන් කිහිප දෙනෙක් අතිනුයි කරන්නේ. එවිට එක් එක් පුද්ගලයන් ලියු classes තුල යම් යම් නොගැලපීම් තිබිය හැකි නිසාත්, මේවා යම් format එකකට එනම් ආකෘතියකට ගෙන ඒමට interface භාවිතා කරයි.
උදා. ඔබේ රූපවාහිනි යන්ත්රයේ ඉදිරියේ ඇති buttons, ඔබ හා රූපවාහිනි යන්ත්රයේ විදුලි පරිපථ අතර අතුරු මුහුනතයි(interface).
මෙහි ප්රායෝගික යොදා ගැනීම මෙහෙම පැහැදිලි කරන්න පුලුවන්. අපි සාමාන්යයෙන් සංකීර්ණ මෘදුකාංග නිර්මානයේදි, එහි ක්රමලේඛනය පුද්ගලයන් කිහිප දෙනෙක් අතිනුයි කරන්නේ. එවිට එක් එක් පුද්ගලයන් ලියු classes තුල යම් යම් නොගැලපීම් තිබිය හැකි නිසාත්, මේවා යම් format එකකට එනම් ආකෘතියකට ගෙන ඒමට interface භාවිතා කරයි.
Package
package යනු අදාල interfaces හා classes හි එකතුවකි. packages යනු ඔබේ පරිගනකයේ ප්රධාන ගොනු(main folders) මෙනි.songs,films,java ආදි වශයෙන් එක් එක් අදාල එම ගොනු තුල files තැන්පත් කරන ආකාරයටම තුල classes හා interfaces එක් කරයි. ජාවා හීදී වැඩසටහනක් ලියන විට classes හා interfaces සිය දහස් ගනනක් ඇති විය හැකි නිසා packages මගින් ඒවා තුලට බහාලිය හැක.
ජාවා මගින් class library එනම් packages වල එකතුවක් සපයයි. Application Programming Interface හෝ API යනුවෙන් මෙම library එක හැදින්වේ.මෙම API නැතහොත් library එක තුල ඇති නොයෙකුත් පොදු ක්රමලේඛන අවශ්යතා සදහා උපකාරී වන packages අඩංගු වේ.
උදා. GUI සෑදීමට අප යොදා ගන්නා JButtons, JLabels, JTextFields, JFrame යනාදිය javax.swing package එක තුල අඩංගු වේ.මෙම package එක නොමැතිනම් අප මෙම JButton, JLabel... components සියල්ල සදහාද කේත ලිවිය යුතුය.
ඉදිරි ලිපි වලින් අප මෙම සංකල්ප ප්රායෝගිකව යොදා ගන්නා ආකාරය විමසා බලමු.
ජාවා මගින් class library එනම් packages වල එකතුවක් සපයයි. Application Programming Interface හෝ API යනුවෙන් මෙම library එක හැදින්වේ.මෙම API නැතහොත් library එක තුල ඇති නොයෙකුත් පොදු ක්රමලේඛන අවශ්යතා සදහා උපකාරී වන packages අඩංගු වේ.
උදා. GUI සෑදීමට අප යොදා ගන්නා JButtons, JLabels, JTextFields, JFrame යනාදිය javax.swing package එක තුල අඩංගු වේ.මෙම package එක නොමැතිනම් අප මෙම JButton, JLabel... components සියල්ල සදහාද කේත ලිවිය යුතුය.
ඉදිරි ලිපි වලින් අප මෙම සංකල්ප ප්රායෝගිකව යොදා ගන්නා ආකාරය විමසා බලමු.