Sunday, 17 September 2017

Object Oriented Methodology

යම් ක්‍රමලේඛයක් හොදින් වටහා ගැනීමට වස්තූ පාදක ක්‍රමලේඛය අවශ්‍ය වේ. මෙය හොදින් ප්‍රගුණ කළ හොත් ඔබට වඩා හොද ගුණාත්මක ක්‍රමලේඛ කිරීමේ හැකියාව ලැබෙනු ඇත. නමුත් මතක තබා ගන්න සෑම ක්‍රමලේඛන භෂාවක් ම 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{

}

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

ඔබට පුලුවන්ද පහත දෑ වර්ගීකරණය කරන්න?
  • ·         Elephant
  • ·         CD player
  • ·         Television

  • ·         Chair
  • ·         Table
  • ·         Tiger

කොපමන class  ප්‍රමාණයක් ඔබ හදුනා ගත්තද? එයට දෙන උත්තරය මෙවැනී එකක් විය හැක. ඒවා Animal, Furniture, හා Electronic items ය. එය ලබාගන්නේ සමාන ගති ලක්ෂණ සලකා කාණ්ඩ වලට වෙන් කිරීමෙනි. මෙය වියුක්තකරණය නැතහොත් 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 ට අලුතින් දෑ එක් කල හැක. අනෙක් විශේෂ දේ නම් parentchildගේ දේවල් ලබා ගත නොහැකි වීමයි.

ඉහත උදාහරණය සලකමු.  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 පහත ආකාරයේ හැඩ ගනී.
Types of 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 ක්‍රියත්මක කරවීමයි.

4 comments: