Wednesday, May 19, 2010

ජාවා වස්තු පාදක ක්‍රමලේඛනය III (Constructors)

  • Constructors
constructor මගින් සිදුක‍රනුයේ එය අයත් class එකට අදාලව සාදන object එක initialize කිරීමයි. දැනටමත් ඔබ දන්නවා class එකකින් කොහොමද object එකක් සාදාගන්නේ කියලා.(පසුගිය පාඩම). මේ සඳහා new keyword එක භාවිතාවන බවත් ඔබ දන්නවා ඇති.
 

අපි බලමු constructor එකක ලක්ෂණ මොනවාද කියලා. 
  • ►constructor එකක නම එය අයත් class එකේම නම වනවා. උදා: Radio class එකේ constructor එකේ නමත් Radio ම වනවා.
  • ►arguments එකක් හෝ කිහිපයක් තිබිය හැකියි. උදා : Radio(String band,float frequency)
  • ►return values ගැන කිසිඳු සඳහනක් නොමැත. (methods ගැන සාකච්ඡා කිරීමේදී return values ගැන බලමු)
  • ►constructor එකක් හෝ කීපයක් පැවතිය හැකිය.
constructors එකක කාර්‍ය භාරය කුමක්ද?
  •  local variable වල ආරම්භක අගය සැකසීම.(initialize)
  • කීප ආකාරයකට object එක සෑදීමට යොදාගත හැකිවීම 
Syntax:

public ConstructorName(argument-list){
 //constructor body
}
උදාහ‍රණයක් ලෙසට අපි Circle එකක් ගනිමු.

Circle.java
class Circle {
 int x,y,radius;
 //Constructor 1
 public Circle(int x,int y,int r){
  this.x = x;
  this.y = y;
  radius= r;
 }
 //Constructor 2
 public Circle(int x,int y){
  this.x = x;
  this.y = y;
  radius=1;
 }
}
දැන් අපි බලමු Circle class එකෙන් Circle object එකක් සෑදීමේදී constructor එක වැදගත් වන ආකාරය. අපි ඉහත class එකේ අන්තර්ගත ක‍රන ලද constructor භාවිතාක‍ර object 2ක් සාදමු.
//using constructor 1
  Circle c1=new Circle(12,34,7);
  //using constructor 2
  Circle c2=new Circle(14,47);
c1 object එක සෑදීමේදී යෙදෙන්නේ constructor 1 එකයි. එම constructor එකෙහිදී සිදුවන්නේ x,y හා r ලෙසින් arguments 3ක් ලබාගෙන c1 object එකෙහි class variables ලෙස පවතින x, y, හා radius variables initialize කිරීමයි.
c2 object එක සෑදීමේදී යෙදෙන්නේ constructor 2 එකයි. එහිදී arguments ලෙස ලබා ගනුයේ x හා y පමණි. radius එක 1 ලෙසට initialize කිරීම මෙම constructor එකෙන් සිදුක‍රයි. එනම් මෙම constructor එක(constructor 2) භාවිතයෙන් සාදන සෑම object එකකම radius එකෙහි initial value එක 1 වේ.


දැන් අපි බලමු this keyword එකෙහි භාවිතය පිලිබඳව
this keyword එක භාවිතා වන්නේ කිසියම් object instance එකකට අයත් දෑ එම object එක තුලදී refer කිරීමටයි.
මෙහිදී this keyword එක භාවිතා වන්නේ class variables හා arguments refer කිරීමේදී ඇතිවන ගැටලුවෙන් මිදීමටයි. class variables යනු සමස්ථ class එකටම බලපවත්වන ලෙස පවතින variables ය. ඉහත Circle class එකෙහි x, y හා radius යනු Circle class එකෙහි class variables වේ. constructor 1 හි තවත් x හා y ලෙසින් arguments 2ක් ගෙන ඇති බව ඔබට පෙනෙනවා ඇත. එම නමුත් එක x හා y විචල්‍යයන් බලපවත්වනුයේ/වලංගු වනුයේ constructor body එක තුලදී පමණි. this.x ලෙසින් අප refer ක‍රනුයේ class object එකට අයත් x අගයයි. අනෙක් x එක argument එකයි. එනම් this.x = x යන්නෙහි අර්ථය වන්නේ argument එකක් ලෙස සපයන x හි අගය object එකට අයත් x වෙත ලබාදීමයි.

9 comments:

  1. This comment has been removed by the author.

    ReplyDelete
  2. superb lesson.
    I like to to learn java swing and event handling.If u can start a lesson about this.
    THANK YOU FOR YOUR LESSONS

    ReplyDelete
  3. Next lesson series are based on Swing. since we have covered essential OOP concepts we can start swing and event handling.

    ReplyDelete
  4. good explanation macho...the concept of constructor overloading is explained very well.

    ReplyDelete
  5. superb. thank you very much

    ReplyDelete
  6. Keep up the good work. This is a great help for the beginners. Thanks!!

    ReplyDelete
  7. Thanks!!! This is very helpful for beginners.

    ReplyDelete