යම් ක්රමලේඛයක්
හොදින් වටහා ගැනීමට වස්තූ පාදක ක්රමලේඛය අවශ්ය වේ. මෙය හොදින් ප්රගුණ කළ හොත්
ඔබට වඩා හොද ගුණාත්මක ක්රමලේඛ කිරීමේ හැකියාව ලැබෙනු ඇත. නමුත් මතක තබා ගන්න සෑම
ක්රමලේඛන භෂාවක් ම OOP මූලධර්ම
පිළිපදින්නේ නම් නැහැ. ඒවැනි ක්රමලේඛ භාෂාවන් නම් C ක්රමලේඛන භාෂාවයි. OOP වල ඇති වාසිය වන්නේ
යළි භාවිතා කිරීමේ හැකියාවයි.
අපි පළමුව
ඉගෙන ගන්න යන්නේ වස්තුවක් කියන්නේ මොකක්ද කියලයි. පරිසරයේ පවතින සියලුම දේවල්
වස්තු ලෙස පවති. දන්නා උදාහරණ වලින් ගතහොත් Atlas chooty පෑන සලකමු. එය object එකකි. මෙය සමස්තයක් ලෙස ගතහොත් පෑන(pen) කියන class එකට වැටේ.
පෑනකට වර්ණයක්, තීන්ත මට්ටමක්, වෙළද නාමයක් හා මිලක් පවති. මේවා object එකේ properties නැත්නම් attributes ලෙස හදුන්වයි. මේවා පෑනෙන් පෑනට වෙනස් වේ. තවද පෑනෙන්
ලීවීම කළ හැක. මෙය පැන කියන object එකේ method එකයි.
තවත් උදාහරණ
වස්තුව
|
Nissan Sunny
|
iPhone 7
|
Student
|
Singer Washing Machine
|
Class
|
Car
|
Phone
|
Person
|
Washing Machine
|
Attributes
|
Color, Number, Owner, Gear Type
|
type, color, brand name, price, features
|
Name, Date of birth, skin color, height, weight, blood group
|
Brand name, price, weight, warranty period
|
Properties
|
Start Engine, Break Car, Accelerate Car, Reverse Car, Do signal
|
Send Message, take a picture, call to other
|
Walk, talk, eat, etc.
|
Rinse clothes, dry clothes.
|
Class
සෑම වස්තුවක්ම
Class එකකට අයත් වෙනවා. Class එකක් කියන්නේ හරියට අකෘතියක්
(නැත්නම් පිඔුරක්) (class is a blueprint of the object) වගේ දෙයක්. මේ Class එක වර්ග දෙකකට බෙදේ. Class එකක් ඒවා sub class හා super class වේ. class නිර්මාණය කිරීමට class කියන keyword භාවීතා වේ. පසුව class name එක ද සදහන් කළයුතුයි. attributes හා method කියන්නේ class එකේ සාමජිකන්ය.
එමෙන්ම Class එකක් නැතුව
වස්තුක් අර්ථ දැක්විය නොහැක. තවදුරටත් විස්තර කළහොත් class, data types පරිශිලකලයනට උචිත
පරිදි නිපද වීමට යෙදා ගැනේ.
class Person{
}
class Person{
}
Object
අප වස්තු නැත්නම්
object ගැන ඉහත පුලුල්ව
විස්තර කළා. Object කියන්නේ Class සදහා උදාහරණයන් වේ.
උදාහරණ ලෙස ගත හොත් මයිනා, කොහා හා
දෙමලිච්චා යනු පක්ෂින් කියන class සදහා උදාහරණ වේ. සැබෑ
ජීවිතයේදී Objectක් භෞතික,
සංකල්පීය හෝ මෘදුකාංග ලෙස පවති.
- Creator objects: Humans, Employees, Students, Animal
- Physical objects: Car, Bus, Plan
- Objects in computer system: Monitor, Keyboard, Mouse, CPU, Memory
p
Java වලදී Object එකක් new keyword මගින් අර්ථ දක්වයි.
Person person1=new Person();
Abstraction
ඔබට පුලුවන්ද
පහත දෑ වර්ගීකරණය කරන්න?
|
|
කොපමන class ප්රමාණයක් ඔබ හදුනා ගත්තද? එයට දෙන උත්තරය මෙවැනී එකක්
විය හැක. ඒවා Animal,
Furniture, හා Electronic items ය. එය ලබාගන්නේ සමාන ගති ලක්ෂණ සලකා
කාණ්ඩ වලට වෙන් කිරීමෙනි. මෙය වියුක්තකරණය නැතහොත් Abstraction ලෙස හදුන්වයි.
මෙය තවත් නිදසුන් ගතහොත් මෝටර් රථය සලකමු. එය පදවන මගියා මෝටර් රථයෙන් break, reverse කරන්න දන්නා නමුත් එය සිදුවන අන්තර් ක්රියාකාරිත්වය නොදනී. එලෙස මුලු ක්රියාකාරිත්වය නොදක්වා එය අදහසක් ලෙස ගෙන දැක්වීම Abstraction වේ.
මෙය තවත් නිදසුන් ගතහොත් මෝටර් රථය සලකමු. එය පදවන මගියා මෝටර් රථයෙන් break, reverse කරන්න දන්නා නමුත් එය සිදුවන අන්තර් ක්රියාකාරිත්වය නොදනී. එලෙස මුලු ක්රියාකාරිත්වය නොදක්වා එය අදහසක් ලෙස ගෙන දැක්වීම Abstraction වේ.
Inheritance
classes අතර parent–child
relationship විස්තර කරන්නේ
මෙමගින්. ඇත්තෙන්ම මෙය අවශ්ය වන්නේ parent class තුළ ඇති ලක්ෂණයන් child class වලටත් ලබාදීමටය.
එමගින් දත්ත නැවත නැවත අර්ථ දැක්වීම අඩු කළ හැක. parent class 1කට child class එකක් හෝ කිහිපයක් තිබිය හැක. නමුත් child class 1කට parent class ගණන සැලකිය යුත්තේ
යෙදාගන්නා ක්රමලේඛව වර්ගය අනුවය. JAVA හා C# වැනි ක්රමලේඛන තුළ parent class ගණන 1ක් වන අතර C++ වැනි ක්රමලේඛ වල එය
1ක් හෝ කිහිපයක් වේ. ඒ කියන්නේ multiple inheritance සංකල්පය JAVA හා C# වල සහය නොදක්වන බවයි.
තවත් දෙයක් නම් parent අර්ථ දැක්වු දේ child ට වෙනස් කර භාවිතා කළ හැකි අතර child ට අලුතින් දෑ එක් කල හැක. අනෙක් විශේෂ දේ නම් parentට childගේ දේවල් ලබා ගත නොහැකි වීමයි.
තවත් දෙයක් නම් parent අර්ථ දැක්වු දේ child ට වෙනස් කර භාවිතා කළ හැකි අතර child ට අලුතින් දෑ එක් කල හැක. අනෙක් විශේෂ දේ නම් parentට childගේ දේවල් ලබා ගත නොහැකි වීමයි.
ඉහත උදාහරණය
සලකමු. Vehicle කියන්නේ Road Vehicle, Air Vehicle, Water Vehicle යන class තුනේ parent class එකයි. මෙම child classටම තියෙන්නේ Vehicle ලක්ෂණයි. ඒ කියන්නේ color, price,
engine type, maximum speed ආදීයයි. මේවා Vehicle හි අර්ථ දක්වනවා
මෙන්ම child වලදී දත්ත
ලබා දේ. එනම් Road Vehicle හීදි එක maximum speed එක 120 දිය හැක. Road Vehicle කියන්නේ Bus හා Motor Bike වල parent class එකයි. ඒ class දෙකට තියෙන්නේ Road Vehicle හි ලක්ෂණයන්ය.
බොහෝ තැන් වලදී parent class එකක් super class ලෙසද child class එකක් sub class එකක් ලෙසද හදුන්වයි.
Inheritance පහත ආකාරයේ හැඩ ගනී.
බොහෝ තැන් වලදී parent class එකක් super class ලෙසද child class එකක් sub class එකක් ලෙසද හදුන්වයි.
Inheritance පහත ආකාරයේ හැඩ ගනී.
tutorialpoint site |
Encapsulation
ක්රමලේඛයේ
දත්ත වල ආරක්ෂාව ගැන සලකා බලන්නේ මෙතැනෙනි. මෙම OOP වල එක් පහසුකමකි. දත්ත බාහිර ලෝකයෙන් සැගවීම
Encapsulation වේ. මෙම දත්ත වලට ප්රවේශ
වීමට නම් ඊට අදාළ method භාවිතා කළයුතුයි. මෙම සුවිශේෂී method හදුන්වන්නේ getters හා setters කියාය. තවද constructor මගින් ද ලබා දෙන අවස්ථාද ඇත.
Polymorphism
object එකක් බහු ආකාරයක් ලබාගැනීමේ හැකියාව polymorphism(බහුරූපතාව) ලෙස හදුන්වයි. බහුලව භාවීතා වන්නේ parent class යොදා ගෙන child class object අර්ථ දක්වන ආකාරයයි. IS-A වැටෙන සියලුම සබදතා polymorphic වේ.
Polymorphism හි ප්රධනා වශයෙන් සිද්ධ වෙන්නේ super class reference එකක් යොදා ගෙන sub class එකක functions ක්රියත්මක කරවීමයි.
This comment has been removed by the author.
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteOo බොක්කටම වදින්නම තියෙනවා
ReplyDeleteඑළ Thanks!
Delete