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 ක්‍රියත්මක කරවීමයි.

Tuesday, 12 September 2017

Programming ඉගෙන ගන්න අයට සුදුසු වෙබ් අඩවි

ගොඩක් අය Programming ඉගෙන ගන්න උපකාරක පංතිවලට යාම, විඩියෝ ටියුටෝරියල් බැලීම, ඊ බුක් බැලීම ආදියට පුරුදු වී සිටිනවා. එ් අයට සුදුසු වෙබ් අඩවි හා චැනලයන් කිහිපයක් මෙම ලිපියෙන් ගෙනහැර දක්වමි.

Tutorialpoint



මෙය  ඉතා විශාල පාඩම් සංඛ්‍යාවක්  අඩංගු  වෙබ් අඩවියකි. සරල කෙටි කරුණු වලින් පාඩම් සංයුක්ත වේ. Programming පමණක්ම නොව මෙහි විවිධ ක්ෂේත්‍ර වල කරුණු අඩංගු වේ.


  • JAVA TECHNOLOGIES
  • COMPUTER PROGRAMMING
  • WEB DEVELOPMENT
  • SCRIPTS
  • MANAGEMENT
  • BIG DATA & ANALYTICS
  • DIGITAL MARKETING
  • DATABASES
  • SAP
  • MATHEMATICS
  • MAINFRAME DEVELOPMENT
  • MICROSOFT TECHNOLOGIES
  • XML TECHNOLOGIES
  • SPORTS
  • ACADEMIC
  • SOFT SKILLS
  • MOBILE DEVELOPMENT
  • TELECOM
  • EXAMS SYLLABUS
  • MISC
  • SOFTWARE QUALITY



W3Schools

පෙර කී වෙබ් අඩවිය සේ විශාල නොවුනත් WEB DEVELOPMENT ගැන හොද ඉහළ දැනුමක් ලබා ගැනීමට මෙම අඩවිය ප්‍රමාණවත් වේ. ප්‍රධාන වශයෙන් මෙහි HTML, CSS, JavaScript, PHP, XML, XML, ASP, JS frameworks හා ඒ සම්බන්ධ තවත් පාඩම් මෙහි අඩංගු වේ.

මෙහි තවත් පහසුකමක් වන්නේ  මෙය හැදෑරු අය සදහා සහතික පත් මාලාවක් පිරීනැමීමයි. සහතික පත සදහා මිලක් ගෙවීමට සිදුවේ.


Sololearn

ප්‍රධාන ක්‍රමලේඛ භාෂා කිහිපයක් ඉතා අඩු කාලයක් තුළදී හැදෑරීමට හා  හදාරා අවසන් වූ පසු තමන් ගේ නම අඩංගු සහතික පතක් ලබාගැනීමට මෙම අඩවීයෙන් හැක. මෙහි ඇති ප්‍රධාන වාසිය නම් මෙය Andriod app, ios app ලෙස ජංගම දුරකථනය තුළ ස්ථාපනය කිරීමේ හැකියවයි.තවද තරග කරුවන් හා කරට කර තරග වැද තම දක්ෂතා ලොවට පෙන්වීමේ game එකක් හා Forum එකක් මෙහි අඩංගු වේ.


Codecademy


Interactive learning ගණයට වැටෙන වෙබ් අඩවියකි. Online එකේ හිද  දෙන උපදෙස් මගින් කේත කොට පාඩම් ඉගෙනිම සිදුකළ හැක. කෙසේ වුවත් මෙහි සමහර පාඩම් කොටස් සදහා මුදල් ගෙවීමට සිදුවේ. සම්පූර්ණ කරණ පාඩම් කොටස් සදහා බැජ් එකක් ලබාගත හැක.

DataCamp


මෙයද Interactive learning ගණයට වැටෙන වෙබ් අඩවියකි. මෙයද Online එකේ හිද  දෙන උපදෙස් මගින් කේත කොට පාඩම් ඉගෙනිම සිදුකළ හැක. මෙමගින් Data Science වලට අදාළව SQL, Python, R හා PostgreSQl උගත හැක.

https://www.datacamp.com/

TheNewBoston


Video Tutorial විශාල ප්‍රමාණයක් අඩංගු වෙබ් අඩවියකි. මෙහි ඉතා සරලව අ‍භ්‍යාස පෙන්වා උදාහරණ උපයෝගී කරගනිමින් ඉගෙන්වීම සිදුකරන නිසා මෙය ඉතා ප්‍රයොජනවත් අඩවියක් සේ සැලකිය හැක. මෙහි tutor වන්නේ Bucky Roberts ය. තවද මොහු විසින් යූටියුබ් චැනලයක් පවතී.


Derek Banes Youtube channel


මෙයද Video විශාල ප්‍රමාණයක් අඩංගු යූටියුබ් චැනලයකි. මෙහි විශේෂත්වය වන්නේ පැයක් වැනි කෙටි කාලයක් තුළ ක්‍රමලේඛ මූල ධර්ම භාවීතයෙන් විවිධ ක්‍රමලේඛ ඉගෙන්වීමයී.

https://www.youtube.com/user/derekbanas




සැලකිය යුතු- අනතර්ජාලය තුළ වෙබ් අඩවි යාවත්කාළින වීම මත මෙහි කරුණු වෙනස් විය හැක.