Friday, May 14, 2010

Java වස්තු පාදක ක්‍රමලේඛනය I

ප‍රිගණක ක්‍රමලේඛනයේදී භාවිතා වන මූලික ආකාර දෙකක් තමයි
  1. Structural/Procedural
  2. Object-Oriented
structural ආකාරය භාවිතාවන ප‍රිගණක භාෂා වලට උදාහ‍රණ වශයෙන් C,Pascal,FORTRAN,COBOL වැනි ප‍රිගණක භාෂා ඉදිරිපත් ක‍රන්න පුලුවන්. මෙම භාෂා යොදාගෙන යම් ගැටලුවක් විසඳීමේදී එම ගැටලුව විසඳීමට අදාල පියව‍ර(steps) පිලිඹඳ තදින් සැලකිලිමත් වියයුතුයි. මේ සඳහා බොහෝවිට ඇල්ගොරිතමයන් භාවිතාවෙනවා. මෙම පියව‍රයන්හිදී සුදුසු data structures භාවිතා කිරීමද සිදුවනවා.
object-oriented ආකාරය භාවිතාවන ප‍රිගණක භාෂා වලට උදාහ‍රණ වශයෙන් Java,C++,Smalltalk හදුන්වන්න පුලුවන් මෙම භාෂාවන් යොදාගෙන ගැටලු විසඳීමේදී තදින් සැලකිලිමත් වනුයේ වස්තූන්(entities/objects) පිලිඹදවයි. එහිදී එක් එක් වස්තුවට තිබිය යුතු ක්‍රියාකාරීත්වය(functionality) සහ වස්තූන් අත‍ර සම්බන්දතාවය යන කරුණු මූලික වශයෙන්ම සැලකිල්ලට ගනු ලබනවා. මෙහිදී ගැටලුව විසඳීමේ පියව‍ර තීරණය ක‍රණු ලබන්නේ object නොහොත් entity එකේ සැලැස්මයි(design).
 

මෙම අදහස ලඝු කොට දක්වන්නේ නම්::> structural ආකාරයට ප‍රිගණක වැඩසටහන් සැකසීමේදී step එක අනුව data structures සැලසුම් කෙරෙනවා. object-oriented ආකාරයට ප‍රිගණක වැඩසටහන් සැකසීමේදී object එකට අනුව step (පියව‍ර) තීරණය වෙනවා. 

ඉහත මූලික ආකාර 2 ට අමත‍රව functional,visual,4GL සහ තවත් ආකාර කිහිපයක් භාවිතා වනවා. නමුත් අප සාකච්ඡා ක‍රන්නේ object-oriented ආකාරය පිලිඹදවයි. වැඩි විස්ත‍ර සඳහා

object-oriented (වස්තු පාදක) සංකල්පය තවදුරටත් පැහැදිලි ක‍රගැනීම සඳහා අපි ප්‍රායෝගික උදාහරණයක් දෙසට හැරෙමු. අපි කවුරුත් දන්නා මෙහෙයුම් පද්ධති දෙකක් වන DOS සහ Windows පිලිඹද සලකා බලමු. DOS මෙහෙයුම් පද්ධතිය භාවිතා ක‍රණුයේ procedural/structured (පටිපාටිගත) ආකාරයක්. අපිට යම්තැනක ඇති file එකක් copy කිරීමට අවශ්‍ය වූයේ නම් අපි කරන්නේ copy srcfile destfile ආකාරයේ විධානයක් භාවිතාකිරීමයි. නමුත් windows මෙහෙයුම් පද්ධතියේදී අපි ක‍රන්නේ file එක ඇති ස්ථානයට ගොස්, එය මත right click කොට ලැබෙන popup මෙනුවෙන් copy select කොට paste කිරීමට අවශ්‍ය ස්ථානය ක‍රා එලඹ එය paste ක‍රගැනීමයි. .මෙය සැබෑ ලෝකයේදී file එකක් සමග ගනුදෙනු ක‍රන ආකාරයට බොහෝ සමාන හෙයින් මෙහිදී සැබෑවටම file එකක් ලෙස භාවිතා ක‍රන ආකාරයක් user ට හැඟීයනවා.

