Skip to main content

OOP -What is class & object?

අපි දැන් බලමු මොකක්ද  මේ Class එකක් කියන්නේ , මොකක්ද මේ Object  එකක් කියන්නේ කියලා.

Class

කෙටියෙන්ම  කිව්වොත් class එකක් කියන්නේ object එකක සැලැස්මක්, අච්චුවක්  වගේ දෙයක් ඒ කියන්නෙ blue print එකක්. object එකක ලක්ෂණ, ක්‍රියාකාරීත්වය යනාදිය සියල්ල තීරණය කරණු ලබන්නේ class එක විසින්. අපි objects සැදීම සඳහා classes භාවිත කරනවා කියන එක ගෙන idea එකක් මගේ යාළුවන්ට එන්න  ඇති. අපිට  එක class එකකින් objects ඕනේ තරමක් හදන්න පුළුවන්. class එකක්  සැලසුම් කිරීමේදී එහි object එකට අදාල පහත අංග ඇතුල් කෙරෙනවා. ඔයාලට පැහැදිලි වෙන්න මම class diagram එකකින් පෙන්වන්නම්.

  • Attributes/properties/state 
  • Constructors 
  • Methods/Functions

උදාහරණයක් විදිහට මම Box කියන class එක ගන්නම්.



මේ Box කියන class එකේ තියෙන attributes තමයි length, width & height කියන්නේ. Box() කියන්නෙ default constructor එක, setValues , setLength, setWidth, setHeight, getVolume, getArea, printVolume, printArea කියන්නෙ Box class එකේ තියෙන methods එහෙම නැත්නම් functions කියන්නේ. 
මම හිතනවා ඔයාලට දන් class එකක් කියන්නේ මොකක්දේ කියන එක ගෙන පැහැදිලි වුනා කියලා.

Object

අපි දැන් බලමු object එකක් කියන්නෙ මොකක්ද කියලා. කෙටියෙන්ම කියනවා නම් Class එකකින් අපි හදන instance එකක් අපි Object එකක් කියලා හඳුන්වනවා. එහෙමත් නැත්නම් data & method වල එකතුවක් ලෙසත් හඳුන්වන්න පුළුවන්.සැබෑ ලෝකයේ වස්තුන් java තුල නිරුපනය කරන්නේ objects භාවිතයෙන් . classes තමයි object එකේ design එක ගෙන තීරණය කරන්නෙ.


ඔයාලට දැන් class ආණ්ඩ object ගැන idea එකක් තියෙනවා කියලා මන් හිතනවා. එනිසා මම Box class එක java වලින් implement කරන ගමන් ඔයාලට කොහොමද object එකක් අපි java program එකක හදන්නේ කියලා කියන්නම්.



  Box.java

ඔය විදිහට Box.java class එක අපි ලියනවා. දැන් අපිට Box class එකේ object එකක් BoxTest කියන class එකේ හදා ගන්න ඕනේ . අපි බලමු කොහොමද Box class  එකේ object එකක් හදන්නෙ කියලා.




BoxTest.java


 class එකක object එකක් සදා ගැනීම සඳහා අපි java වලදි new කියන keyword එක use කරනවා. 
java වලින් object එකක් හදන Syntax කොහොමද කියලා අපි බලමු.

className objectReferenceName= new constructor ;
උදාහරණ:
Box b1=new Box();
Box b2=new Box();

දැන් ඔයාලට ප්‍රශ්නයක් ඇති මොකක්දේ මේ object reference එක කියන්නේ කියලා. අපි ඒ ගෙන idea එකක් ගන්න හදපු Box class එකේ object reference එක print කරලා බලමු ඇත්තටම මොකක්දේ මේ කියලා.

BoxTest.java



ඔයාලට පේනවා ඇති BoxTest class එකේ object 2ක් හදලා තියෙනවා b1,b2 කියලා. ඒ වගේම ඒ reference එක print කලහම අපිට ලැබිල තියෙනවා Box@15db9742, Box@6d06d69c කියලා output එකක්. ඇත්තටම මොකක්දේ මේ ?

  
අපි new කියන keyword එක use කරලා Box class එකේ object එකක් හැදුවනේ b1 කියලා.new keyword එක මගින් සිදුවන්නේ දී ඇති class type එකෙන් object එකක් RAM එක තුල සාදා එයට reference එකක් (යොමුවක්) අදාල variable එක වෙත යැවීමයි. අපේ උදාහ‍රණය අනුව ගතහොත්, Box object එකක් RAM එක තුල සාදා එයට reference එකක් b1 නමැති variable එකට assign වෙනවා .  b1 java variable එක තුල ඇත්තේ Box object එක RAM එක තුල පවතින ස්ථානයට අදාල memory address එක. අන්න ඒ  memory address එක තමයි ඉස්සෙල්ල ඔඋට්පුට් එක විදිහට print උනේ.

Memory location address එක එන්නේ className@XXXXXXXX කියලා.

මම දැන්  ජාවා ප‍රිගණක භාෂාවේ ඇති සුවිශේෂ වාසියකුත්  ඔයාලට මේ ගමන්ම  කියනම් . අපි  හදන objects සඳහා වෙන් ක‍රන  memory ප්‍රමාණයන් නැවත නිදහස් කරන්න  අපිට වෙහෙස වීමට අවශ්‍ය වෙන්නේ නැ . මොකද  එක  කරන්න  JVM එක මගින් ක්‍රියාත්මක වන සුවිශේෂ thread එකක් වන "Garbage Collector" බැඳී සිටිනවා. කෙටියෙන් කියනව නම් java කියන්නේ automatic garbage collect කරන programming language එකක් .