අපි බලමු OOP වල ඇති වාසි.
  1. අතිරික්ත වශයෙන් කේත ලිවීම වලකාලීමට හැකිය.(eliminate redundant code)
  2. කාලය ඉතිරික‍ර ගත හැකිය.
  3. නිරෝධනයකින්(interference) තොරව  වස්තුන් ගණනාවක් පහසුවෙන් එකව‍ර පැවතිය හැකිය.
  4. ලියල ලද වැඩසටහන හෝ මොඩියුලය යාවත්කාලීන කිරීම පහසුය(easy upgrading)
  5. ව්‍යාපෘති පාදක වැඩසටහන් වලදී මෘදුකාංගය කොටස් වලට බෙදීමට පහසුය
OOP වල භාවිත යෙදුම් (applications)
  • Real-time systems
  • Object oriented databases
  • Artificial intelligences 
  • Expert systems
  • Neural networks & Parallel programming
  • Decision support and office automation systems
  • CAD/CAM Systems
OOP හි මූලික සංකල්ප
  • Classes and Objects
  • Data encapsulation
  • Data abstraction
  • Interfaces
  • Packages
  • Inheritance
  • Polymorphism
  • Message communication
  • Dynamic binding
අපි මේ එක එකක් ගැන ඉදිරි පාඩම් වලදී පිලිවෙලින් සාකච්ඡා ක‍රමු.

Classes සහ Objects

  • Classes
ස‍රලවම කිව්වොත් class එකක් යනු object එකක සැලැස්ම වගේ දෙයක්(blue print/prototype). object එකක ලක්ෂණ, ක්‍රියාකාරීත්වය යනාදිය සියල්ල තීරණය කරණු ලබන්නේ class එක විසින්. objects නිමවීමට classes යොදාගන්නවා යන්න දැන් ඔබට පැහැදිලි ඇති. එකම class එකකින් objects අවශ්‍ය තරමක් සැකසිය හැකියි.
class එක සැලසුම් කිරීමේදී එහි object එකට අදාල පහත අංග ඇතුල් කෙරෙනවා.

  1. attributes/properties/state (වස්තුවට අදාලවන ලක්ෂණ) උදා : වර්ණය, දිග, ප‍රිමාව...
  2. constructors (class එක මගින් object එක සෑදීමේදී object එකේ attributes(ලක්ෂණ) මොනවාදැයි ලබාදීමට භාවිතකෙරේ.)
  3. methods වස්තුවේ ක්‍රියාකාරීත්වය කුමන ආකාරයෙන් වියයුතු දැයි විස්තර කෙරෙන කොටස. ඇතැම් ප‍රිගණක භාෂාවල functions,procedures ලෙසද මෙම කොටස හැඳින්වේ.
අපි class එකකට උදාහ‍රණයක් ලෙස Radio එකක් ගනිමු. 
දැන් බලමු radio එකේ attributes සහ methods මොනවාද කියලා.
ඕනෑම radio එකකට තියෙනවා band එකක්(ත‍රංග කලාපයක්), ඒවගේම volume(ශබ්ද ප්‍රමාණයක්), සුස‍ර ක‍රන ලද සංඛ්‍යාතයක් (frequency) මේවා සියල්ල අපට radio එකේ attributes/properties ලෙස සලකන්න පුලුවන්.

ඔබ දන්නවා radio එකක් factory එකෙන් පිටවෙනකොට එයට කිසියම් පෙර සකසන ලද වින්‍යාසයක් (configuration) තිබෙනවා ඒකිව්වෙ ඇතැම් radio එකක  frequency එක 88.0MHz ලෙසද තවක් එකක 108.0MHz ලෙසද සැකසී එනවා. volume එකත්, band එකටත් මේ කතාව පොදුයි. මෙන්න මේක OOP වලදී ඉටුක‍රගැනීමට තමයි constructor එකක් භාවිතා ක‍රන්නේ. 

මීලඟට radio එකක methods හඳුනා ගනිමු. ඒ කිව්වේ radio එකෙ ක්‍රියාකාරීත්වයට බලපාන දේවල්. උදාහ‍රණයක් විදියට radio එක සුස‍ර කිරීම(tune) සලකමු. මෙහිදී ඉදිරියට සුස‍ර කිරීම සහ පිටුපසට සුස‍ර කිරීම යනාදී වශයෙන් methods දෙකක් අපට හඳුනා ගන්න පුලුවන් tuneUp සහ tuneDown වශයෙන් අපි ඒවා නම් ක‍රමු. volume එකටත් එලෙසටම increaseVol සහ decreaseVol ලෙස methods 2ක් ගනිමු.   
මේ ආකාරයට ඕනෑම object එකක methods සහ attributes හදුනා ගත හැකියි.
දැන් අපි බලමු මෙම class එකට අයිති attributes සහ methods රූපිකව පෙන්වන්නේ කෙසේද කියලා.

දැන් අපි බලමු ඉහත class එක ජාවා තුලදී නිර්මාණය ක‍රගන්නේ කෙසේද කියලා.

class ClassName {
    [Attribute Declarations]*
    [Constructors]*
    [Method Declarations]*
}
 * යන්නෙන් අර්ථවත් කරන්නේ එකක් හෝ ඊට වැඩි ගණනක් තිබිය හැකිය යන්නයි.
අපි මේ සඳහා ජාවා කේතයක් ලියමු.
class Radio {
 //Attributes Declarations
 String Band;
 int Volume;
 float Frequency;
 
 //Constructors
 public Radio(){
  Band="FM";
  Volume=13;
  Frequency=90.5f;
 }
 
 //Method Declarations
 public void tuneUp(){
  if(Frequency < 108.0 )
   Frequency=Frequency+1;
 }
 
 public void tuneDown(){
  if(Frequency > 88.0 )
   Frequency=Frequency-1;
 }
 
 public void increaseVol(){
  if(Volume < 48 )
   Volume=Volume+2;
 }
 
 public void decreaseVol(){
  if(Volume > 2 )
   Volume=Volume-2;
 }
}

දැන් පේලියෙන් පේලිය ගෙන මෙහි ක්‍රියාකාරීත්වය බලමු.
3,4,5 පේලි වලින් සිදුක‍රන්නේ class එකට අයත් attributes declare ක‍රගැනීමයි.


8,9,10,11,12 පේලි අයත්වන්නේ constructor එකටයි. මෙමගින් මෙම class එක භාවිතා ක‍ර සාදාගන්නා object එකෙහි attributes/properties සඳහා අගයන්(values) initialize කිරීම සිදුක‍රනවා. අපි ඉදිරියේදී constructors පිලිඹද තවදුරටත් සාකච්ඡා කිරීමට බලාපොරොත්තු වෙනවා. 


15 වන පේලියේ සිට පහලට class එකට අයත් methods පිලිබඳ විස්ත‍ර කිරීම සිදුකෙරෙනවා. මෙහිදී භාවිතාවී ඇති සෑම method නමකම මුලට public void ලෙසින් යෙදීමට හේතුව අපි ඉදිරියේදී සාකච්ඡා ක‍රන method සම්බන්ඳ පාඩමේදී බලමු. 

මෙම පාඩමෙදී class එකක් තුල attributes,constructors හා methods යෙදෙන ආකාරය දැනගැනීම ප්‍රමාණවත්.

අපි ඊලඟ පාඩමෙන් object, constructors හා methods පිලිබඳව බලමු.
ඔබට classes හා objects පිලිබඳ sun tutorial එකෙන් බැලීමට අවශ්‍ය නම් මෙම link එක භාවිතා ක‍රන්න.

6 comments:

  1. දිගටම ලියමු සහෝදරයා...

    ReplyDelete
  2. nice work machan,,,,,,,,,,keep the good work going.....it's better to add something about VECTORS ,too......

    ReplyDelete
  3. shhaaaah harima lassana wadak..
    niyamai..

    ReplyDelete
  4. Niyamai. Aye ELAMAKIRI

    ReplyDelete
  5. hello ,, mata meke mula lesson eke indalama balanna oneee. but, mula mokakda kiyala hitha ganna be... pls kawruhari me ke mul kotas wala link ekak ewanawada...?
    mage e mail ekata ..
    dilan.wa@gmail.com

    ReplyDelete
  6. meka sinhalen kiyawaddi tamai bokkatama wadinne..! supiri wedak machan digatama liyamu...!!!

    ReplyDelete