ඔන්න දැන් මම අපි හදපු box class එකේ තියෙන attributes and methods වලට values pass කරලා පෙන්වන්න හදන්නේ අපි හදපු object එක use කරලා.

Box.java 



output


මම හිතනවා ඔයාලට class and object ගෙන පෙහෙදිලි අවබෝදයක් ලැබුන කියලා. අපි එහෙනම් ඊළඟ පාඩමෙන් හමුවෙමු..........

Comments

  1. Explained very well....easy to understand...Keep up the good work...

    ReplyDelete

Post a Comment

Popular posts from this blog

Object Oriented Programming Lessons - Part 1 topics

ඉතින් යාලුවනේ ඔයාලට මම දැන් මම ඔයලට පැහැදිලි කිරිමට බලාපොරොත්තු වෙන OOP පාඩම් මාලාව ඔයාලට කියනම්. මම හිතනවා එක ඔයාලට පහසුවක් වෙයි කියල. මම කොටස් 2ක්ත තමයි මේ පාඩම් මාලාව ඉදිරිපත් කරන්න හිතන් ඉන්නේ. පලවෙනි කොටස මං දන් ඔයලට ඉදිරිපත් කරන්නම්. OOP -Introduction OOP -What is class & object OOP - What is constructor OOP - What is abstraction  OOP - What is encapsulation OOP - Default values and declaration Values OOP - What is method overloading OOP - What is constructor overloading OOP - What is method call by values OOP - What is method call by reference OOP - What is key word "this" OOP - What is static methods OOP - What is static attributes OOP - What is static initilizer OOP - What is static object initilizer OOP - What is object blocks OOP - What is inheritance rules OOP - What is multiple inheritance using interface OOP - What is super keyword vs this key word OOP - What is method overriding OOP - What is overriding rules OOP - What is polymop...

Welcome to my blog

ආයුබෝවන් මේක කියවන  හැම කෙනාටම... මම කැළුම් පෙරේරා , දැනට IIT Campus එකේ Software Engineering degree එක කරන ගමන් තමා මං ඉන්නේ. ඒ අතර මටත් හිතුනා blog එකක් කරන්න ඕනා කියලා. මේක technical blog එකක්. blog නම් හැමතැනම ඇති... හැමදෙනාටම හම්බ වෙලා ඇති.. හැමෝම කියවලත් ඇති . .. එත් මේක විශේෂ එකක්. දිගටම මේකේ posts කියවනකොට ඔයාලටම එක තේරේවි.. මේකෙදි මම ඔයාලට කියලා දෙන්න හිතන් ඉන්නේ Java, C#  ගෙන ප්‍රදාන වශයෙන්. එත් හැමෝම දන්නා දේවල් ගෙන නෙමෙයි. ගොඩක් අය දන්නා , දන්නව වුනාට වැඩක් කරගන්න තරම් දැනුමක් නැති , එත් industry එකේ වැඩ වලට ගොඩක් ප්‍රයෝජනවත් වෙන දේවල් කොහොමද කරන්නේ කියන එක තම මං සරලවම කියලා දෙන්න යන්නේ. OOP(Object Oriented Programming) concepts ඔයලා හැමෝම දන්නවා,ඉගෙනගෙන තියෙනවා. එත් ගොඩක් අයට OOP වල ප්‍රශ්න තියෙනවා. ඒ නිසා OOP concept  ඔක්කොම වගේ ඇතුලත් වෙන විදිහට coding examples එක්කම පැහැදිළි කරනම්. ඔයාල අහල ඇතිනේ  design patterns ගැන ? අහලා ඇති ගොඩ දෙනෙක් , එත් දන්නේ නැ මොනවද , කොහොමද ඒවා use කරලා real world  project එක කරන්නේ කි...

OOP -Introduction

අපි මුලින් බලමු මොකක්ද මේ Object Oriented Programming concept එක කියන්නෙ කියලා. OOP කියන concept එක බිහිවෙන්න කලින් අපි භාවිත කලේ Structured Programming කියන concept එක. නමුත්  Structured Programming concept එක භාවිත කරලා මහපරිමාණ software නිර්මාණය කරන කොට programmers ලට නොයෙකුත් ප්‍රශ්න වලට මුහුණ දීමට සිදුවුණා. ඒ කියන්නේ structured concept එකෙන්  මහපරිමාණ software develop කරනකොට එකම class එකක සියළුම codes ලියන නිසා code වල errors , bugs ආවහම errors සහිත coding lines හඳුනාගෙන ඒවා නැවත සකස් කිරීමට‍ විශාල කාලයක් වගේම විශාල    වෙහෙසක් programmer ට දරන්න සිදුවෙනවා.  මොහොතකට හිතල බලන්න යාලුවනේ අපි structured programming concept එක use කරලා Foodcity එකකට software එකක් develop කරනවා කියලා. ඒ programme එකේ code lines විශාල ප්‍රමාණයක් තියෙනවා. ඉතින් ඒ වගේ අවස්ථාවක errors ආවහම , ඒ වගේම programmer  develop කරපු software එකට අලුතින් new parts add කරන්න අවශ්‍යයි කියල අපේ client කීවහම නැවත new parts add කිරීමේදී software එක develop කිරීමේදී වැය වුන කාලය , ඒ සඳහා c...