<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5285645949711521110</id><updated>2012-02-11T22:07:15.654+05:30</updated><category term='Basics Of Java'/><category term='KVM'/><category term='J2ME'/><category term='Practicals'/><category term='swing'/><category term='Java Collections'/><category term='User Interfaces'/><category term='OOP'/><category term='Installing Java'/><category term='Sun Java Wireless Toolkit'/><category term='Threads'/><category term='Java Operators'/><category term='Basic Data Types'/><category term='LWUIT'/><category term='life cycle'/><category term='Data Stuctures'/><category term='Design Patterns'/><category term='Streams'/><category term='Exception Handling'/><category term='SDK'/><category term='MIDP'/><title type='text'>අපි Java ඉගෙන ගනිමු</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>52</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-8673299463543006365</id><published>2012-02-10T11:23:00.000+05:30</published><updated>2012-02-10T11:24:03.016+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='MIDP'/><category scheme='http://www.blogger.com/atom/ns#' term='J2ME'/><category scheme='http://www.blogger.com/atom/ns#' term='LWUIT'/><category scheme='http://www.blogger.com/atom/ns#' term='User Interfaces'/><title type='text'>J2ME වැඩසටහන් සඳහා අතුරුමුහුණත් සැකසීම (LWUIT part1)</title><content type='html'>&lt;div style="color: black; text-align: justify;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-sJgCghMKhe8/TzSwJee-X4I/AAAAAAAACFk/292-9LkCEFA/s1600/2012-02-10_111748.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-sJgCghMKhe8/TzSwJee-X4I/AAAAAAAACFk/292-9LkCEFA/s320/2012-02-10_111748.jpg" width="244" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;අපි අද සිට ඉගෙනගන්න යන්නේ J2ME වැඩසටහන් ලිවීමේදී අතුරුමුහුණත් හදන්නෙ කොහොමද කියල. මේ සඳහා ක්‍රම ගණනාවක් තිබුනත් සුදුසුම ක්‍රම 2 ක් විශේශයි. අපි දැන් බලමු ඒ මොනවාද කියල.&lt;/span&gt;&lt;/div&gt;&lt;ol style="color: black;"&gt;&lt;li style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;LCDUI (&lt;b&gt;L&lt;/b&gt;imited &lt;b&gt;C&lt;/b&gt;apability &lt;b&gt;D&lt;/b&gt;evice &lt;b&gt;U&lt;/b&gt;ser Interface) :&amp;nbsp; මෙය මූලික සහ ප්‍රධානම අතුරු මුහුනත් සැකසීමේ ක්‍රමයයි. සීමාසහිත පහසුකම් තමයි මෙමගින් ලබාගන්න පුලුවන්&lt;/span&gt;&lt;/li&gt;&lt;li style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;LWUIT (&lt;b&gt;L&lt;/b&gt;ight &lt;b&gt;W&lt;/b&gt;eight &lt;b&gt;U&lt;/b&gt;ser &lt;b&gt;I&lt;/b&gt;nterface &lt;b&gt;T&lt;/b&gt;oolkit) : මෙමගින් අපිට පුලුවන් වඩා දියුණු user interface සැකසීමට. Layouts සහ අනෙකුත් බොහොමයක් අපිට හුරු පුරුදු widgets සඳහා මෙහි සහය දක්වනවා. මූලික OOP සංකල්ප ගැන, event handling ගැන අවබෝධයක් තිබේනම්. මෙය සමග වැඩකරන එක බොහොම පහසුයි. එමෙන්ම MIDP 2.0 මත ක්‍රියාත්මක වන device&amp;nbsp; independent ක්‍රමයක්. &lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අපි ඉදිරි ලිපි පෙලින් මේ LWUIT ගැන අවබෝධයක් ලබාගැනීමට උත්සාහ කරමු.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මේ සම්බන්ද මුල්ම පාඩමෙන් පෙන්වාදුන් නිසා මේ ලිපිය කියවන අය sun wireless toolkit එක බාගත කරගෙන , ස්ථාපනය කරගෙන ඇති කියල සිතනවා.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අපි දැන් පියවරින් පියවර බලමු කොහොමද අතුරුමුහුණත් සැකසීමට LWUIT යොදාගන්නෙ කියල. Official LWUIT tutorial එක බොහොම ප්‍රයෝජනවත් &lt;a href="http://docs.oracle.com/javame/dev-tools/lwuit-1.3/LWUIT_Developer_Guide.pdf"&gt;මෙම ලින්ක්&lt;/a&gt; එකෙන් ඒ PDF එක භාගත කරගන්න පුලුවන්.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;පියවර 1 : &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: large;"&gt;අලුත් project එකක් ආරම්භ කිරීම.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;File -&amp;gt; New Project -&amp;gt; MIDP Application යන්න තෝරා next ලබාදෙන්න. ඉන්පසු ලැබෙන වින්ඩෝ එකේ ප්‍රොජෙක්ට් එකේ නම ලබාදෙන්න.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;"&lt;i&gt;create Hello midlet&lt;/i&gt;" untick කරන්න. &lt;span style="font-size: x-small;"&gt;(screenshot එක බලන්න)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; color: black; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-NB0VXnK2l_w/TzSYky2FfYI/AAAAAAAACFU/cMjyTEWsnGc/s1600/2012-02-10_093715.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-NB0VXnK2l_w/TzSYky2FfYI/AAAAAAAACFU/cMjyTEWsnGc/s1600/2012-02-10_093715.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;දැන් next ක්ලික් කරන්න. ඉන්පසු ලැබෙන වින්ඩෝවේ ඇති "finish" යන බට්න් එක ක්ලික් කරන්න.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;දැන් ඔබට පෙනෙනවා ඇති project panel එකේ අපි ආරම්භ කල ප්‍රොජෙක්ට් එක පෙන්වන ආකාරය. &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; color: black; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-dplJD5nLKZc/TzSZOF766bI/AAAAAAAACFc/yUOua_IWu48/s1600/2012-02-10_093950.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-dplJD5nLKZc/TzSZOF766bI/AAAAAAAACFc/yUOua_IWu48/s1600/2012-02-10_093950.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt; එහි default package එක යටතේ කිසිඳු midlet එකක් දැකිය නොහැකියි.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;පියවර 2 : &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: large;"&gt;LWUIT &lt;/span&gt;&lt;span style="font-size: large;"&gt;library එක ප්‍රොජෙක්ට් එකට ඇතුලත් කර ගැනීම.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;LWUIT library එක MIDP specification එකට අදාල එකක් නොවේ. එය වෙනම library එකක්. එම නිසා එය අපගේ ප්‍රොජෙක්ට් එකට අන්තර්ගත කරගැනීම කල යුතුයි.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මේ සඳහා අපේ ප්‍රොජෙක්ට් එක යටතේ පවතින&amp;nbsp; "resources" මත right click කර "add library" තෝරාගබ්න්න. ඉන්පසු ලැබෙන ලිස්ට් එකෙන් LWUIT තෝරාගෙන "add library" ක්ලික් කරන්න.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt; පියවර 3 : වැඩසටහන්කරණය සිදුකිරීම&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;දැන් අපිට පුලුවන් අලුත් midlet එකක් හදාගෙන වැඩසටහන ආරම්භ කිරීමට. ඒ සදහා default package එක මත right click කර new-&amp;gt;midlet තෝරාගන්න.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;midlet එකට නමක් දෙන්න.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;ඉන්පසු අලුතින් ඇතුලත් කල midlet එකට අදාලව පහත ආකාරයෙන් කේතයක් ස්වංක්‍රීයව ලැබිය යුතුය.&lt;/span&gt;&lt;/div&gt;&lt;pre class="java" name="code" style="color: black;"&gt;import javax.microedition.midlet.*;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * @author Kanishka&lt;br /&gt; */&lt;br /&gt;public class FirstMidlet extends MIDlet {&lt;br /&gt;    public void startApp() {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void pauseApp() {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void destroyApp(boolean unconditional) {&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;දැන් අපි බලමු සරල වැඩසටහනක් ලියන අන්දම.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;pre class="java" name="code" style="color: black;"&gt;import com.sun.lwuit.Display;&lt;br /&gt;import com.sun.lwuit.Form;&lt;br /&gt;import com.sun.lwuit.Image;&lt;br /&gt;import com.sun.lwuit.Label;&lt;br /&gt;import com.sun.lwuit.layouts.BorderLayout;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import javax.microedition.midlet.*;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * @author Kanishka&lt;br /&gt; */&lt;br /&gt;public class FirstMidlet extends MIDlet {&lt;br /&gt;    public void startApp() {&lt;br /&gt;        Display.init(this);&lt;br /&gt;        Form f = new Form("My LWUIT Demo");&lt;br /&gt;        f.setLayout(new BorderLayout());&lt;br /&gt;&lt;br /&gt;        Image img;&lt;br /&gt;        try {&lt;br /&gt;            img = Image.createImage("/img/img.png");&lt;br /&gt;&lt;br /&gt;            Label centerLabel = new Label("Center Label");&lt;br /&gt;            centerLabel.setIcon(img);&lt;br /&gt;            f.addComponent(BorderLayout.CENTER, centerLabel);&lt;br /&gt;            f.addComponent(BorderLayout.NORTH, new Label("North Label"));&lt;br /&gt;            f.show();&lt;br /&gt;        } catch (IOException ex) {&lt;br /&gt;            ex.printStackTrace();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void pauseApp() {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void destroyApp(boolean unconditional) {&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;පැහැදිලි කිරීම . &lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;Line 14 : &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Display.init(&lt;/span&gt;&lt;span class="keyword" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;this&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;මෙහිදී අප සිදුකරනුලේ lwuit framework එක initialize කිරීමයි.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;Line 15 : &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Form&amp;nbsp;f&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;new&lt;/span&gt;&amp;nbsp;Form(&lt;span class="string"&gt;"My&amp;nbsp;LWUIT&amp;nbsp;Demo"&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;මෙහිදී අපි විසින් UI එකට අදාල form object එක සකසාගැනීම සිදුකරනවා. ඉදිරියේදී UI එකට අදාල widgets ඇතුලත් කරනු ලබන්නේ මේ form object එක යටතේයි.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;Line 16 : &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;f.setLayout(&lt;/span&gt;&lt;span class="keyword" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;new&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;BorderLayout());&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;layout එක set කිරීම මෙහිදී සිදුකෙරෙනවා. එය form object එකට අදාලවයි සිදුකරන්නේ. අපි ඉදිරි පාඩම්වලදී බලමු layout පිලිබඳව.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif; font-size: small;"&gt;Line 22 :&lt;/span&gt; Label&amp;nbsp;centerLabel&amp;nbsp;=&amp;nbsp;&lt;span class="keyword"&gt;new&lt;/span&gt;&amp;nbsp;Label(&lt;span class="string"&gt;"Center&amp;nbsp;Label"&lt;/span&gt;);&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;ලේබල් object එක සකසාගැනීම මෙහිදී සිදුකෙරේ.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Line 24:&lt;/span&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;f.addComponent(BorderLayout.CENTER,&amp;nbsp;centerLabel);&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;අප create කරගත් Label object එක form එකට ඇතුලත් කරගැනීම මෙහිදී සිදුකෙරේ. අප form එකට ලබාදී ඇත්තේ Border layout එක නිසා ලේබල් එක ස්ථානගතවිය යුත්තේ කවර ආකාරයෙන්ද යන්නත් මෙහිදී සඳහන් කර තිබෙනවා &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;BorderLayout.CENTER&lt;/span&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Line 26 :&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;f.show(); &lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;මෙමගින් සිදුකරන්නේ form object එක ජංගම දුරකතන තිරයේ දර්ශනය වීමට සැලැස්වීමයි.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;අපි දැන් මෙහි&amp;nbsp; output එක විමසා බලමු.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; color: black; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-PLC8xWyoXls/TxMb4UyejzI/AAAAAAAAB_0/JUBnXndQQwc/s1600/Lwuit_demo_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-PLC8xWyoXls/TxMb4UyejzI/AAAAAAAAB_0/JUBnXndQQwc/s1600/Lwuit_demo_1.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;ඉදිරි පාඩම් වලදී අනෙකුත් widgets පිලිබදව සොයාබලමු. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-8673299463543006365?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/8673299463543006365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=8673299463543006365&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/8673299463543006365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/8673299463543006365'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2012/02/j2me-lwuit-part1.html' title='J2ME වැඩසටහන් සඳහා අතුරුමුහුණත් සැකසීම (LWUIT part1)'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-sJgCghMKhe8/TzSwJee-X4I/AAAAAAAACFk/292-9LkCEFA/s72-c/2012-02-10_111748.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-2605230625906851150</id><published>2011-11-19T12:08:00.000+05:30</published><updated>2012-02-10T09:12:34.409+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='MIDP'/><category scheme='http://www.blogger.com/atom/ns#' term='J2ME'/><title type='text'>J2ME සඳහා අතුරුමුහුණත් සැකසීම (Alert View)</title><content type='html'>&lt;div style="color: black; text-align: justify;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-jnqWPHbPl_M/TsaX4TfvV0I/AAAAAAAAB0g/MXv9p7B6u4g/s1600/1321636444_alert.png" imageanchor="1" rel="shadowbox" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-jnqWPHbPl_M/TsaX4TfvV0I/AAAAAAAAB0g/MXv9p7B6u4g/s1600/1321636444_alert.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;J2ME සඳහා අපි පසුගිය ලිපිවලින් ප්‍රවේශයක් ලබාගත්තා. අපි මින් ඉදිරියට බලමු J2ME සඳහා අතුරුමුහුණත් සකසන අන්දම. මුලින්ම අපි සලකා බලමු Alert class එක පිලිබදව. අපිට Alert class එක හමුවනුයේ &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;javax.microedition.lcdui&lt;/span&gt; පැකේජය තුලදීය. එහි ස්වරූප කිහිපයක් ඇත අවස්ථානුකූලව අපට ඒ ඒ අන්දමින් Alert object සාදා භාවිතාකිරීමට එම නිසා හැකියාව ඇත. Alert එකක විවිධ ස්වරූපයන් &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: large;"&gt;AlertType &lt;/span&gt;&lt;span style="font-size: large;"&gt;class එක තුල define කර තිබේ. අපි දැන් බලමු J2ME හිදී සරල Alert එකක් පෙන්වන ආකාරය. &lt;/span&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;import java.io.IOException;&lt;br /&gt;import javax.microedition.lcdui.Alert;&lt;br /&gt;import javax.microedition.lcdui.AlertType;&lt;br /&gt;import javax.microedition.lcdui.Command;&lt;br /&gt;import javax.microedition.lcdui.CommandListener;&lt;br /&gt;import javax.microedition.lcdui.Display;&lt;br /&gt;import javax.microedition.lcdui.Displayable;&lt;br /&gt;import javax.microedition.lcdui.Form;&lt;br /&gt;import javax.microedition.lcdui.Image;&lt;br /&gt;import javax.microedition.midlet.*;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * @author Kanishka&lt;br /&gt; */&lt;br /&gt;public class MidletGUIDEmo extends MIDlet implements CommandListener{&lt;br /&gt;    Form frm;&lt;br /&gt;    Alert alert;&lt;br /&gt;    Command exitCmd;&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;    public MidletGUIDEmo() throws IOException {&lt;br /&gt;        frm=new Form("Alert Demo");&lt;br /&gt;        Image img=Image.createImage("/Sri_Lanka.png");&lt;br /&gt;        this.alert = new Alert("Access Granted!", "You have logged in succesfully!", img, AlertType.INFO);&lt;br /&gt;        &lt;br /&gt;        exitCmd=new Command("Exit", Command.EXIT, 0);&lt;br /&gt;        frm.addCommand(exitCmd);&lt;br /&gt;        frm.setCommandListener(this);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void startApp() {&lt;br /&gt;        frm.append(new String("This midlet demonstrates the Alert view and its attributes"));&lt;br /&gt;        Display.getDisplay(this).setCurrent(frm);&lt;br /&gt;        Display.getDisplay(this).setCurrent(alert);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void pauseApp() {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void destroyApp(boolean unconditional) {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void commandAction(Command c, Displayable d) {&lt;br /&gt;        if(c==exitCmd){&lt;br /&gt;            destroyApp(false);&lt;br /&gt;            notifyDestroyed();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style="color: black;"&gt;Output:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ToHclQRMU7w/TsYoefe1I-I/AAAAAAAAB0U/spS1ega5MN8/s1600/alert_1_2.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-ToHclQRMU7w/TsYoefe1I-I/AAAAAAAAB0U/spS1ega5MN8/s320/alert_1_2.jpg" width="240" /&gt;&lt;/a&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://4.bp.blogspot.com/-86Gr1ScbUgQ/TsYodbl4mXI/AAAAAAAAB0Q/iDpwF_7Myw4/s1600/alert_1_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-86Gr1ScbUgQ/TsYodbl4mXI/AAAAAAAAB0Q/iDpwF_7Myw4/s320/alert_1_1.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;දැන් අපි මෙහි ක්‍රියාකාරීත්වය වටහාගැනීමට උත්සාහ කරමු.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="color: black; text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;1&lt;/b&gt; සිට &lt;b&gt;10&lt;/b&gt; වන පේලිය දක්වා ඇති import statement වලින් සිදුකෙරෙනුයේ අප භාවිතාකල J2ME specification එකට අයත් classes import කරගැනීමයි.&lt;/span&gt;&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;ul style="color: black; text-align: justify;"&gt;&lt;li&gt; &lt;span style="font-size: large;"&gt;අපගේ midlet class එකෙහි ආරම්භය &lt;b&gt;15&lt;/b&gt; වන පේලියයි. එහි ඔබට පෙනනවා ඇති සාමාන්‍ය &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;MidletGUIDEmo &lt;/span&gt;නම් අප විසින් define කර ඇති class එක MIDlet නම් class එකෙන් extend කර ඇති ආකාරය. යම් class එකක් midlet එකක ක්‍රියාකාරීත්වය දැක්වීමට නම් එය &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;MIDlet &lt;/span&gt;නම් class එකෙහි subclass එකක් විය යුතුය. මෙහිදී භාවිතාවන්නේ inheritance නම් Object Oriented ගුණාංගයයි. inheritance පිලිබඳ වැඩිදුර දැනගැනීම පිණිස පසුගිය inheritance පාඩම සඳහා &lt;a href="http://javaxclass.blogspot.com/2010/06/vi-inheritance-1.html" target="_blank"&gt;මෙතනින්&lt;/a&gt; පිවිසෙන්න.&amp;nbsp; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style="color: black; text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;15 පේලියේ &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CommandListener &lt;/span&gt;නම් interface එක implement කරන බව දක්වා ඇත්තේ මෙම වැඩසටහනේ command event handle කිරීමට අපවිසින් සැලසුම් කර ඇති නිසයි. &lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CommandListener &lt;/span&gt;එක implement කරන නිසා&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="keyword" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;public&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="keyword" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;void&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;commandAction(Command&amp;nbsp;c,&amp;nbsp;Displayable&amp;nbsp;d)&lt;/span&gt; &lt;span style="font-size: large;"&gt;නම් method එක අපට සම්පූර්ණ කිරීමට සිදුවේ. මෙහිදී සිදුවන්නේ event handling කිරීමකි.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style="color: black; text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;MidletGUIDEmo හි constructor එකේදී 22 පේලියේ අප විසින් frm නමින් &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Form &lt;/span&gt;object එකක් සාදා තිබේ. එමගින් සිදුවන්නේ අපගේ වැඩසටහනට මුහුණතක් නිර්මාණය කිරීමට පසුබිම සැලසීමයි.&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;/div&gt;&lt;ul style="color: black; text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;24 පේලියේදී අප විසින් &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Alert &lt;/span&gt;object එක සෑදීම සිදුවේ. එහිදී පළමුවෙනි parameter එක සඳහා Alert එකෙහි title එකද, 2 වන parameter එක සඳහා Alert එකෙහි අපි පෙන්වන පණිවුඩයද,&lt;/span&gt; &lt;span style="font-size: large;"&gt;3 න් වන parameter එක සඳහා Alert එකෙහි image එකක් අන්තර්ගත කරන්නේ නම් එම &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Image &lt;/span&gt;object එකද image එකක් පෙන්වන්නේ නැතිනම් ඒ වෙනුවට &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;null &lt;/span&gt;යෙදිම සිදුකලයුතුය , 4 වන parameter එක සඳහා alert එකෙහි type එකද දැක්වීම සිදුවේ.&lt;/span&gt;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;div style="color: black; text-align: justify;"&gt;&amp;nbsp;&lt;span style="font-size: large;"&gt;Alert type ආකාර පහත පරිදි වේ.&lt;/span&gt;&lt;/div&gt;&lt;ul style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;ALARM&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;CONFIRMATION&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;ERROR&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;INFO&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;WARNING &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style="color: black; text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;26 පේලියේදී අප විසින් සිදුකරනුයේ exitCmd නමින් Command Object එකක් සාදාගැනීමයි. එහි 27 පේලියේදී එම සාදාගත් command එක අප විසින් සාදාගත් Form object එකට සම්බන්ද කරගැනීම සිදුකර තිබේ. 28 වන පේලියේදී සිදු කරනුයේ Form එකට &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CommandListener &lt;/span&gt;එක set කිරීමයි. එහිදී අප විසින් &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CommandListener &lt;/span&gt;එකක් ලෙස දක්වා ඇත්තේ &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;this &lt;/span&gt;යන්නයි. එසේ කිරීමට අපට හැකියාවක් ලැබුනේ අපගේ midlet class එක &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CommandListener &lt;/span&gt;එක implement කර තිබීම නිසයි.&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;ul style="color: black; text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;31 පේලියේ තිබෙන්නේ app එක ක්‍රියාත්මක වන අවස්ථාවේ සිදුවිය යුතු කාර්‍යභාරයයි. එහිදී අපි Form object එකට String object එකක් එකතු කිරීම සිදුවේ. 2 වන රූපෙයෙන් පෙනෙන්නේ එම form එකයි.&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;ul style="color: black; text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;33 පේලියෙන් සිදුකරනුයේ අප සාදාගත් form object එක දිස්වීමට සැලැස්වීමයි&amp;nbsp; ඒ සඳහා lcdui පැකේජයේ ඇති Display class එක යොදාගෙන current display instance එක ලබාගැනේ. ඉන්පසු&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: large;"&gt;current display instance එක ලෙස form object එක set කිරීම සිදුවේ&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;ul style="color: black; text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;34 පේලියෙන් අප විසින් form object එක set කල වහාම අප සාදාගත් alert object එක දිස්වීමට සලස්වයි එම නිසා මෙම වැඩසටහන ක්‍රියාත්මක කිරීමේදී අපට මුලින්ම දැකගැනීමට හැකිවන්නේ form එක නොව alert එකයි. alert එකෙන් ඉවත් වූ පසු ඊට පෙර තිබූ form එක නැවත දිස්වීම සිදුවේ.&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;span style="color: black;"&gt;43 සිට 48 දක්වා ඇත්තේ event handling සඳහා අදාල කොටසයි. එහිදී ලබාදුන් command එක කුමක්ද යන්න if statement යොදාගැනීමෙන් සොයාබැලේ. මෙම වැඩසටහනට අදාලව සිදුව ඇත්තේ ලබාදුන් command එක exit command එකද යන්න පරීක්ෂාකිරීමකි.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;ඉහත අප විසින් ලබාගත් දැණුම උපයෝගී කරගෙන දැන් අපි බලමු confirmation dialog එකක් Alert class එක උපයෝගී කරගෙන සකසාගන්නා අන්දම.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="color: black;"&gt;&lt;span style="color: black;"&gt;මේ සඳහා අප විසින් කල යුත්තේ ඉහත ආකාරයටම Alert එකක් සකසාගෙන එයට Yes, No වැනි command 2 ක් add කර එම command handle කිරීමට command listener එකක් යෙදීමයි. අපි දැන් බලමු මෙය සිදුරගන්නේ කොහොමද කියල.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;/ul&gt;&lt;pre class="Java" name="code"&gt;import java.io.IOException;&lt;br /&gt;import javax.microedition.lcdui.Alert;&lt;br /&gt;import javax.microedition.lcdui.AlertType;&lt;br /&gt;import javax.microedition.lcdui.Command;&lt;br /&gt;import javax.microedition.lcdui.CommandListener;&lt;br /&gt;import javax.microedition.lcdui.Display;&lt;br /&gt;import javax.microedition.lcdui.Displayable;&lt;br /&gt;import javax.microedition.lcdui.Form;&lt;br /&gt;import javax.microedition.lcdui.Image;&lt;br /&gt;import javax.microedition.midlet.*;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * @author Kanishka&lt;br /&gt; */&lt;br /&gt;public class MidletGUIDEmo extends MIDlet implements CommandListener{&lt;br /&gt;    Form frm;&lt;br /&gt;    Alert alert;&lt;br /&gt;    Command exitCmd;&lt;br /&gt;    Command yesCmd,noCmd;&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;    public MidletGUIDEmo() throws IOException {&lt;br /&gt;        frm=new Form("Alert Demo");&lt;br /&gt;        Image img=Image.createImage("/qs.png");&lt;br /&gt;        alert = new Alert("Confirmation!", "Are you a student?", img, AlertType.WARNING);&lt;br /&gt;&lt;br /&gt;        //adding commands to the alert&lt;br /&gt;        yesCmd=new Command("Yes", Command.ITEM, 1);&lt;br /&gt;        noCmd=new Command("No", Command.ITEM, 1);&lt;br /&gt;        alert.addCommand(yesCmd);&lt;br /&gt;        alert.addCommand(noCmd);&lt;br /&gt;        //set the command listener to the Alert object&lt;br /&gt;        alert.setCommandListener(this);&lt;br /&gt;&lt;br /&gt;        //adding a command to the form&lt;br /&gt;        exitCmd=new Command("Exit", Command.EXIT, 0);&lt;br /&gt;        frm.addCommand(exitCmd);&lt;br /&gt;        frm.setCommandListener(this);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void startApp() {&lt;br /&gt;        frm.append(new String("This midlet demonstrates the Alert view and its attributes"));&lt;br /&gt;        Display.getDisplay(this).setCurrent(frm);&lt;br /&gt;        Display.getDisplay(this).setCurrent(alert);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void pauseApp() {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void destroyApp(boolean unconditional) {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void commandAction(Command c, Displayable d) {&lt;br /&gt;        if(c==exitCmd){&lt;br /&gt;            destroyApp(false);&lt;br /&gt;            notifyDestroyed();&lt;br /&gt;        }else if(c==yesCmd){&lt;br /&gt;            Display.getDisplay(this).setCurrent(frm);&lt;br /&gt;            frm.append(new String("\nYou are a student"));&lt;br /&gt;        }else if(c==noCmd){&lt;br /&gt;            Display.getDisplay(this).setCurrent(frm);&lt;br /&gt;            frm.append(new String("\nYou are not a student"));&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&amp;nbsp;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-T5pvChIa9HI/TsdGbiBepRI/AAAAAAAAB1c/GEY1aA6OEuU/s320/ex2_1.jpg" width="238" /&gt; &lt;img border="0" height="320" src="http://2.bp.blogspot.com/-_7LgzzEXVjE/TsdGcJryNgI/AAAAAAAAB1k/0D4VYp6YesM/s320/ex2_2.jpg" width="238" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-uSd23st-nKo/TsdG8tOFVPI/AAAAAAAAB1s/PhW3hz-a7uY/s320/ex2_3.jpg" width="240" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙහිදී අපි 18 , 19 පේලි 2 හිදි command 3 ක් declare කර තිබෙනවා exitCmd එක form එකටද yesCmd, noCmd දෙක alert එකටද පිලිවෙලින් 37 , 30 , 31 පේලි වලදී යොදා තිබෙනවා.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;53 sita 64 දක්වා ඇත්තේ අප විසින් එකතු කරන ලද command සදහා කර ඇති event handling කේත කොටසයි.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙහිදී form එක සහ alert එකට වෙන වෙනම listeners නොයොදා එකම listener එකකින් එනම් midlet එක implement කර ඇති listener එකෙන්ම form එකට සහ alert එකට සම්බන්ද command අදාල කේතයන් සිදුකර තිබෙනවා.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙය එතරම් හොඳ practice එකක් නොවන බව බැලූ බැල්මටම ඇතමෙක්ට හිතෙන්න පුලුවන්. ඒ වෙනුවට alert එකට වෙනම listener එක්ද form එකට වෙනම listener එක්ද යෙදුවේනම් වැඩසටහනෙහි readability එක වැඩිවන බව පෙනුනත් අප මෙහිදී විශේෂයෙන්ම සලකා ඇත්තේ වැඩසටහනෙහි performance එකයි. listener එකක්&amp;nbsp; background thread එකක ක්‍රියාකාරීත්වය දක්වයි. එමනිසා listener ගණනාවක් යෙදීම හැකිතාක් අඩුකරගත යුතුය. listener එකක් ධාවනය වීමට allocate වනුයේ ජංගම දුරකතනයක resources නිසා අප&amp;nbsp; desktop application එකක මෙන් නොව මෙහිදී listeners පිලිබඳ විශේෂ සැලකිල්ලක් දැක්විය යුතුවේ.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="color: black; font-size: large;"&gt;අපි ඊලඟ පාඩමෙන් අනෙකුත් J2ME GUI classes පිලිබඳ සලකා බලමු. &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-2605230625906851150?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/2605230625906851150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=2605230625906851150&amp;isPopup=true' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/2605230625906851150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/2605230625906851150'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2011/11/j2me-alert-view.html' title='J2ME සඳහා අතුරුමුහුණත් සැකසීම (Alert View)'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-jnqWPHbPl_M/TsaX4TfvV0I/AAAAAAAAB0g/MXv9p7B6u4g/s72-c/1321636444_alert.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-4497494072250236626</id><published>2011-11-18T10:30:00.000+05:30</published><updated>2011-11-18T10:30:45.807+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='MIDP'/><category scheme='http://www.blogger.com/atom/ns#' term='J2ME'/><category scheme='http://www.blogger.com/atom/ns#' term='life cycle'/><title type='text'>J2ME ක්‍රමලේඛණය සඳහා ආරම්භයක්</title><content type='html'>&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;පසුගිය ලිපියේ අපි J2ME සඳහා හැඳින්වීමක් සහ J2ME සමග වැඩකිරීමට සඳහා අවශ්‍යවන මෘදුකාංග පිලිබඳ සොයා බැලුවා. අපි මෙම ලිපියෙන් අදහස් කරන්නේ Java ME යොදාගෙන මෘදුකාංග සංවර්ධනය කිරීමේදී දැනගත යුතු මූලික සංකල්ප පිලිබඳවයි.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මුලින්ම අපි බලමු sun wireless toolkit එක යොදාගෙන J2ME ව්‍යාපෘතියක් ආරම්භ කරන ආකාරය. ඔබගේ පරිගණකයේ සාර්ථකව sun wireless toolkit එක ස්ථාපනය කර ඇත්නම් desktop හි &lt;i&gt;Java(TM) ME Platform SDK&lt;/i&gt; නමින් shortcut එකක් තිබිය යුතුයි. එසේ නොමැතිනම් all programs හි &lt;i&gt;Java(TM) ME Platform SDK &lt;/i&gt;යටතේ එය සොයාගත හැකියි.&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style="color: black; text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;අලුතෙන් ව්‍යාපෘතියක් පටන්ගන්නා අන්දම.&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;File-&amp;gt;New Project යටතේ MIDP Application තෝරා ගන්න.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; color: black; text-align: center;"&gt;&lt;img border="0" height="457" src="http://1.bp.blogspot.com/-dSCJ1faCdxQ/TsTtQCreULI/AAAAAAAABzg/91Y1q83dSQ8/s640/sc1.jpg" width="640" /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;ඉන්පසු ලැබෙන වින්ඩෝ එකෙහි ව්‍යාපෘතිය සඳහා නමක් ලබාදෙන්න. &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; color: black; text-align: center;"&gt;&lt;img border="0" height="393" src="http://3.bp.blogspot.com/-7d2WgTcTSwc/TsTtRB5l7wI/AAAAAAAABzo/aFwOlZOBxyM/s640/sc2.jpg" width="640" /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;Default Platform එක සඳහා පහත screenshot එකේ අන්දමට සැකසුම් ලබාදෙන්න.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; color: black; text-align: center;"&gt;&lt;img border="0" height="418" src="http://2.bp.blogspot.com/-qDwicXBK-xA/TsTtSJDy7jI/AAAAAAAABzw/HTufJuJUCfw/s640/sc3.jpg" width="640" /&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;එවිට සැදෙන නව ව්‍යාපෘතිය සරල midlet එකක්&amp;nbsp; දැන් ඔබට දැකගත හැකිවනු ඇති. අපට අවශ්‍ය අන්දමින් ව්‍යාපෘතිය ඉදිරියට ගෙනයාම සඳහා එහි ස්වයංක්‍රීයව generate වී ඇති &lt;i&gt;hello &lt;/i&gt;පැකේජය මකාදමන්න.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; color: black; text-align: center;"&gt;&lt;img border="0" height="580" src="http://1.bp.blogspot.com/-t_c-F7YpOdg/TsTxkiEYlcI/AAAAAAAABz4/lcSt1GjQSEY/s640/sc4.jpg" width="640" /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;ඉන්පසු ඔබගේ ව්‍යාපෘතිය මත right click කර එහි properties හි ඇති delete කරන ලද midlet එකේ නම midlet suit list එකෙන් ඉවත් කරන්න.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; color: black; text-align: center;"&gt;&lt;img border="0" height="336" src="http://3.bp.blogspot.com/-XyVOxQCHYqo/TsT62gt2f-I/AAAAAAAAB0A/LMC0LluENxo/s640/sc5.jpg" width="640" /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;දැන් ව්‍යාපෘතිය තුල සුදුසු නමකින් අලුත් midlet එකක් සාදාගන්න (new -&amp;gt; midlet ) එවිට පහත අන්දමේ කේත කොටසක් අලුත් midlet class එක තුල&amp;nbsp; ඔබට දැකගත හැකිවනු ඇති.&lt;/span&gt;&lt;/div&gt;&lt;pre class="Java" name="code" style="color: black;"&gt;import javax.microedition.midlet.*;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * @author Kanishka&lt;br /&gt; */&lt;br /&gt;public class MidletGUIDEmo extends MIDlet {&lt;br /&gt;    public void startApp() {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void pauseApp() {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void destroyApp(boolean unconditional) {&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;ul style="color: black;"&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Midlet lifecycle&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අපි මීට පෙර Applet , Thread යනාදියේ life cycle පිලිබඳ සාකච්ඡා කර තිබෙනවා. life cycle&amp;nbsp; එකක් නිරූපණය කරනුයේ &lt;a href="http://en.wikipedia.org/wiki/State_diagram" target="_blank"&gt;state transition diagram &lt;/a&gt;එකකිනි. පහත දැක්වෙන Midlet lifecycle එකෙහි නිරූපණය වනුයේ Midlet එකක ප්‍රධානම state 4 නිරූපණය කරන state transition  diagram එකකි. එනම් midlet lifecycle එකයි.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; color: black; text-align: center;"&gt;&lt;span style="font-size: large;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/-YxfeEPuXFgg/TsUH1KL5BEI/AAAAAAAAB0I/193Lo0RFv3A/s640/midlet_lifecycle.png" width="596" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;midlet එක install කර&amp;nbsp; ඇති ජංගම දුරකතනයට ඇමතුමක් ලැබීමේදී&amp;nbsp; midlet එක pause state එකට පැමිණීම සිදුවේ. midlet එකෙන් exit වූ පසු එය destroyed state එකට පැමිණේ. මෙම states පිලිබඳ වැඩිදුර අවබෝධයක් ඉදිරි අධ්‍යයනයන්හිදි ලබාගත හැකිය.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="color: black; text-align: left;"&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;J2ME යොදාගෙන මෘදුකාංග ලිවීමේදී අනුගමනය කල යුතු රීති&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style="color: black;"&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;සරල බව&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;application එක සරල විය යුතුය. උදා : සංකීර්ණ menus නොයෙදීම. කුඩා කාර්යයක් සිදුකිරීමටත් forms ගනනාවක් අතර යාමට ඉඩ නොතැබීම.&amp;nbsp; inheritance hierarchy එකෙහි height එක අඩු අගයක පවත්වාගැනීම, modules කිහිපයක්&amp;nbsp; ඇත්නම් ඒවා අතර low coupling එකක් පවත්වාගැනීම ආදියයි.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="color: black;"&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Memory භාවිතය අඩුවෙන් පවත්වාගැනීම&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;ජංගම දුරකතන යනු desktop හෝ laptop පරිගණක වැනි ඉහල ධාරිතාවයකින් යුතු RAM එකක් අන්තර්ගත කර ඇති devices නොවේ. ඇතැම් අවස්ථාවල එය මෙගාබයිට් කිහිපයක් විය හැකිය. කෙසේවෙතත් Midlet ධාවනය සඳහා KVM එකට ලැබෙන Memory ප්‍රමාණය එහි RAM එකේ ප්‍රමාණය මෙන් අර්ධයකටත් වඩා අඩුවිය හැකිය. එම නිසා අප විසින් ලියනු ලබන වැඩසටහනෙහි logic එක හා එය හා සම්බන්ද algorithm අඩු memory භාවිතයක් සඳහා සැලසුම් කල යුතුය.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="color: black; text-align: left;"&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Midlet එකෙහි විශාලත්වය කුඩා අගයක පවත්වාගැනීම&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙයද ඉතාවැදගත්වේ. application එකෙහි ප්‍රමානය ඉතාවැඩිනම් එය භාගත කරගැනීමට වැඩි ඩේටා ප්‍රමානයක් වැයවීම සිදුවේ. එමෙන්ම ඇතැම් device හි Midlet එකෙහි ප්‍රමාණය සඳහා සීමා තිබේ උදා : samsung e900 දුරකථනයක midlet එකක් උපරිම 700KB ප්‍රමාණයක් විය යුතුය ඊට වැඩි midlet එහි ස්ථාපනය කල නොහැක.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="color: black; text-align: left;"&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;සරළ GUI(Graphical user interface) පවත්වාගැනීම&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;Desktop , laptop පරිගණක හිදී මෙන් නොව mobile device එකක screen resolution එක කුඩාය. අනෙකතට ඩෙස්ක්ටොප්, ලැප්ටොප් පරිගණකවල සංකීර්ණ ගැෆික් අතුරුමුහුණත් භාවිතා කිරීම සඳහා නිසිආකාර input ක්‍රමවේදයක් ඇත (උදා : mouse pointer, touch input)&amp;nbsp; නමුත් ජංගම දුරකතනයන්හිදී එය සීමා සහිතවේ. දැන් තිබෙන touch input සහිත device වලදී වුනද සංකීර්ණ GUI හැසිරවීමට බාධක තිබේ.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="color: black;"&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Network connection භාවිතය අවම කිරීම&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;දැන් දැන් ජංගම දුරකතන HSPA තාක්ෂණයන් ගෙන් සමන්විතව වෙළඳපොලට ඒමත් data සඳහා දැන් වැයවන මුදලත් ඉතා අඩු අගයක තිබීමත් නිසා යමෙකුට හිතෙන්න පුලුවන් මෙය එතරම් සැලකිල්ලකට ගතයුතු දෙයක් නොවන බව. නමුත් අමතක නොකල යුතු කාරණය නම් බහුතරයක් දුරකතන වේගවත් දත්ත හුවමාරු කිරීමේ තාක්ෂණයන්ගෙන් සමන්විත නොවන බවත් network connection හරහා දත්ත බහුලව හුවමාරු කිරීම දුරකතනයේ බැටරිය විසර්ජනය වීම(discharge)&amp;nbsp; වේගවත් කල හැකි සාධකයකි. එම නිසා network resources හැකිතාක් අඩුවෙන් භාවිතාවන අන්දමට application එක design කල යුතුය. (උදා : &lt;a href="http://javaxclass.blogspot.com/2010/10/java-software-design-patterns-4-proxy.html" target="_blank"&gt;proxy design pattern&lt;/a&gt; එක යෙදීම )&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="color: black;"&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;විශාල processing power එකක් අවශ්‍ය මොඩියුල් server එකක ස්ථාපනය කර ඒවායේ සේවය ලබාගැනීම&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;ජංගම දුරකතනයක ඉතා විශාල processing power එකක් නොමැත. එමනිසා විශාල processing power එක් අවශ්‍ය තැන්හිදී එම මොඩියුලය සර්වර් එකක ස්ථාපනය කිරීම එක් විසඳුමකි. ඉන්පසු එම මොඩියුලයේ සේවාව ලබාගැනීමට web services, Java RMI (remote method invocation) වැනි ක්‍රමවේදයක් භාවිතා කල හැක.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style="color: black;"&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;හැකි සෑම විටම එක දුරකතනයක specification සඳහා සීමා නොවීම&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අප විසින් සැලසුම් කරන වැඩසටහන specific screen resolution එකක් ඉලක්ක කරගෙන සිදුකිරීමෙන් ඇතැම් විට වෙනත් දුරකතන වලදී එම වැඩසටහනෙන් නිසි ප්‍රයෝජනයක් ගත නොහැකි විය හැකිය. එමෙන්ම එක් එක් vendor විසින් ලබාදෙන එම brand එකට ආවේනික API (application programming interface) භාවිතය අඩුකර cldc හා midp specification එකටම හැකි සෑම විටම අනුගත වීම කල හැක.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මේ අන්දමින් තවත් රීති කිහිපයක් ඇත ඒවා අපි ඉදිරි පාඩම්වලදී සුදුසු අවස්ථාවන්හිදී සාකච්ඡා කරමු. මෙම රීතින් ජංගම දුරකතන භාවිත යෙදුම් සැකසීම සඳහා වන අනෙකුත් තාක්ෂණයක්(උදා : Android, iOS) සඳහාද අනුගමනය කල හැකිය.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අපි ඊලඟ පාඩමෙන් J2ME තාක්ෂණය යොදාගෙන ජංගම දුරකතන සඳහා අතුරු මුහුණත් සැකසීම ගැන අධ්‍යයනය කරමු.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-4497494072250236626?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/4497494072250236626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=4497494072250236626&amp;isPopup=true' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/4497494072250236626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/4497494072250236626'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2011/11/j2me.html' title='J2ME ක්‍රමලේඛණය සඳහා ආරම්භයක්'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-dSCJ1faCdxQ/TsTtQCreULI/AAAAAAAABzg/91Y1q83dSQ8/s72-c/sc1.jpg' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-7075633419595490530</id><published>2011-11-05T18:11:00.000+05:30</published><updated>2011-11-18T00:38:55.371+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='KVM'/><category scheme='http://www.blogger.com/atom/ns#' term='J2ME'/><category scheme='http://www.blogger.com/atom/ns#' term='Sun Java Wireless Toolkit'/><category scheme='http://www.blogger.com/atom/ns#' term='SDK'/><title type='text'>Java ME සමහ ජංගම දුරකතන සඳහා මෘදුකාංග නිර්මාණයට අත්පොත් තබමු</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-lcmUZXPjpl0/TrUgN6dPfNI/AAAAAAAABzQ/kHlX05h05Mo/s1600/java-ME.jpg" imageanchor="1" rel="shadowbox" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="182" src="http://3.bp.blogspot.com/-lcmUZXPjpl0/TrUgN6dPfNI/AAAAAAAABzQ/kHlX05h05Mo/s320/java-ME.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;ජංගම දුරකතන සඳහා මෘදුකාංග නිර්මාණය කිරීමට platform බොහොමයක් මේ දිනවල දැකගන්න පුලුවන්. මේ දිනවල බහුල වශයෙන් භාවිතා යෙදුම් නිර්මානය කෙරෙණුයේ Android, iOS මෙහෙයුම් පද්ධති සඳහායි. එමෙන්ම දැනට බිලියන ගනණක් ජංගම දුරකතනයන්හි අන්තර්ගත කර ඇති J2ME තාක්ෂණයත් අමතක කරන්න බැහැ. අද සිට අපි උත්සාහ කරමු Java ME platform එක සඳහා මෘදුකාංග නිර්මාණය කිරීම පිලිබඳව අධ්‍යයනය කිරීමට. මේ පිලිබඳව මුලින්ම J2ME තෝරාගන්නට සිතුවේ ඉදිරියේදී Android වැනි platform පිලිබඳ අධ්‍යයනය කිරීමේදී පහසුවක් වන නිසයි.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;Java ME තාක්ෂණය අඩු memory මට්ටමක් යටතේ ක්‍රියාත්මක වීම සඳහා optimize කරන ලද Java platform එකකි. එමනිසා මෙහිදී ජංගම දුරකතනයේ memory එක භාවිතා කිරීමේදී සැලකිලිමත් විය යුතුයි.&amp;nbsp; මෙහි හරය ලෙස KVM එක හඳුනා ගන්න පුලුවන්. KVM යනු optimize කරන ලද Java Virtual Machine එකකි. පහත දැක්වෙනුයේ J2ME architecture එකයි.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-zvBKWsuET_U/TrUmruhFUQI/AAAAAAAABzY/7VnlT0uRRvs/s1600/j2me_arch.jpg" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="145" src="http://1.bp.blogspot.com/-zvBKWsuET_U/TrUmruhFUQI/AAAAAAAABzY/7VnlT0uRRvs/s400/j2me_arch.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;අපි දැන් බලමු අපිට ආරම්භයේදී අවශ්‍යවන මෘදුකාංග මොනවද කියල.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;1)&amp;nbsp; Java ME SDK&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.oracle.com/technetwork/java/javame/javamobile/download/overview/index.html"&gt;http://www.oracle.com/technetwork/java/javame/javamobile/download/overview/index.html&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;2) Microemu J2ME simulator&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://code.google.com/p/microemu/downloads/list"&gt;http://code.google.com/p/microemu/downloads/list&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;මෙහිදි අත්‍යවශ්‍ය වන්නේ Java ME SDK එක පමනයි. Microemu simulator එකත් තිබේනම් නොයෙක් J2ME වැඩසටහන් පහසුවෙන් run කර බැලිය හැකියි.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;සැයු : &lt;/span&gt;&lt;span style="font-size: large;"&gt;Java ME SDK ස්ථාපනය කිරීමට පෙර ඔබගේ පරිගනකයේ Java SE SDK එක ස්ථාපනය කරගෙන සිටිය යුතුයි. &lt;a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u1-download-513651.html"&gt;මෙතැනින්&lt;/a&gt; පිවිසීමෙන් එය බාගත කරගත හැකිවේ. එය&amp;nbsp; ස්ථාපනය කරන අන්දම මෙම පාඩමෙන් දැනගත හැකිය. &lt;/span&gt;&lt;/div&gt;&lt;div id="uds-searchControl" style="color: black;"&gt;&lt;a href="http://draft.blogger.com/blogger.g?blogID=5285645949711521110" name="uds-search-results"&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="color: black;"&gt;&lt;/span&gt;                            &lt;a href="http://draft.blogger.com/blogger.g?blogID=5285645949711521110" name="7880559233608145484" style="color: black;"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h2 class="entry-title" style="color: black;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://javaxclass.blogspot.com/2010/04/installing-java.html" rel="bookmark"&gt;ප‍රිගණකය තුල ජාවා ස්ථාපනය කිරීම :: Installing Java&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;මෙම පාඩම් මාලාව සඳහා Java &lt;a href="http://javaxclass.blogspot.com/search/label/Basics%20Of%20Java"&gt;මූලික සංකල්ප&lt;/a&gt; පිලිබඳ දැණුම මෙන්ම ජාවා සමග &lt;a href="http://javaxclass.blogspot.com/search/label/OOP"&gt;Object Oriented&lt;/a&gt; සංකල්ප හාවිතය පිලිබදව දැණුමක් අවශ්‍යවේ. මෙහි පෙර ජාවා පාඩම් වෙත පිවිස එම දැණුම ලබාගත හැකිවේ යයි සිතමි.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;J2ME පාඩම් මාලාව යටතේ අපි අධ්‍යයනය කිරීමට බලපොරොත්තු වන්නේ.&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;ul style="color: black;"&gt;&lt;li&gt;Java ME platform හි මූලික සංකල්ප&lt;/li&gt;&lt;li&gt;මූලික GUI components සහ ඒවායේ භාවිතය&lt;/li&gt;&lt;li&gt;Low level UI (Canvas)&lt;/li&gt;&lt;li&gt;LWUIT (Light weight UI Toolkit) &lt;/li&gt;&lt;li&gt;Network Programming&lt;/li&gt;&lt;li&gt;J2ME persistence&lt;/li&gt;&lt;li&gt;Java ME MMAPI&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: black; font-size: large;"&gt;අපි ඊලඟ පාඩමෙන් බලමු &lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;span style="color: black;"&gt;Java ME SDK එක යොදාගෙන J2ME වැඩසටහනක් ලියන අන්දම.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-7075633419595490530?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/7075633419595490530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=7075633419595490530&amp;isPopup=true' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/7075633419595490530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/7075633419595490530'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2011/11/java-me.html' title='Java ME සමහ ජංගම දුරකතන සඳහා මෘදුකාංග නිර්මාණයට අත්පොත් තබමු'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-lcmUZXPjpl0/TrUgN6dPfNI/AAAAAAAABzQ/kHlX05h05Mo/s72-c/java-ME.jpg' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-3424439441882425003</id><published>2011-03-19T09:40:00.004+05:30</published><updated>2011-06-09T20:55:59.824+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java Collections'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Stuctures'/><title type='text'>JAVA තුල  VECTORS භාවිතය</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;JAVA තුල ARRAYS භාවිතය ගැන මීට කලින් කොටස් වලදී මගේ මිත්‍රයා  කණිෂ්ක විස්තර කරා ඔයාලට මතක ඇති.දැන් මම ඒ ARRAYS වලට තරමක් දුරට  ආසන්නතාවයක් තියෙන ඒත් තරමක් වෙනස්  VECTORS පිලිබදව ඔබව තරමක් දුරට  දැනුවත් කරන්නයි හදන්නේ. සමහර විට මේ වන විටත් ඔබට VECTORS පිලිබද යම්  අදහසක් ඇති කියා මා සිතනවා.&lt;/span&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/_yqmPRGYoAFI/TP6D7QRMF1I/AAAAAAAAAAw/JxiRgfMRH2o/s1600/shay_alkalay_stack_1800mm_c.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5548016844969613138" src="http://2.bp.blogspot.com/_yqmPRGYoAFI/TP6D7QRMF1I/AAAAAAAAAAw/JxiRgfMRH2o/s320/shay_alkalay_stack_1800mm_c.jpg" style="float: left; height: 252px; margin: 0pt 10px 10px 0pt; width: 225px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;එහෙනන් අපි ප්‍රථමයෙන්ම බලමු , ඇත්තතටම මේ VECTOR කියල කියන්නෙ මොකක්ද කියලා.සරලව කිව්වොත් , Vector එකක් කියන්නෙ , DYNAMIC( ගතික ) තත්වයේ පවතින ARRAY එකක්.  VECTOR CLASS එක අන්තර්ගත වෙලා තියෙන්නේ JAVA වල  java.util පැකේජය තුලයි. මෙම VECTOR එකට  අවශ්‍යතාවය අනුව ස්වයන්ක්‍රීයව වර්ධනය වෙන්න පුලුවන්.තවද, VECTOR එකකට String Array  සහ int Array වලදි වගේ නිශ්චිත ස්ථීර ඉඩ ප්‍රමාණයක් අවශ්‍ය වන්නේත්  නෑ.කෙසේ හෝ ,Vector එක නිර්මාණය වීමෙන් අනතුරුව,එයට  Elements Add කිරීම හෝ Remove කිරීමට අනුකූලව එහි ඉඩ ප්‍රමාණය වර්ධනය වීමට හෝ හැකිලීමට උදව් වෙනවා.&lt;a name='more'&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;Array එකකදී වගේම ,Integer Index එකක් යොදාගෙන Access කරන්න පුලුවන් Elements/Components මෙහිදී ද අඩන්ගු වෙනවා.අපි දැන් සරලව VECTOR OBJECT එකක් නිර්මාණය කරගන්නා අයුරු සලකා බලමු.&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;ආරම්භක DEFAUT ප්‍රමාණය(size) සමග VECTOR එකක් නිර්මාණය කිරීම&lt;/b&gt;&lt;/span&gt; &lt;pre class="Java" name="code"&gt;Vector v=new Vector();&lt;/pre&gt;&lt;span style="font-size: large;"&gt; &lt;code&gt; &lt;/code&gt;&lt;/span&gt;      &lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;ආරම්භක ප්‍රමාණය සමග VECTOR එකක් නිර්මාණය කිරීම&lt;/b&gt;&lt;/span&gt; &lt;pre class="Java" name="code"&gt;Vector v = new Vector(100)&lt;/pre&gt;&lt;span style="font-size: large;"&gt; මෙහි v වෙනුවට අපට අවශ්‍ය වෙනත් නමක් කැමතිනම් යොදාගත හැකියි.  &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: magenta; font-size: large;"&gt;&lt;b&gt;VECTORS වල METHODS භාවිතා කිරීම&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;VECTOR එකක අවසානයට ELEMENTS ADD කිරීම&lt;/span&gt;&lt;br /&gt;&lt;pre class="Java" name="code"&gt;v.add(s); //  Vector v එකේ අවසානයට s Add කිරීම&lt;/pre&gt;&lt;span style="font-size: large;"&gt;VECTOR එකකින් පිටතට ELEMENT VALUES ලබා ගැනීම&lt;/span&gt;&lt;br /&gt;&lt;pre class="Java" name="code"&gt;v.get(i); //Vector එකේ i වෙනි index එකේ object එක return කරනවා&lt;br /&gt;v.firstElement(); //Vector v එකේ ප්‍රථම element එක return කිරීම &lt;br /&gt;v.lastElement();  //Vector v එකේ අවසාන element එක return කිරීම  &lt;/pre&gt;&amp;nbsp;&lt;span style="font-size: large;"&gt;VECTOR එකේ ELEMENTS ඉවත් කිරීම&lt;/span&gt;&lt;br /&gt;&lt;pre class="Java" name="code"&gt;v.clear(); //Vector v එකේ සියලුම Elements ඉවත් කිරීම&lt;br /&gt;v.remove(i); //Vector v එකේ i index එකේ element එක ඉවත් කර අනෙක්  පහල elements ටික shift කිරීම    &lt;/pre&gt;&amp;nbsp;&lt;span style="font-size: large;"&gt;VECTOR එකේ SIZE එක ලබා ගැනීම.&lt;/span&gt;&lt;br /&gt;&lt;pre class="Java" name="code"&gt;v.size(); //Vector v එකේ තිබෙන මුලු elements ප්‍රමාණය Return කරයි.&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="color: magenta;"&gt;VECTORS භාවිතය සරල නිදසුනක් මගින්&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;දැන් අපි VECTORS වල METHODS  භාවිතය නිදර්ශනයක් මාර්ගයෙන් සරල ලෙස වටහා ගැනීමට උත්සාහ කරමු.පහත දක්වා ඇත්තේ එම JAVA වැඩසටහනයි&lt;/span&gt;.&lt;br /&gt;&lt;pre class="Java" name="code"&gt;/*&lt;br /&gt;# Explaining Java Vector Operations&lt;br /&gt;# Madhawa Udayakantha Gunasekara&lt;br /&gt;# Blog   : http://javaxclass.blogspot.com    &lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;import java.util.*;&lt;br /&gt;&lt;br /&gt;public class VectorOperation {&lt;br /&gt;&lt;br /&gt; public static void main(String[] args) {&lt;br /&gt;&lt;br /&gt; //create a Vector object&lt;br /&gt;  Vector v = new Vector();&lt;br /&gt;&lt;br /&gt; /*&lt;br /&gt; Add elements to Vector (to the end of the vector)&lt;br /&gt; */&lt;br /&gt;  v.add("1");&lt;br /&gt;  v.add("2");&lt;br /&gt;  v.add("3");&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; /*&lt;br /&gt; display elements of Vector by using get method&lt;br /&gt; */&lt;br /&gt; System.out.println("Getting Vector Elements");&lt;br /&gt;        for(int i=0;i&amp;lt;v.size();i++)&lt;br /&gt;          System.out.println(v.get(i));&lt;br /&gt;&lt;br /&gt; System.out.println();&lt;br /&gt;&lt;br /&gt; //displaying first and last elements&lt;br /&gt;  System.out.println("Display only first and last elements");&lt;br /&gt;  System.out.println("First Element: "+v.firstElement());&lt;br /&gt;  System.out.println("Last Element: "+v.lastElement()+"\n");&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; //Remove desired elements(in this example 1st index)&lt;br /&gt;  v.remove(1);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; //Display the remaining elements after remove&lt;br /&gt;  System.out.println("Remaining Elements");&lt;br /&gt;  for(int i=0;i&amp;lt;v.size();i++)&lt;br /&gt;   System.out.println(v.get(i));&lt;br /&gt;&lt;br /&gt; System.out.println();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; //Remove all elements from the vector&lt;br /&gt; v.clear();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; //Adding new list and print&lt;br /&gt;  System.out.println("New Vector List");&lt;br /&gt;   v.add("4");&lt;br /&gt;   v.add("5");&lt;br /&gt;  for(int i=0;i&amp;lt;v.size();i++)&lt;br /&gt;   System.out.println(v.get(i));&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;}&amp;nbsp;&lt;/pre&gt;&lt;br /&gt;&lt;div style="color: magenta;"&gt;&lt;b&gt;&lt;u&gt;&lt;span style="font-size: x-large;"&gt;පැහැදිලි කිරීම&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;ප්‍රථමයෙන්ම මෙහිදී අපගේ program එකට vectors භාවිතා කර ගැනීම උදෙසා java&amp;nbsp; හි ඇති &lt;b&gt;util &lt;/b&gt;පැකේජය යොදාගෙන තිබෙනවා.මෙහිදී &lt;b&gt;PUBLIC CLASS&lt;/b&gt; එක&amp;nbsp; &lt;b&gt;VectorOperation &lt;/b&gt;යැයි ගනිමු.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;17 LINE: &lt;b&gt;v &lt;/b&gt;නැමැති VECTOR OBJECT එක නිර්මාණය කරන ආකාරය දක්වා තිබෙනවා.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;22-24 LINES: VECTOR එකට අවශ්‍ය ELEMENTS ටික(1,2,3 යන ඒවා ) add() method එක අධාරයෙන් ADD කරයි.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;31-33 LINES:මෙහිදී &lt;b&gt;get()&lt;/b&gt; METHOD එක අධාරයෙන් FOR LOOP එකක් යොදා ගෙන VECTOR එකේ ELEMENTS සියල්ල&amp;nbsp; කර ගැනීම සිදු කර ගෙන තිබෙනවා.මෙහිදී VECTOR එකේ ELEMENTS සියල්ල දක්වා එකින් එක යාම සදහා FOR LOOP එක තුල CONDITION එකේ &lt;b&gt;v.size() &lt;/b&gt;යන්න යොදා ගෙන එහි මුලු ELEMENTS ගණන සමග සැසදීමක් කර තිබෙනවා.තවද මෙහිදී &lt;b&gt;get()&lt;/b&gt; METHOD එක ELEMENTS පිටතට ලබා ගැනීමට භාවිතා කර තිබෙනවා. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;41-42 LINES: &lt;b&gt;v.firstElement() &lt;/b&gt;මගින් VECTOR එකේ FIRST ELEMENT එකත්, &lt;b&gt;v.lastElement() &lt;/b&gt;මගින් LAST ELEMENT එකත් පමණක් ලබා ගැනීම සිදු කර තිබෙනවා. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;46 LINE: VECTOR එකේ 1 වැනි INDEX එක පමණක් ඉවත් කර තිබෙනවා. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;50-52 LINES: 1 වැනි INDEX එකේ ELEMENT එක ඉවත් කරායින් පසුව ඉතිරිවන ELEMENT ටික PRINT කර ගැනීමට පෙර විස්තර කල පරිදිම FOR LOOP එකක් යොදා ගෙන තිබේ.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;58 LINE: VECTOR එක තුල පවතින සියලුම ELEMENTS ඉවත් කර VECTOR එක හිස් කිරීම.&lt;/span&gt;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;62-66 LINES: හිස්ව පවතින VECTOR එකට නැවත අලුතින් ELEMENTS ADD කර නැවත පෙර පරිද්දෙන්ම නව ELEMENTS ටික PRINT කර ගැනීම.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;u&gt;OUTPUT එක&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-size: small;"&gt;Compile: javac VectorOperation.java&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-size: small;"&gt;Run : java VectorOperation&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;a href="https://lh4.googleusercontent.com/--Q-lWM31xRo/TYJJU7Eqd-I/AAAAAAAAABI/wMLG7m5E2c4/s1600/java.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="320" src="https://lh4.googleusercontent.com/--Q-lWM31xRo/TYJJU7Eqd-I/AAAAAAAAABI/wMLG7m5E2c4/s640/java.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-3424439441882425003?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/3424439441882425003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=3424439441882425003&amp;isPopup=true' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/3424439441882425003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/3424439441882425003'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2011/03/java-vectors.html' title='JAVA තුල  VECTORS භාවිතය'/><author><name>Madhawa Udayakantha Gunasekara</name><uri>http://www.blogger.com/profile/13212154495724621196</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_yqmPRGYoAFI/TP01NadWgGI/AAAAAAAAAAM/AW9VjjvoKJM/S220/74840_1446184359465_1378848587_31061399_5931711_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_yqmPRGYoAFI/TP6D7QRMF1I/AAAAAAAAAAw/JxiRgfMRH2o/s72-c/shay_alkalay_stack_1800mm_c.jpg' height='72' width='72'/><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-1611879484125638959</id><published>2010-12-29T12:01:00.000+05:30</published><updated>2010-12-29T12:01:22.577+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Practicals'/><title type='text'>ජාවා වැඩසටහනක් සහ PHP වැඩසටහනක් අතර දත්ත හුවමාරු කරන අන්දම</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zymieio832M/TRoasVJoMHI/AAAAAAAABDw/mgytQKVImzk/s1600/ist2_4619850-internet-connection.jpg" imageanchor="1" rel="shadowbox" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/_zymieio832M/TRoasVJoMHI/AAAAAAAABDw/mgytQKVImzk/s320/ist2_4619850-internet-connection.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;එක දිගටම ජාවා සම්බන්ද මූලධර්ම සාකච්ඡා කරපු නිසා අපි මේ පාඩමෙන් ප්‍රායෝගික පැත්තට බර කරුණු ටිකක් අධ්‍යයනය කරමු. මේ වන විට පරිගණක වැඩසටහනක් යනු හුදෙක්ම එක් පරිගණකයකට සීමාවූ දෙයක් නොවන බව අපි කවුරුත් දන්න දෙයක්නේ. බොහොමයක් පරිගණක වැඩසටහන් අන්තර්ජාලයට සම්බන්දව පවතිනවා. උදාහරණ විදියට internet messenger වැඩසටහන් , virus guards, වැනි වැඩසටහන් දක්වන්න පුලුවන්. වයිරස් ගාඩ් එකක් සැලකුවොත් එය අන්තර්ජාලය හා සම්බන්ද වන අවස්ථා තමයි අලුත් virus definition තිබේ දැයි පරීක්‍ෂා කිරීම, &lt;/span&gt;&lt;span style="font-size: large;"&gt;අලුත් virus definition තිබේනම් ඒවා ලබා ගැනීම, සැක සහිත ගොණුවක් අදාල ආයතනයට upload කිරීම වැනි අවස්ථා. මෙහිදී මූලිකවම සිදුවන්නේ දුරස්ථ සර්වරයක ඇති වැඩසටහනක් හා කිසියම් සන්නිවේදනයක් කිරීමයි.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අපි මෙම පාඩමෙන් අධ්‍යයනය කිරීමට යන්නේ ජාවා වැඩසටහනකින් දුරස්ථ වැඩසටහනක් සමග සම්බන්ද වන ආකාරයයි. මාතෘකාවට අනුව අපි දුරස්ථ වැඩසටහන ලෙස යොදාගන්නේ PHP script එකක්. නමුත් මෙම දුරස්ථ වැඩසටහන Python හෝ Perl script එකක් හෝ වෙනත් ඕනෑම server side script එකක් වීමට පුලුවන්.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;කොහොමද දුරස්ථ වැඩසටහනට දත්ත යවන්නේ?&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මේ සඳහා අපි යොදාගන්නේ POST method එකයි.&amp;nbsp; HTTP (Hypertext Transfer Protocol) &lt;/span&gt;&lt;span style="font-size: large;"&gt;එකට අනුව දත්ත හුවමාරු කිරීමේදී GET සහ POST යනුවෙන් ක්‍රම දෙකක් පවතිනවා. ඉන් GET ක්‍රමයට අනුව දත්ත හුවමාරු කිරීමේදී අදාල දත්ත URL එකට අමුණා යැවීම සිදුවනවා එනම් මෙම දත්ත පිටතට දෘෂ්‍යමාන වනවා එම නිසා password සම්බන්ද දත්ත මෙම ක්‍රමයට හුවමාරු කරන්නේ නැහැ. අනික වරකට යැවිය හැකි දත්ත ප්‍රමාණයේ සීමාවක්ද පවතිනවා.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;GET Request එකකට උදාහරණයක්&lt;/span&gt;&lt;/div&gt;&lt;blockquote style="color: black;"&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;http://mydomain.org/process.php?name=Kanishka&amp;amp;passw=hellox&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&lt;span style="font-size: large;"&gt;POST method එකේදී HTTP request එකේ header එක තුල අදාල දත්ත ඇතුලත්කොට යැවීම සිදුකරනවා. මෙම වැඩසටහනේදී අපි යොදාගන්නේ POST method එකයි. මෙම methods ගැන වැඩිදුර තොරතුරු දැනගැනීම සඳහා &lt;a href="http://www.cs.tut.fi/%7Ejkorpela/forms/methods.html" target="_blank"&gt;මෙතනින්&lt;/a&gt; පිවිසෙන්න.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;අපිට මේ සඳහා මීට පෙර ඉගෙනගත් &lt;a href="http://javaxclass.blogspot.com/search/label/Streams" target="_blank"&gt;streams&lt;/a&gt; සම්බන්ද දැනුම වැදගත් වනවා.&amp;nbsp; මෙම වැඩ සටහනෙන් සිදුකරනුයේ දෙන ලද නගරයකට අදාල area code එක ලබාදීමයි.&amp;nbsp; මෙම PHP&amp;nbsp; script එක පහත දැක්වෙනවා.&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;telCodes.php&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;pre class="php" name="code"&gt;&amp;lt;?php&lt;br /&gt;/**      &lt;br /&gt;*Script  : telCodes.php&lt;br /&gt;*Author  : Kanishka Dilshan      &lt;br /&gt;*Purpose : Processing a remote request&lt;br /&gt;*Blog    : http://javaxclass.blogspot.com      &lt;br /&gt;*/ &lt;br /&gt;&lt;br /&gt;$code=$_POST['code'];&lt;br /&gt;$file=fopen("codes.txt","r") or exit("Data file is missing!");&lt;br /&gt;$status=FALSE;&lt;br /&gt;while(!feof($file)){&lt;br /&gt; $str=fgets($file);&lt;br /&gt; if(strpos($str,$code)!==FALSE){&lt;br /&gt;  echo $str;&lt;br /&gt;  $status=TRUE;&lt;br /&gt;  break;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;if($status===FALSE){&lt;br /&gt; echo "code is not found!";&lt;br /&gt;}&lt;br /&gt;fclose($file);&lt;br /&gt;?&amp;gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙම වැඩසටහනේ 09 වන පේලියේදී POST request එක මගින් එවන ලද අදාල දත්තය ලබාගන්නවා එය code නම් parameter එක සමග සම්බන්දව පවතිනවා. ඉන්පසු data file එක විවෘත්ත කර එවන ලද code එක එතුල තිබේදැයි පේලියෙන් පේලිය කියවා පිරික්සා බලනවා. එය හමුවූ විට echo විධානය භාවිතාකර අදාල response එක ලබාදෙනවා.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;දැන් අපි බලමු මෙම PHP Script එකට දත්ත යවා එහි response එක ලබාගැනීමට ලිවිය හැකි ජාවා වැඩසටහන. මෙම ක්‍රියාවලිය සිදුකරගැනීමට අපි මෙහිදී යොදාගන්නේ net පැකේජය තුල ඇතුලත් &lt;a href="http://download.oracle.com/javase/6/docs/api/java/net/URL.html" target="_blank"&gt;URL&lt;/a&gt; සහ &lt;a href="http://download.oracle.com/javase/6/docs/api/java/net/URLConnection.html" target="_blank"&gt;URLConnection&lt;/a&gt; නම් classes දෙකයි. URLConnection එක streams කිහිපයකට සම්බන්ද කරගෙන අදාල ක්‍රියාවලිය සිදුකරගැනීම මෙහිදී මූලික වශයෙන් සිදුවනවා. මෙම ක්‍රියාවලිය Sockets යොදාගෙනද සිදු කිරීම කල හැකියි. අපි ඉදිරි පාඩම් පෙළකින් Sockets පිලිබඳ සාකච්ඡා කරමු.&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Java_POST_Req.java&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;pre class="Java" name="code"&gt;/**      &lt;br /&gt;*class  : Java_POST_Req&lt;br /&gt;*Author : Kanishka Dilshan      &lt;br /&gt;*Purpose: Making a post request to a php script and retrieve the response&lt;br /&gt;*Blog   : http://javaxclass.blogspot.com      &lt;br /&gt;*/ &lt;br /&gt;&lt;br /&gt;import java.net.*;&lt;br /&gt;import java.util.Scanner;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;class Java_POST_Req{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  Scanner sc=new Scanner(System.in);&lt;br /&gt;  System.out.print("Enter the area code or area : ");&lt;br /&gt;  String value=sc.nextLine();&lt;br /&gt;  &lt;br /&gt;  OutputStreamWriter outWrtr=null;&lt;br /&gt;  BufferedReader buffRdr=null;&lt;br /&gt;  try{&lt;br /&gt;   String httpdata=URLEncoder.encode("code","UTF-8")+"="+URLEncoder.encode(value,"UTF-8");&lt;br /&gt;   URL remoteResource=new URL("http://kanishka.hostei.com/telcodes/telCodes.php");&lt;br /&gt;   URLConnection conn=remoteResource.openConnection();&lt;br /&gt;   conn.setConnectTimeout(30*1000);&lt;br /&gt;   conn.setDoOutput(true);&lt;br /&gt;   outWrtr=new OutputStreamWriter(conn.getOutputStream());&lt;br /&gt;   outWrtr.write(httpdata);&lt;br /&gt;   outWrtr.flush();&lt;br /&gt;   &lt;br /&gt;   //read the response&lt;br /&gt;   buffRdr=new BufferedReader(new InputStreamReader(conn.getInputStream()));&lt;br /&gt;   String line;&lt;br /&gt;   while((line=buffRdr.readLine())!= null){&lt;br /&gt;    System.out.println(line);&lt;br /&gt;   }&lt;br /&gt;  }catch(Exception e){&lt;br /&gt;   System.err.println("Error : "+e.getMessage());&lt;br /&gt;  } finally{&lt;br /&gt;   try{&lt;br /&gt;    outWrtr.close();&lt;br /&gt;    buffRdr.close();&lt;br /&gt;   }catch(Exception e){}&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;output :&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_zymieio832M/TRougLOsFoI/AAAAAAAABD0/FWInsTGsiBM/s1600/post_req.png" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;මේ සඳහා ලියන ලද පහත දැක්වෙන applet එක භාවිතා කර මෙහි සිදුවන ක්‍රියාවලිය පිරික්සා බලන්න.&lt;/span&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;object&gt; &lt;applet archive="POSTRequestApplet.jar" code="AppletWindow.class" codebase="http://kanishka.hostei.com/telcodes/" height="120" width="380"&gt; &lt;/applet&gt; &lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;සියලුම කේත පාඩම අවසානයේ අමුණා ඇත.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;අපි දැන් මෙම ජාවා වැඩසටහන පේළිය විස්තර කරගනිමු.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="color: #351c75;"&gt;Line14 - Line 16&lt;/span&gt; :&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙහිදී Scanner object එකක් සාදාගෙන console එකෙන් user input එකක් ලබාගැනීම සිදුවනවා.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #351c75;"&gt;&lt;span style="font-size: large;"&gt;Line21:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙහිදී PHP වැඩසටහනට යැවීමට අවශ්‍ය data සූදානම් කිරීම සිදුකෙරෙනවා. &lt;/span&gt;encode(&lt;span class="string"&gt;"code"&lt;/span&gt;,&lt;span class="string"&gt;"UTF-8"&lt;/span&gt;) &lt;span style="font-size: large;"&gt;මගින් parameter එකද &lt;/span&gt;URLEncoder.encode(value,&lt;span class="string"&gt;"UTF-8"&lt;/span&gt;) &lt;span style="font-size: large;"&gt;මගින් අදාල velue එකද UTF-8 ක්‍රමයට&amp;nbsp; එනම් unicode ක්‍රමයට encode කිරීම සිදුකෙරෙනවා.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #351c75;"&gt;&lt;span style="font-size: large;"&gt;Line22:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;PHP script එකට අදාල URL object එකක් සෑදීම මෙහිදී සිදුකෙරෙනවා.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #351c75;"&gt;&lt;span style="font-size: large;"&gt;Line23:&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අදාල PHP script එක සමග සම්බන්දතාවය නිරූපණය වන URLConnection object එකක් මෙහිදී සකසාගැනීම සිදුකෙරෙනවා.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #351c75;"&gt;&lt;span style="font-size: large;"&gt;Line24:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;connection timeout එක සඳහන් කිරීමෙන් සිදුකර ඇත්තේ අදාල PHP වැඩසටහන සමග connection එකක් ස්ථාපනය කරගැනීමට උපරිම වශයෙන් තත්පර 30ක කාලයක් ලබාදීමයි.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="color: #351c75;"&gt;Line25:&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙමගින්&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: large;"&gt;URLConnection ඔබ්ජෙක්ට් එක මගින් ඒසමග සම්බන්දවී ඇති PHP වැඩසටහනට දත්ත ලිවීම සිදුකරන බව ඇඟවීම සිදුකරනවා.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: #351c75;"&gt;&lt;span style="font-size: large;"&gt;Line26-&lt;/span&gt;&lt;span style="font-size: large;"&gt;Line27&lt;/span&gt;&lt;span style="font-size: large;"&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙහිදී නව OutputStreamWriter object එකක් සකසාගෙන එයට අදාල&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: large;"&gt;URLConnection එකෙහි output stream එක සම්බන්ද කරගෙන සකස් කරගත් HTTP data එම URLConnection එකෙහි output stream එකට ලියනු ලබනවා. එනම් අදාල PHP script එක වෙත යවනු ලබනවා.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: #351c75;"&gt;&lt;span style="font-size: large;"&gt;Line31-&lt;/span&gt;&lt;span style="font-size: large;"&gt;Line34:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;PHP වැඩසටහන අප යවන HTTP request එක process කිරීමෙන් අනතුරුව ලබාදෙන response එක කියවීම මෙහිදී සිදුවනවා. මෙහිදී සකසාගෙන ඇති BufferedReader object එක සම්බන්ද වී ඇත්තේ&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: large;"&gt;URLConnection එකෙහි input stream එකටයි. එනම් PHP වැඩසටහන මගින් ලබාදෙන output එකටයි.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #351c75;"&gt;&lt;span style="font-size: large;"&gt;Line36-&lt;/span&gt;&lt;span style="font-size: large;"&gt;Line42:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මේ පිලිබඳව අපි Streams සම්බන්ද පාඩම් වලදී විස්තරාත්මකව අධ්‍යයනය කර තිබෙන නිසා මෙහිදී එය නැවත විස්තර කිරීම අනවශ්‍යවේ.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: inherit;"&gt;ඉහත දක්වා ඇති source code&amp;nbsp; සහ applet එකට අදාල මූලාශ්‍ර කේත ලබා ගැනීමට පහත දක්වා ඇති link එක භාවිතාකරන්න.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;a href="http://sites.google.com/site/sliitprogramming/sourcecodeforblogs/Java-PHP.zip" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" src="http://i1004.photobucket.com/albums/af166/kdkanishka/blogRes/download.png" /&gt;&lt;/a&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-1611879484125638959?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/1611879484125638959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=1611879484125638959&amp;isPopup=true' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/1611879484125638959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/1611879484125638959'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/12/php.html' title='ජාවා වැඩසටහනක් සහ PHP වැඩසටහනක් අතර දත්ත හුවමාරු කරන අන්දම'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_zymieio832M/TRoasVJoMHI/AAAAAAAABDw/mgytQKVImzk/s72-c/ist2_4619850-internet-connection.jpg' height='72' width='72'/><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-5922445903502489190</id><published>2010-12-18T15:39:00.000+05:30</published><updated>2010-12-18T15:39:01.369+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Streams'/><title type='text'>ජාවා Data Streams භාවිතා කරන අයුරු</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_zymieio832M/TQs5iWdVPYI/AAAAAAAABDI/zeWqXkoLfVE/s1600/1.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/_zymieio832M/TQs5iWdVPYI/AAAAAAAABDI/zeWqXkoLfVE/s320/1.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මේ වනවිට අපි ඉතා වැදගත් stream වර්ග කිහිපයක් ගැන කතාකලා. byte stream, character stream, buffered stream එම stream පිලිබඳ ඔබට මේ වනවිට හොඳ අවබෝධයක් ඇති බව උපකල්පනය කරමින් අපි මෙම පාඩමෙන් සාකච්ඡා කිරීමට යන්නේ data streams පිලිබඳවයි.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;Data stream බාවිතයෙන් stream එකකට&amp;nbsp; primitive data ලිවීමට සහ data stream එකකින් primitive data කියවීමට පුලුවන්. එනම් &lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;int, float, double, long, boolean, char, byte&lt;/span&gt;&lt;/span&gt; මෙන්ම primitive data type එකක් නොවුවද &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;String &lt;/span&gt;සඳහා data streams සහය දක්වනවා.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;a href="http://download.oracle.com/javase/6/docs/api/java/io/DataInputStream.html" target="_blank"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DataInputStream&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; සහ &lt;a href="http://download.oracle.com/javase/6/docs/api/java/io/DataOutputStream.html" target="_blank"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DataOutputStream&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; නම් class වර්ග 2 යොදාගෙන data streams නිරූපණය කෙරෙනවා. එවන් stream එකකින් දත්ත කියවීමට &lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DataInputStream&lt;/span&gt;&lt;/span&gt; ද ඒවාට ලිවීමට &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;DataOutputStream&lt;/span&gt; class එකද යොදාගැනෙනවා.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;හොඳින් මතක තබාගත යුතු කාරණාවක් තමයි සෑම විටම data stream object එකක් construct කල යුත්තේ byte stream එකක් wrap කිරීමෙන් බව. &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;DataInputStream භාවිතාකරන අන්දම...&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙහිදී readInt(), readLong(), readUTF()... යනාදී වශයෙන්&amp;nbsp; primitive data කියවීමට වැදගත් methods ගණනාවක් යොදාගන්න පුලුවන්. Java Documentation එක බැලිමෙන් මෙම methods සවිස්තරාත්මකව දැනගැනීමට පුලුවන්.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;කලින් අධ්‍යයනය කල stream වලදී මෙන් නොව data stream වලදී File එකේ අවසානය (EOF) හඳුනාගැනීමට සෘජු ක්‍රමයක් නැහැ. එම නිසා EOFException එක catch කිරීමෙන් file එකක අවසානය හඳුනාගතයුතු වනවා.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;DataOutputStream භාවිතාකරන අන්දම...&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙහිදී writeInt(), writeLong(), writeUTF()... යනාදී වශ්යෙන් primitive data ලිවීමට වැදගත් වන methods ගනණාවක් තිබෙනවා. මීට පෙර stream වලට පොදුවූ flush(), close() යනාදී methods ද මෙම data stream විසින් inherit කරගෙන සිටිනවා.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අපි දැන් බලමු data stream එකක ක්‍රියාකාරීත්වය වටහාගැනීමට පහසුවන අන්දමේ සරල ජාවා වැඩසටහනක්.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre class="Java" name="code"&gt;/**       &lt;br /&gt;*class  : Test &lt;br /&gt;*Author : Kanishka Dilshan       &lt;br /&gt;*Purpose: Demonstrate how to use data streams  &lt;br /&gt;*Blog   : http://javaxclass.blogspot.com       &lt;br /&gt;*/ &lt;br /&gt;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;class Test {&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  try{&lt;br /&gt;   DataOutputStream dout=new DataOutputStream(&lt;br /&gt;     new BufferedOutputStream(&lt;br /&gt;     new FileOutputStream("myDataFile.dat")));&lt;br /&gt;   &lt;br /&gt;   dout.writeUTF("Kanishka");&lt;br /&gt;   dout.writeFloat(83.23f);&lt;br /&gt;   dout.writeBoolean(true);   &lt;br /&gt;   &lt;br /&gt;   dout.writeUTF("Ravindu");&lt;br /&gt;   dout.writeFloat(98.12f);&lt;br /&gt;   dout.writeBoolean(false); &lt;br /&gt;   &lt;br /&gt;   dout.writeUTF("Madhawa");&lt;br /&gt;   dout.writeFloat(84.65f);&lt;br /&gt;   dout.writeBoolean(false);&lt;br /&gt;   &lt;br /&gt;   dout.close();&lt;br /&gt;   &lt;br /&gt;   DataInputStream din=new DataInputStream(&lt;br /&gt;     new BufferedInputStream(&lt;br /&gt;     new FileInputStream("myDatafile.dat")));&lt;br /&gt;   try{&lt;br /&gt;    while(true){&lt;br /&gt;     String name=din.readUTF();&lt;br /&gt;     float marks=din.readFloat();&lt;br /&gt;     boolean val=din.readBoolean();&lt;br /&gt;     System.out.println(name+"   "+marks+"   "+val);&lt;br /&gt;    }&lt;br /&gt;   }catch(EOFException e){&lt;br /&gt;    System.out.println("End of the data file");&lt;br /&gt;   }finally{&lt;br /&gt;    try{&lt;br /&gt;    &lt;br /&gt;    }catch(Exception e){&lt;br /&gt;     din.close();&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  }catch(Exception e){&lt;br /&gt;   System.err.println(e.getMessage());&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;Output :&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_zymieio832M/TQtTSph5HYI/AAAAAAAABDM/GMyyjnShUR4/s1600/data_stream.png" /&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;ඉහත code එක මගින් සිදුවන ක්‍රියාවලිය වටහා ගැනීමට උත්සාහ කරමු.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="color: #134f5c;"&gt;Line&amp;nbsp; 13,14,15&lt;/span&gt;&lt;/b&gt; මගින් සුදුසු byte stream එකක් output data stream එකක් මගින් wrap කිරීම සිදුකර ඇත.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="color: #134f5c;"&gt;Line 17,18,19&lt;/span&gt;&lt;/b&gt; මෙහිදී කිසියම් පිලිවෙලකට අනුව data stream එකට දත්ත ලිවීම සිදුකර ඇත. එනම් මුලින් String data ද දෙවනුව float data ද අවසන boolean data ද stream එකට එනම් myDataFile.dat file එකට ලියා ඇත.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;b style="color: #134f5c;"&gt;Line 31,31,33&lt;/b&gt; &lt;/span&gt;&lt;span style="font-size: large;"&gt;මෙහිදී &lt;/span&gt;&lt;span style="font-size: large;"&gt;byte stream එකක් input data stream එකක් මගින් wrap කිරීම සිදුකර ඇත. මෙහිදී සාදාගන්නා din object එක හරහා data කියවීම සිදුකෙරේ.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="color: #134f5c;"&gt;Line 34 - Line 48&lt;/span&gt;&lt;/b&gt; මෙහිදී අදාල data file එක අවසන් වනතෙක් කියවීම සිදුකර එම දත්ත console එකෙහි දර්ශනය කරයි.&amp;nbsp; line 35 න් ආරම්භ වන while loop එක infinite loop එකක් ලෙස පෙනුනද file එකේ අවසානයේ &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;EOFException&lt;/span&gt; එකක් throw කරන නිසා file එක අවසානය වනතෙක් පමණක් loop එක ක්‍රියාත්මක වේ.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Streaming වල තවත් වැදගත් කොටසක් වන Standard streams පිලිබඳ අපි මීලඟ පාඩමෙන් සාකච්ඡා කරමු. &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-5922445903502489190?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/5922445903502489190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=5922445903502489190&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/5922445903502489190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/5922445903502489190'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/12/data-streams.html' title='ජාවා Data Streams භාවිතා කරන අයුරු'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_zymieio832M/TQs5iWdVPYI/AAAAAAAABDI/zeWqXkoLfVE/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-497499519725254712</id><published>2010-12-17T16:44:00.001+05:30</published><updated>2010-12-17T16:47:17.891+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Streams'/><title type='text'>Buffered Stream යොදාගෙන File Copy කරන අන්දම</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a href="http://1.bp.blogspot.com/_zymieio832M/TQpORvFzlfI/AAAAAAAABC0/TdCJH43tEcc/s1600/hdd_hard_disk.jpg" imageanchor="1" rel="shadowbox" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zymieio832M/TQpORvFzlfI/AAAAAAAABC0/TdCJH43tEcc/s1600/hdd_hard_disk.jpg" /&gt;&lt;/a&gt;&lt;span style="font-size: large;"&gt;අපි මීට පෙර පාඩමෙන් Buffered stream පිලිබඳව අධ්‍යයනය කලා. අපි මෙම පාඩමෙන් එම සිද්ධාන්ත යොදාගනිමින් File copy කිරීම සඳහා වැඩසටහනක් ලිවීමට උත්සාහ කරමු. මේ සඳහා අපි එම buffered stream classes තුල ඇති read() ,write() , flush(), close() යන methods භාවිතයට ගනිමු. පහත දැක්වෙන්නේ ඒ සඳහා වන කේත කොටසයි.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;FileOperations.java&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;pre class="java" name="code"&gt;/**       &lt;br /&gt;*class  : FileOperations &lt;br /&gt;*Author : Kanishka Dilshan       &lt;br /&gt;*Purpose: Using buffered Streams to copy a file  &lt;br /&gt;*Blog   : http://javaxclass.blogspot.com       &lt;br /&gt;*/ &lt;br /&gt;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;class FileOperations {&lt;br /&gt; public static final int BUFF_SIZE=8*1024*1024;//8 MB&lt;br /&gt; &lt;br /&gt; public boolean fileCopy(String source,String dest){&lt;br /&gt;  boolean isCopied=false;&lt;br /&gt;  BufferedInputStream buffIn=null;&lt;br /&gt;  BufferedOutputStream buffOut=null;&lt;br /&gt;  byte buffer[]=new byte[BUFF_SIZE];&lt;br /&gt;  try{&lt;br /&gt;   buffIn=new BufferedInputStream(new FileInputStream(source),8*1024*1024);&lt;br /&gt;   buffOut=new BufferedOutputStream(new FileOutputStream(dest),8*1024*1024);&lt;br /&gt;   &lt;br /&gt;   int len;&lt;br /&gt;   while((len=buffIn.read(buffer))&amp;gt;0){&lt;br /&gt;    buffOut.write(buffer,0,len);&lt;br /&gt;    buffOut.flush();&lt;br /&gt;   }&lt;br /&gt;   isCopied=true; //file copied successfully&lt;br /&gt;  }catch(FileNotFoundException e){&lt;br /&gt;   System.err.println("Cannot find the file : " + e.getMessage());&lt;br /&gt;  }catch(IOException e){&lt;br /&gt;   System.err.println("IO Error : " + e.getMessage());&lt;br /&gt;  }finally{&lt;br /&gt;   if(buffIn!=null){&lt;br /&gt;    try{&lt;br /&gt;     buffIn.close();&lt;br /&gt;    }catch(IOException e){}&lt;br /&gt;   }   &lt;br /&gt;   if(buffOut!=null){&lt;br /&gt;    try{&lt;br /&gt;     buffOut.close();&lt;br /&gt;    }catch(IOException e){}&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return isCopied;&lt;br /&gt; }&lt;br /&gt;}  &lt;br /&gt;&lt;/pre&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;FileCopy.java&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;class FileCopy{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  if(args.length!=2){&lt;br /&gt;   System.out.println("Incorrect syntax!");&lt;br /&gt;   System.out.println("Use Following Syntax");&lt;br /&gt;   System.out.println("java FileCopy #source_file# #estination_file#");&lt;br /&gt;   System.exit(0);&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  FileOperations fo=new FileOperations();&lt;br /&gt;  boolean status=fo.fileCopy(args[0],args[1]);&lt;br /&gt;  if(status==true){&lt;br /&gt;   System.out.println("File was copied successfully!");&lt;br /&gt;  }else{&lt;br /&gt;   System.out.println("File was not copied");&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අපි දැන් ඉහත වැඩසටහනේ ක්‍රියාකාරීත්වය අධ්‍යයනය කරමු.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b style="color: #134f5c; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Line 11&lt;/b&gt; : මෙහිදී BUFF_SIZE ලෙස 8MB constant අගයක් declare කර ගැනීම සිදුකෙරෙනවා. පසුව&amp;nbsp; buffer එකේ ඇතිදෑ කියවීමට සහ buffer එකට ලිවීමට මෙම constant අගයට අනුව සකසන byte array එකක් යොදාගනු ලබනවා.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b style="color: #134f5c; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Line 12&lt;/b&gt; : &lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;boolean isCopied=false;&lt;/span&gt;&lt;/span&gt; මෙය යොදාගන්නේ file එක සාර්ථකව කොපි වූවාද නැද්ද යන්න return කිරීම සඳහායි.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b style="color: #134f5c; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Line 17&lt;/b&gt; : &lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;byte buffer[]=new byte[BUFF_SIZE];&lt;/span&gt;&lt;/span&gt; මෙහිදී 8MB ප්‍රමාණයකින් යුතු "buffer" නම් byte array එකක් සකසාගනු ලැබේ.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b style="color: #134f5c; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Line 19, 20&lt;/b&gt; : &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;buffIn&lt;/span&gt; සහ &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;buffOut&lt;/span&gt; යනුවෙන් buffered stream  object 2ක් සකසාගනු ලැබේ(class type සලකා බලන්න) මින් buffIn object එක  යොදාගනුයේ source file එක කියවීමටය. එමෙන්ම buffOut යොදාගනුයේ destination  file එකට ලිවීමටය.&lt;/span&gt;&lt;span style="font-size: large;"&gt; මෙම object සැදිමේදී ඒවාට අදාල buffer size එකද විශේෂයෙන් සඳහන් කර ඇත.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="color: #134f5c; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Line 23&lt;/span&gt; :&lt;/span&gt;&lt;/b&gt; මෙම while loop එක තුලදී මූලිකවම කාර්‍යයන් 2 ක් සිදුකෙරේ &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;len=buffIn.read(buffer)&lt;/span&gt; මගින් සිදුකරන්නේ input stream එකෙන් කියවන ලද අගයන් buffer නම් byte array එකේ store කර len නම් int විචල්‍යය තුල කියවන ලද ඩේටා ප්‍රමාණය assign කිරීමයි.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;එහිදී සිදුකරන අනෙකුත් කාර්‍යය නම් එම කියවන ලද ඩේටා ප්‍රමාණය 0 ට වඩා වැඩිද යන්න පරීක්ෂා කර බැලීමයි. කියවන ලද ඩේටා ප්‍රමාණය -1 ලෙස ලැබේ නම් ඉන් ගම්‍ය වනුයේ stream එකෙහි අවසානයට ලඟාවී ඇති බවයි නැතහොත් end of file(EOF) බවයි මෙවිට output stream එකට ලිවීමට අවශ්‍ය නැත. කියවන ලද ඩේටා ප්‍රමාණය 0 නම්ද output stream එකට ලිවීමට අවශ්‍ය නැත.&amp;nbsp; එම නිසා &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;(len=buffIn.read(buffer))&amp;gt;0&lt;/span&gt; නම් &lt;span style="font-family: inherit;"&gt;condition එක true නම් පමණක් while loop එක ක්‍රියාත්මකවේ.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;b style="color: #134f5c; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Line 24&lt;/b&gt; : &lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;buffOut.write(buffer,0,len);&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;nbsp; මෙහිදී සිදුකරනුයේ කියවන ලද ඩේටා (byte array එක) output stream එකට ලිවීමයි. 0 සහ len යන parameters වලින් කියවෙනුයේ එම byte array එකේ 0 සිට len යන අගය දක්වා byte ප්‍රමාණය output stream එකට ලිවිය යුතු බවයි.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;b style="color: #134f5c; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Line 25&lt;/b&gt; : &lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;buffOut.flush();&lt;/span&gt;&lt;/span&gt; මෙහිදී output stream එක clear කිරීම සිදුකරයි.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;b style="color: #134f5c; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Line 27&lt;/b&gt; :&amp;nbsp; while loop එක අවසන් වී මෙම line එකට පැමිණියා යනු file එක සාර්ථකව ලියා අවසන් බවට සහතික විය හැකිය මන්දයත් IO Operations සිදුකර ඇත්තේ exception handle කල හැකි පරිදි try-catch block තුලය. එම නිසා මෙහිදී isCopied නම් විචල්‍යයේ අගය true ලෙස සටහන් කරනු ලැබේ.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: inherit;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;b style="color: #134f5c; font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Line 32&lt;/b&gt;: catch block එක තුලදී සිදුකර ඇති දෑ පහසුවෙන් තේරුම් ගත හැකි නිසා finally block තුලදී කුමක් සිදුවන්නේද යන්න සලකා බලමු. මෙහිදී ඉහත open කරගන්නා ලද input සහ output stream 2ම close කිරීම සිදුකරයි මෙය සිදුකරන්නේ තවත් try-catch block එකක් තුලදීය.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: inherit;"&gt;වැඩසටහන මගින් source file එකේ binary pattern එක ඒ ආකාරයෙන්ම destination file එකේ තිබේ දැයි බැලීමට &lt;a href="http://sourceforge.net/projects/hash-calculator/" target="_blank"&gt;hash calculator&lt;/a&gt; එකක් යොදාගත හැක.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: inherit;"&gt;මෙම ක්‍රියාදාමය වටහාගැනීම සඳහා ඉහත පැහැදිලි කිරීම ප්‍රමාණවත් යයි සිතමි. කෙසේ වෙතත් තවදුරටත් පැහැදිලි කල යුතු යමක් ඇත්නම් ඉදිරිපත් කරන මෙන් ඉල්ලා සිටින්න කැමතියි.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: inherit;"&gt;ඉහත දක්වා ඇති source code එක සහ byte code files ලබා ගැනීමට පහත දක්වා ඇති link එක භාවිතාකරන්න.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="https://sites.google.com/site/sliitprogramming/sourcecodeforblogs/FileCopy.zip" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" src="http://i1004.photobucket.com/albums/af166/kdkanishka/blogRes/download.png" /&gt;&lt;/a&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-497499519725254712?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/497499519725254712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=497499519725254712&amp;isPopup=true' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/497499519725254712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/497499519725254712'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/12/buffered-stream-file-copy.html' title='Buffered Stream යොදාගෙන File Copy කරන අන්දම'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_zymieio832M/TQpORvFzlfI/AAAAAAAABC0/TdCJH43tEcc/s72-c/hdd_hard_disk.jpg' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-1451260947564274036</id><published>2010-12-16T12:32:00.001+05:30</published><updated>2010-12-16T12:41:52.045+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Streams'/><title type='text'>ජාවා වැඩසටහන් තුල Buffered Stream යොදාගන්නා අයුරු</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zymieio832M/TQjbLXprslI/AAAAAAAABCg/1plLiOcDlDg/s1600/bufferimg.jpg" imageanchor="1" rel="shadowbox" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="173" src="http://2.bp.blogspot.com/_zymieio832M/TQjbLXprslI/AAAAAAAABCg/1plLiOcDlDg/s320/bufferimg.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මීට පෙර පාඩම් වලදී අපි Stream පිලිබඳ කතාකලානෙ අපි මෙම පාඩමෙන් තවත් වැදගත් Stream වර්ගයක් වන Buffered Stream පිලිබඳ අධ්‍යයනය කරමු.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;අපි මීට පෙර සලකා බලන ලද FileInputStream , FileReader යන Stream වර්ග සැලකූ විට කෙලින්ම ඒවා යොදාගෙන කිසියම් resource එකක් භාවිතා කිරීමේදී ඒවායෙන් ලබාදෙන සෑම&amp;nbsp; read, write request එකක් සඳහාම අදාල resource එක access කිරීම සිදුවනවා. උදාහරණයක් ලෙසට අපි හිතමු&amp;nbsp; අපිට access කිරීමට අවශ්‍ය resource එක disk file එකක් කියල. එහිදී සෑම read, write request එකකදීම hard disk එකේ අදාල file එක access කිරීම සිදුවනවා. මෙහිදී JVM (Java Virtual Machine) එක විසින් native calls(operating system එකට අදාල low level methods) භාවිතා කිරීම සිදුකෙරෙනවා. එනම් සෑම read, write request එකකටම native calls invoke කිරීමට සිදුවනවා.&amp;nbsp; තවත් උදාහරණයක් ලෙස අපි සලකමු මෙම resource එක client Socket එකක් කියල. එවිට ඉහත ආකාරයේ buffered නොවන Stream එකක් යොදාගත්තොත් සෑම read, write request එකක් සඳහාම network resources භාවිතාවීම සිදුවනවා. කාර්‍යක්ෂමතාව අතින් සැලකීමේදී මෙය හොඳ විසඳුමක් වන්නේ නැහැ.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අපි දැන් Buffered Stream එකකදී සිදුවන ක්‍රියාවලිය කුමක්දැයි සලකා බලමු, Buffered Stream එකකදී read, write යනාදිය සිදුකරනුයේ සෘජුව අදාල resource එක සම්බන්දවී නොවේ "buffer" නම් memory area එකකිනි. මේ සඳහා "buffer" යනුවෙන් හැඳින්වෙන ප්‍රදේශයක් ප්‍රධාන මතකයේ (main memory/RAM) වෙන්ව පවතී. buffer එක හිස්වූ විට පමණක් OS එකට අදාල low level methods invoke වීම සිදුවී "buffer" එක පිරේ(read කරන විටදී). RAM එක සම්බන්ද I/O operations දෘඩ තැටිය සම්බන්ද&amp;nbsp; I/O operations වලට වඩා ඉතා වේගවත් නිසා Buffered stream යොදාගෙන I/O operations සිදුකිරීමේදී උපරිම කාර්‍යක්ෂමතාවයක් ලබාගත හැකිය. දැන් ඔබට වැටහෙනවා ඇති Buffered Stream භාවිතයේදී ඉහත සඳහන් කල Buffered නොවන stream වලදී ඇතිවන ගැටලුවට සාර්ථක විසඳුමක් ලැබී තිබෙන ආකාරය.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;Buffered Stream එකක් සකසාගන්නේ කොහොමද?&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙහිදී සිදුකරන්නේ non buffered stream object එකක් buffered stream object එකක් මගින් wrap කිරීමයි. පහත දැක්වෙන පරිදි මෙය සිදුකල හැකිය.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: large;"&gt;Syntax 01&lt;/span&gt;&lt;br /&gt;&lt;pre class="Java" name="code"&gt;//for input operations&lt;br /&gt;FileReader fileRdr=new FileReader("myFile.txt");&lt;br /&gt;BufferedReader buffRdr=new BufferedReader(fileRdr);&lt;br /&gt;&lt;br /&gt;//for output operations&lt;br /&gt;FileWriter fileWrtr=new FileWriter("myFile2.txt");&lt;br /&gt;BufferedWriter buffWrtr=new BufferedWriter(fileWrtr);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: large;"&gt;Syntax 02 (ඉහත ක්‍රියාවලියම කෙටියෙන්)&lt;/span&gt;&lt;br /&gt;&lt;pre class="Java" name="code"&gt;//for input operations&lt;br /&gt;BufferedReader buffRdr=new BufferedReader(new FileReader("myFile.txt"));&lt;br /&gt;&lt;br /&gt;//for output operations&lt;br /&gt;BufferedWriter buffWrtr=new BufferedWriter(new FileWriter("myFile2.txt"));&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;ඉහත උදාහරණ වලින් පෙන්වා ඇත්තේ character stream handle කිරීම සඳහා buffered stream යොදාගන්නා ආකාරයයි. Byte streams සඳහා &lt;a href="http://download.oracle.com/javase/6/docs/api/java/io/BufferedInputStream.html" target="_blank"&gt;BufferedInputStream&lt;/a&gt; සහ &lt;a href="http://download.oracle.com/javase/6/docs/api/java/io/BufferedInputStream.html" target="_blank"&gt;BufferedOutputStream&lt;/a&gt; යොදාගත හැකිය.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Buffered stream එකක buffer size එක ලබාදෙන්නේ කොහොමද?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;අපි ඉහත දක්වා ඇති උදාහරණ වලදී buffer size එකක් ලබාදී නොමැත constructor එකෙහි ලබාදී ඇත්තේ wrap කිරීමට stream object එක පමණි. එවිට JVM එක විසින් කිසියම් default අගයක් buffer size එක ලෙස තෝරා ගනී. මෙම අගය රඳාපවතිනුයේ OS එක, system configuration එක, Main memory ධාරිතාවය වැනි සාධක මතය. නමුත් අපට buffer size එක අපේ අභිමතය පරිදි ලබාදිය යුතු නම් buffered input සහ buffered output යන stream දෙවර්ගයටම buffer size ලබාදිය හැකිය. පහත දැක්වෙන අන්දමට එය සිදුකල හැකිය.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: large;"&gt;Syntax 03&lt;/span&gt;&lt;br /&gt;&lt;pre class="Java" name="code"&gt;BufferedReader bfrRdr=new BufferedReader(new FileReader("myFile.txt",512*1024);&lt;br /&gt;BufferedWriter bfrRdr=new BufferedWriter(new FileWriter("myFile2.txt",512*1024);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: inherit;"&gt;ඉහත උදාහරණයේදී Buffer size එක ලෙස 512KB ප්‍රමාණයක් ලබාදී ඇත මෙම අගය bytes වලින් ලබාදිය යුතු නිසා &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(512*1024)&lt;/span&gt; ලෙස ලබාදී ඇත.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;Buffered Stream එකක් flush කිරීම යනු කුමක්ද?&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;ඇතැම් වැදගත් අවස්ථා වලදී buffer එකේ ඇති තොරතුරු resource එකට ලිවීමට සිදුවන අවස්ථා පැමිණේ. මෙවැනි අවස්ථාවකදී flush නම් ක්‍රියාවලිය සිදුකරයි. මේ සඳහා &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;flush()&lt;/span&gt; නම් විධානය භාවිතා කරයි.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Non buffered stream සඳහාද flush() method එක පවතී. නමුත් ඒවායේදී flush() කිරීම මගින් කිසිම&amp;nbsp; ප්‍රතිඵලයක් නොමැත. එයට හේතුව ඔබට මේ වනවිට සිතාගත හැක. Non buffered stream වලදී flush කිරීමට memory area එකක් නොමැති වීම මීට හේතුවයි.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Java 1.6 Documentation එකෙහි දැක්වෙන පරිදි Buffered Stream සඳහා අදාල වන constructors සහ methods පහත දක්වා ඇත.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;hr /&gt;&lt;h2&gt;Class BufferedInputStream&lt;/h2&gt;&lt;table border="1" cellpadding="3" cellspacing="0" summary=""&gt;&lt;tbody&gt;&lt;tr bgcolor="#ccccff" class="TableHeadingColor"&gt;&lt;th align="left" colspan="2"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Constructor Summary&lt;/b&gt;&lt;/span&gt;&lt;/th&gt; &lt;/tr&gt;&lt;tr bgcolor="white" class="TableRowColor"&gt; &lt;td&gt;&lt;code&gt;&lt;b&gt;&lt;a href="http://draft.blogger.com/post-edit.g?blogID=5285645949711521110&amp;amp;postID=1451260947564274036"&gt;BufferedInputStream&lt;/a&gt;&lt;/b&gt;(&lt;a href="http://draft.blogger.com/post-edit.g?blogID=5285645949711521110&amp;amp;postID=1451260947564274036" title="class in java.io"&gt;InputStream&lt;/a&gt;&amp;nbsp;in)&lt;/code&gt;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Creates a &lt;code&gt;BufferedInputStream&lt;/code&gt;  and saves its  argument, the input stream  &lt;code&gt;in&lt;/code&gt;, for later use.&lt;/td&gt; &lt;/tr&gt;&lt;tr bgcolor="white" class="TableRowColor"&gt; &lt;td&gt;&lt;code&gt;&lt;b&gt;&lt;a href="http://draft.blogger.com/post-edit.g?blogID=5285645949711521110&amp;amp;postID=1451260947564274036"&gt;BufferedInputStream&lt;/a&gt;&lt;/b&gt;(&lt;a href="http://draft.blogger.com/post-edit.g?blogID=5285645949711521110&amp;amp;postID=1451260947564274036" title="class in java.io"&gt;InputStream&lt;/a&gt;&amp;nbsp;in,                     int&amp;nbsp;size)&lt;/code&gt;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Creates a &lt;code&gt;BufferedInputStream&lt;/code&gt;  with the specified buffer size,  and saves its  argument, the input stream  &lt;code&gt;in&lt;/code&gt;, for later use.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border="1" cellpadding="3" cellspacing="0" summary=""&gt;&lt;tbody&gt;&lt;tr bgcolor="#ccccff" class="TableHeadingColor"&gt;&lt;th align="left" colspan="2"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Method Summary&lt;/b&gt;&lt;/span&gt;&lt;/th&gt; &lt;/tr&gt;&lt;tr bgcolor="white" class="TableRowColor"&gt; &lt;td align="right" valign="top" width="1%"&gt;&lt;code&gt;&amp;nbsp;int&lt;/code&gt;&lt;/td&gt; &lt;td&gt;&lt;code&gt;&lt;b&gt;&lt;a href="http://draft.blogger.com/post-edit.g?blogID=5285645949711521110&amp;amp;postID=1451260947564274036"&gt;available&lt;/a&gt;&lt;/b&gt;()&lt;/code&gt;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Returns an estimate of the number of bytes that can be read (or  skipped over) from this input stream without blocking by the next  invocation of a method for this input stream.&lt;/td&gt; &lt;/tr&gt;&lt;tr bgcolor="white" class="TableRowColor"&gt; &lt;td align="right" valign="top" width="1%"&gt;&lt;code&gt;&amp;nbsp;void&lt;/code&gt;&lt;/td&gt; &lt;td&gt;&lt;code&gt;&lt;b&gt;&lt;a href="http://draft.blogger.com/post-edit.g?blogID=5285645949711521110&amp;amp;postID=1451260947564274036"&gt;close&lt;/a&gt;&lt;/b&gt;()&lt;/code&gt;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Closes this input stream and releases any system resources   associated with the stream.&lt;/td&gt; &lt;/tr&gt;&lt;tr bgcolor="white" class="TableRowColor"&gt; &lt;td align="right" valign="top" width="1%"&gt;&lt;code&gt;&amp;nbsp;void&lt;/code&gt;&lt;/td&gt; &lt;td&gt;&lt;code&gt;&lt;b&gt;&lt;a href="http://draft.blogger.com/post-edit.g?blogID=5285645949711521110&amp;amp;postID=1451260947564274036"&gt;mark&lt;/a&gt;&lt;/b&gt;(int&amp;nbsp;readlimit)&lt;/code&gt;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;See the general contract of the &lt;code&gt;mark&lt;/code&gt;  method of &lt;code&gt;InputStream&lt;/code&gt;.&lt;/td&gt; &lt;/tr&gt;&lt;tr bgcolor="white" class="TableRowColor"&gt; &lt;td align="right" valign="top" width="1%"&gt;&lt;code&gt;&amp;nbsp;boolean&lt;/code&gt;&lt;/td&gt; &lt;td&gt;&lt;code&gt;&lt;b&gt;&lt;a href="http://draft.blogger.com/post-edit.g?blogID=5285645949711521110&amp;amp;postID=1451260947564274036"&gt;markSupported&lt;/a&gt;&lt;/b&gt;()&lt;/code&gt;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Tests if this input stream supports the &lt;code&gt;mark&lt;/code&gt;   and &lt;code&gt;reset&lt;/code&gt; methods.&lt;/td&gt; &lt;/tr&gt;&lt;tr bgcolor="white" class="TableRowColor"&gt; &lt;td align="right" valign="top" width="1%"&gt;&lt;code&gt;&amp;nbsp;int&lt;/code&gt;&lt;/td&gt; &lt;td&gt;&lt;code&gt;&lt;b&gt;&lt;a href="http://draft.blogger.com/post-edit.g?blogID=5285645949711521110&amp;amp;postID=1451260947564274036"&gt;read&lt;/a&gt;&lt;/b&gt;()&lt;/code&gt;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;See  the general contract of the &lt;code&gt;read&lt;/code&gt;  method of &lt;code&gt;InputStream&lt;/code&gt;.&lt;/td&gt; &lt;/tr&gt;&lt;tr bgcolor="white" class="TableRowColor"&gt; &lt;td align="right" valign="top" width="1%"&gt;&lt;code&gt;&amp;nbsp;int&lt;/code&gt;&lt;/td&gt; &lt;td&gt;&lt;code&gt;&lt;b&gt;&lt;a href="http://draft.blogger.com/post-edit.g?blogID=5285645949711521110&amp;amp;postID=1451260947564274036"&gt;read&lt;/a&gt;&lt;/b&gt;(byte[]&amp;nbsp;b,      int&amp;nbsp;off,      int&amp;nbsp;len)&lt;/code&gt;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Reads bytes from this byte-input stream into the specified byte array,  starting at the given offset.&lt;/td&gt; &lt;/tr&gt;&lt;tr bgcolor="white" class="TableRowColor"&gt; &lt;td align="right" valign="top" width="1%"&gt;&lt;code&gt;&amp;nbsp;void&lt;/code&gt;&lt;/td&gt; &lt;td&gt;&lt;code&gt;&lt;b&gt;&lt;a href="http://draft.blogger.com/post-edit.g?blogID=5285645949711521110&amp;amp;postID=1451260947564274036"&gt;reset&lt;/a&gt;&lt;/b&gt;()&lt;/code&gt;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;See the general contract of the &lt;code&gt;reset&lt;/code&gt;  method of &lt;code&gt;InputStream&lt;/code&gt;.&lt;/td&gt; &lt;/tr&gt;&lt;tr bgcolor="white" class="TableRowColor"&gt; &lt;td align="right" valign="top" width="1%"&gt;&lt;code&gt;&amp;nbsp;long&lt;/code&gt;&lt;/td&gt; &lt;td&gt;&lt;code&gt;&lt;b&gt;&lt;a href="http://draft.blogger.com/post-edit.g?blogID=5285645949711521110&amp;amp;postID=1451260947564274036"&gt;skip&lt;/a&gt;&lt;/b&gt;(long&amp;nbsp;n)&lt;/code&gt;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;See the general contract of the &lt;code&gt;skip&lt;/code&gt;  method of &lt;code&gt;InputStream&lt;/code&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h2&gt;Class BufferedOutputStream&lt;/h2&gt;&lt;table border="1" cellpadding="3" cellspacing="0" summary=""&gt;&lt;tbody&gt;&lt;tr bgcolor="#ccccff" class="TableHeadingColor"&gt;&lt;th align="left" colspan="2"&gt;&lt;span style="font-size: small;"&gt; &lt;b&gt;Constructor Summary&lt;/b&gt;&lt;/span&gt;&lt;/th&gt; &lt;/tr&gt;&lt;tr bgcolor="white" class="TableRowColor"&gt; &lt;td&gt;&lt;code&gt;&lt;b&gt;&lt;a href="http://draft.blogger.com/post-edit.g?blogID=5285645949711521110&amp;amp;postID=1451260947564274036"&gt;BufferedOutputStream&lt;/a&gt;&lt;/b&gt;(&lt;a href="http://draft.blogger.com/post-edit.g?blogID=5285645949711521110&amp;amp;postID=1451260947564274036" title="class in java.io"&gt;OutputStream&lt;/a&gt;&amp;nbsp;out)&lt;/code&gt;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Creates a new buffered output stream to write data to the  specified underlying output stream.&lt;/td&gt; &lt;/tr&gt;&lt;tr bgcolor="white" class="TableRowColor"&gt; &lt;td&gt;&lt;code&gt;&lt;b&gt;&lt;a href="http://draft.blogger.com/post-edit.g?blogID=5285645949711521110&amp;amp;postID=1451260947564274036"&gt;BufferedOutputStream&lt;/a&gt;&lt;/b&gt;(&lt;a href="http://draft.blogger.com/post-edit.g?blogID=5285645949711521110&amp;amp;postID=1451260947564274036" title="class in java.io"&gt;OutputStream&lt;/a&gt;&amp;nbsp;out,                      int&amp;nbsp;size)&lt;/code&gt;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Creates a new buffered output stream to write data to the   specified underlying output stream with the specified buffer   size.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table border="1" cellpadding="3" cellspacing="0" summary=""&gt;&lt;tbody&gt;&lt;tr bgcolor="#ccccff" class="TableHeadingColor"&gt;&lt;th align="left" colspan="2"&gt;&lt;span style="font-size: small;"&gt; &lt;b&gt;Method Summary&lt;/b&gt;&lt;/span&gt;&lt;/th&gt; &lt;/tr&gt;&lt;tr bgcolor="white" class="TableRowColor"&gt; &lt;td align="right" valign="top" width="1%"&gt;&lt;code&gt;&amp;nbsp;void&lt;/code&gt;&lt;/td&gt; &lt;td&gt;&lt;code&gt;&lt;b&gt;&lt;a href="http://draft.blogger.com/post-edit.g?blogID=5285645949711521110&amp;amp;postID=1451260947564274036"&gt;flush&lt;/a&gt;&lt;/b&gt;()&lt;/code&gt;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Flushes this buffered output stream.&lt;/td&gt; &lt;/tr&gt;&lt;tr bgcolor="white" class="TableRowColor"&gt; &lt;td align="right" valign="top" width="1%"&gt;&lt;code&gt;&amp;nbsp;void&lt;/code&gt;&lt;/td&gt; &lt;td&gt;&lt;code&gt;&lt;b&gt;&lt;a href="http://draft.blogger.com/post-edit.g?blogID=5285645949711521110&amp;amp;postID=1451260947564274036"&gt;write&lt;/a&gt;&lt;/b&gt;(byte[]&amp;nbsp;b,       int&amp;nbsp;off,       int&amp;nbsp;len)&lt;/code&gt;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Writes &lt;code&gt;len&lt;/code&gt; bytes from the specified byte array   starting at offset &lt;code&gt;off&lt;/code&gt; to this buffered output stream.&lt;/td&gt; &lt;/tr&gt;&lt;tr bgcolor="white" class="TableRowColor"&gt; &lt;td align="right" valign="top" width="1%"&gt;&lt;code&gt;&amp;nbsp;void&lt;/code&gt;&lt;/td&gt; &lt;td&gt;&lt;code&gt;&lt;b&gt;&lt;a href="http://draft.blogger.com/post-edit.g?blogID=5285645949711521110&amp;amp;postID=1451260947564274036"&gt;write&lt;/a&gt;&lt;/b&gt;(int&amp;nbsp;b)&lt;/code&gt;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Writes the specified byte to this buffered output stream.&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&amp;nbsp; &lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;ඉහත දැක්වෙන methods භාවිතාකරන අන්දම හොඳින් වටහාගැනීමෙන් වඩාත් කාර්‍යක්ශම වැඩසටහන් ලිවිය හැකිය.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අපි මීලඟ පාඩමෙන් Buffered Stream යොදාගෙන ප්‍රායෝගික ජාවා වැඩසටහනක් ලියන අන්දම බලමු.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-1451260947564274036?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/1451260947564274036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=1451260947564274036&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/1451260947564274036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/1451260947564274036'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/12/buffered-stream.html' title='ජාවා වැඩසටහන් තුල Buffered Stream යොදාගන්නා අයුරු'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_zymieio832M/TQjbLXprslI/AAAAAAAABCg/1plLiOcDlDg/s72-c/bufferimg.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-8144120854189850648</id><published>2010-12-08T20:22:00.000+05:30</published><updated>2010-12-08T20:22:32.954+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Streams'/><title type='text'>ජාවා Byte Streams භාවිතා කරන අයුරු</title><content type='html'>&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;කලින් පාඩමෙන් අපි කතාකලා ජාවා stream පිළිබඳව.&amp;nbsp; දැන් අපි බලමු byte stream භාවිතා කරන්නේ කුමනාකාරයෙන්ද කියල. Byte stream එකක් input / output operations සිදු කරනුයේ 8-bit අකාරයටයි.&amp;nbsp; එනම් character streams වලදී මෙන් නොව මෙහිදී characters වෙනුවට raw bytes කියවීම සහ ලිවීම සිදුකෙරේ. එම නිසා data file copy කිරීම යනාදී වැඩ වලට යොදාගත යුත්තේ byte stream වේ. නමුත් භාවිතාවන data, character වලින් යුක්ත නම් character streams වලට යෑම වඩාත් ඵලදායීවේ. &lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අහත දැක්වෙන ආකාරයට ජාවා වැඩසටහනක් තුලදී byte streams යොදාගත හැකිය. මෙහිදී I/O Stream නිරූපණය කිරීම සඳහාjava.io පැකේජයේ ඇති FileInputStream සහ FileOutputStream class යොදාගැනේ.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre class="Java" name="code"&gt;/**      &lt;br /&gt;*class  : ByteOperations&lt;br /&gt;*Author : Kanishka Dilshan      &lt;br /&gt;*Purpose: Showing how to use byte streams&lt;br /&gt;*Blog   : http://javaxclass.blogspot.com      &lt;br /&gt;*/ &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;public class ByteOperations{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  FileInputStream fileInpStrm=null;&lt;br /&gt;  FileOutputStream fileOutStrm=null;&lt;br /&gt;  try{&lt;br /&gt;   fileInpStrm=new FileInputStream("myDataFile.dat");&lt;br /&gt;   fileOutStrm=new FileOutputStream("newDataFile.dat");&lt;br /&gt;   int tmp;&lt;br /&gt;   while((tmp=fileInpStrm.read())!=-1){&lt;br /&gt;    fileOutStrm.write(tmp);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;  }catch(FileNotFoundException e){&lt;br /&gt;   System.err.println("File NOt Found : " + e.getMessage());&lt;br /&gt;  }catch(IOException e){&lt;br /&gt;   System.err.println("IO Exception : " + e.getMessage());&lt;br /&gt;  }finally {&lt;br /&gt;   try{&lt;br /&gt;    if(fileInpStrm!=null){&lt;br /&gt;     fileInpStrm.close();&lt;br /&gt;    }&lt;br /&gt;      }catch(IOException e){}&lt;br /&gt;   try{   &lt;br /&gt;    if(fileOutStrm!=null){&lt;br /&gt;     fileOutStrm.close();&lt;br /&gt;    }&lt;br /&gt;   }catch(IOException e){}&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙහිදී සිදුවනුයේ myDataFile.dat file එකේ clone එකක් newDataFile.dat ලෙසින් සෑදීමයි. &lt;a href="http://javaxclass.blogspot.com/2010/12/io-streams-java-io-streams.html" target="_blank"&gt;පෙර&lt;/a&gt; පරිදිම මෙහිදීද open කරන ලද ස්ට්‍රීම් close කර තිබේ.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;FileInputStream යනු InputStream යන abstract class එකෙහි child class එකක් වේ.&amp;nbsp; ඒම class අතර සම්බන්දය පහත පරිදි වේ.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="113" src="http://3.bp.blogspot.com/_zymieio832M/TP-a1PIeULI/AAAAAAAABCY/5SCPT27-XjA/s1600/Diagram3.png" width="320" /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;තවත් ස්ට්‍රීම් වර්ග හා ඒවා යොදාගන්නා ආකරයන් පිලිබඳව අපි ඉදිරි පාඩම් වලදී සාකච්ඡා කරමු. &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-8144120854189850648?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/8144120854189850648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=8144120854189850648&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/8144120854189850648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/8144120854189850648'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/12/byte-streams.html' title='ජාවා Byte Streams භාවිතා කරන අයුරු'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_zymieio832M/TP-a1PIeULI/AAAAAAAABCY/5SCPT27-XjA/s72-c/Diagram3.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-702467149986859578</id><published>2010-12-07T18:14:00.003+05:30</published><updated>2010-12-07T19:47:08.795+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Streams'/><title type='text'>ජාවා තුල යෙදෙන I/O Streams යනු මොනවාද | Java I/O Streams</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zymieio832M/TP3e_C5uupI/AAAAAAAABB8/Khtla_A_pIY/s1600/stream.jpg" imageanchor="1" rel="shadowbox" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zymieio832M/TP3e_C5uupI/AAAAAAAABB8/Khtla_A_pIY/s1600/stream.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;සියලුම පරිගණක භාෂාවන් හි Input සහ Output ක්‍රියාවලීන් සිදුකර ගැනීමට කිසියම් යාන්ත්‍රණයක් පවතිනවා. උදාහරණයක් වශයෙන් කිසියම් calculation එකක් සඳහා ලියන ලද පරිගණක&amp;nbsp; වැඩසටහනකට දත්ත input කිරීමට සහ එහි ප්‍රතිඵලය පිටතට ලබාදීම සඳහා යොදාගන්නා ක්‍රම සැලකිය හැකිය.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;ජාවා වැඩසටහන් තුලදී  Input සහ Output ක්‍රියාවලීන් සිදුකරගැනීමට විවිධ ක්‍රම පවතී ඒවා නම් Streams, Files, Channels යනාදී වශයෙනි. අපි මෙහිදී වැඩිදුරටත් සාකච්ඡා කරනුයේ ජාවා තුල යෙදෙන Streams පිලිබඳවයි.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;ස්ට්‍රීම්(Streams) මගින් විවිධ Input සහ Output Sources(ප්‍රභව) නියෝජනය වීම සිදුකෙරේ. එනම් පරිගණක ක්‍රමලේඛකයාට streams භාවිතයෙන් input / output sources සමග සන්නිවේදනය කල හැකිය.&amp;nbsp; උදාහරණ ලෙස Disk Files, Sockets, Devices සහ වෙනත් Process එකක් වුවත් විය හැකිය.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="color: black; font-size: large;"&gt;අපි දැන් බලමු ස්ට්‍රීම් එකක ස්වභාවය කුමක්ද කියල. ස්ට්‍රීම් එකක් කිව්වම අපිට එකපාරට මතක් වෙන්නෙ ගලාගෙන යන ස්වභාවය නේ. ඒ වගේම තමයි ස්ට්‍රීම් එකක තිබෙන්නෙ කිසියම්&amp;nbsp; දත්ත ප්‍රවාහයක් ජාව තුල ස්ට්‍රීම් භාවිතයේදී එම ප්‍රවාහය &lt;a href="http://javaxclass.blogspot.com/2010/04/basic-data-types-of-java.html" target="_blank"&gt;මූලික දත්ත&lt;/a&gt; ආකාරයෙන් පැවතිය හැකියි නැතිනම් එම ප්‍රවාහය &lt;a href="http://javaxclass.blogspot.com/2010/05/java-ii-objects.html" target="_blank"&gt;Object&lt;/a&gt; data ප්‍රවාහයක් උනත් විය හැකියි.&amp;nbsp; Stream එකක පවතින්නේ data sequence එකක්.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="color: black; font-size: large;"&gt;උදා: Binary stream එකක්&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;span style="color: black; font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;1000100010000000000100&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;පරිගණන වැඩසටහන් මගින් Data Source එකක් ප්‍රවේශනය කිරීමේදී(Access) සිදුවන ක්‍රියාවලිය පහත පරිදි රුපමය වශයෙන් පෙන්විය හැකිය. &lt;/span&gt;&lt;br /&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;Input Stream&amp;nbsp; එකක් ක්‍රියාකරන අයුරු&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_zymieio832M/TP30oLz5jVI/AAAAAAAABCA/EX49WCaU8iQ/s1600/InputStream.png" /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;Output Stream&amp;nbsp; එකක් ක්‍රියාකරන අයුරු&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_zymieio832M/TP30pAY3K0I/AAAAAAAABCE/jb_y767tTYc/s1600/OutputStream.png" /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;*කහ පාටින් දැක්වෙන්නේ Stream එකයි.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;ඇතැම් ස්ට්‍රීම් එතුලින් දත්ත ගමන් කරවීමට සහය දක්වන අතර(උදා : &lt;/span&gt;&lt;span class="FrameItemFont" style="font-size: large;"&gt;&lt;b&gt;&lt;a href="http://download.oracle.com/javase/1.4.2/docs/api/java/io/FileInputStream.html" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" title="class in java.io"&gt;FileInputStream&lt;/a&gt;&lt;/b&gt;,&lt;/span&gt;&lt;span style="font-size: large;"&gt;) ඇතැම් ඒවා එතුලින් යන දත්ත වෙනත් ආකාරයකට/ස්වභාවයකට පත්කරනු ලබයි(උදා: &lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;a href="http://download.oracle.com/javase/1.4.2/docs/api/java/util/zip/GZIPInputStream.html" target="_balnk" title="class in java.util.zip"&gt;GZIPInputStream&lt;/a&gt;, &lt;/b&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;a href="http://download.oracle.com/javase/1.4.2/docs/api/java/util/zip/DeflaterOutputStream.html" target="_balnk" title="class in java.util.zip"&gt;DeflaterOutputStream&lt;/a&gt;&lt;/b&gt;).&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;Streams තුලින් යවන්නාවූ දත්ත වල ස්වභාවය අනුව මූලික වශයෙන් ස්‍ර්ටීම් වර්ග 2ක් හඳුනාගත හැකිය.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;ul style="color: black;"&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Character Streams&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;මෙමගින් මිනිසාට කියවිය හැකි ආකාරයේ දත්ත ගලා යාම සිදුකෙරේ(උදා : ඉලක්කම්, අකුරු යනාදිය)&lt;/span&gt;&lt;/div&gt;&lt;ul style="color: black;"&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Byte Streams&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;මේවායේ යවනුයේ machine-formatted ආකාරයේ දත්තවේ. මේවා පවතිනුයේ ද්වීමය(binary) ආකාරයෙනි(උදා:110110).&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;අදාලතාවය අනුව සුදුසු Stream ආකාරය තෝරාගත යුතුය. අනෙකුත් සියලුම ස්ට්‍රීම් වර්ගයන්හි පදනම වනුයේ Byte Stream වේ.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;සුදුසු Stream එක තෝරාගන්නේ කෙසේද?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;කිසියම් data source එකක් low-level මට්ටමෙන් ප්‍රවේශනය කිරීමට අවශ්‍ය විට byte stream එක සුදුසුය.උදා: data file copy කිරීම, Audio files edit කිරීම යනාදියේදී.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Data source එක text data වලින් සමන්විත නම් සහ text manipulations&amp;nbsp; අවශ්‍ය විටදී character streams භාවිතාකල හැකිය.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;ජාවා වැඩසටහනක් තුල මෙම ස්ට්‍රීම් භාවිතා වන්නේ කේසේදැයි &lt;/span&gt;&lt;span style="font-size: large;"&gt;අපි දැන් බලමු.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt;මුලින්ම බලමු character stream කියවීමට FileReader යොදාගන්නා අයුරු.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;pre class="java" name="code"&gt;/**      &lt;br /&gt;*class  : CharOperations&lt;br /&gt;*Author : Kanishka Dilshan      &lt;br /&gt;*Purpose: Showing how to use character streams&lt;br /&gt;*Blog   : http://javaxclass.blogspot.com      &lt;br /&gt;*/ &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;public class CharOperations{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  FileReader fileRdr=null;&lt;br /&gt;  FileWriter fileWr=null;&lt;br /&gt;  try{&lt;br /&gt;   fileRdr=new FileReader("myCharFile.txt");&lt;br /&gt;   fileWr=new FileWriter("newCharFile.txt");&lt;br /&gt;   int tmp;&lt;br /&gt;   while((tmp=fileRdr.read())!=-1){&lt;br /&gt;    fileWr.write(tmp);&lt;br /&gt;   }&lt;br /&gt;  }catch(FileNotFoundException e){&lt;br /&gt;   System.err.println("File NOt Found : " + e.getMessage());&lt;br /&gt;  }catch(IOException e){&lt;br /&gt;   System.err.println("IO Exception : " + e.getMessage());&lt;br /&gt;  }finally {&lt;br /&gt;   try{&lt;br /&gt;    if(fileRdr!=null){&lt;br /&gt;     fileRdr.close();&lt;br /&gt;    }&lt;br /&gt;      }catch(IOException e){}&lt;br /&gt;   try{   &lt;br /&gt;    if(fileWr!=null){&lt;br /&gt;     fileWr.close();&lt;br /&gt;    }&lt;br /&gt;   }catch(IOException e){}&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;පැහැදිලි කිරීම:&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;FileReader සහ FileWriter යනු පිලිවෙලින් myCharFile.txt සහ newCharFile.txt ට ලිවීමට තෝරාගත් Stream classes වේ. ඒවායින් සාදාගත් fileRdr සහ fileWr objects යොදාගෙන source file එකෙන් කියවීම සහ destination file එකට ලිවීම සිදුකෙරේ. මේවා character streams නිසා කියවීම සහ ලිවීම සිදුකරනුයේ character ආකාරයට ය. while loop එක තුලදී සිදුකෙරෙනුයේ input stream එකෙන් character by character කියවා output stream එකට character by character ලිවීමයි.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;එහිදී while loop එකේ condition එක වශයෙන් යොදා ඇත්තේ කියවන ලද character එකෙහි integer අගය -1 ට සමානදැයි බැලීමයි. එම කියවන ලද අගය -1 නම් එයින් සඳහන් වනුයේ අප සිටින්නේ EOF(End of the file) හි&amp;nbsp; බවය(ෆයිල් එකෙහි අවසානයේ බවය). මේවා try block එකක් තුල යෙදීමට හේතුව ස්ට්‍රීම් සමග ගනුදෙනු කිරීමේදී පැනනැගිය හැකි exception හසුකර ගැනීමයි.(&lt;a href="http://javaxclass.blogspot.com/2010/08/errors-exceptions-exception-handling.html" target="_blank"&gt;Exception පිලිබඳ මීට පෙර සාකච්ඡා කර තිබේ&lt;/a&gt;).&amp;nbsp; අවසානයේ open කරගන්නා ලද ස්ට්‍රීම් වසාදැමීම සිදුකර ඇත.( line 29 සහ line 34) මෙසේ ස්ට්‍රීම් close කිරීම අනිවාර්යයෙන්ම කල යුත්තකි. නැතහොත් අප ලියන වැඩසටහන් වල resource leaks ඇතිවීමට හේතුවේ. එය වැඩසටහනක ඇති විශාල ගැටලුවකි.&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;ලිපිය දීර්ඝ වන නිසා Byte streams පිලිබඳ වැඩිදුර තොරතුරු අපි ඊලඟ පාඩමෙන් කතාකරමු. &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-702467149986859578?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/702467149986859578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=702467149986859578&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/702467149986859578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/702467149986859578'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/12/io-streams-java-io-streams.html' title='ජාවා තුල යෙදෙන I/O Streams යනු මොනවාද | Java I/O Streams'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_zymieio832M/TP3e_C5uupI/AAAAAAAABB8/Khtla_A_pIY/s72-c/stream.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-7009416943367977320</id><published>2010-10-08T00:13:00.001+05:30</published><updated>2010-12-07T19:49:37.619+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>Java සමග Software Design Patterns (4 කොටස | Proxy Pattern)</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;බොහෝ පරිගණක වැඩසටහන් සැලසුම් කිරීමේදී අපට පද්ධතියෙන් පරිභාහිර සම්පත්(resources)&amp;nbsp; අප සැලසුම් කරන වැඩසටහන තුල භාවිතයට ගැනීමට සිදුවේ&lt;/span&gt;&lt;span style="font-size: large;"&gt;. උදාහරණ වශයෙන් ජාල සම්බන්දතා(network connections), files, පරිගණකයේ සසම්භාවී මතකය තුල පවතින විශාල වස්තුවක්(a large object in memory) හෝ සම්පත් අපතේ යෑම නිසා duplicate&amp;nbsp; කල නොහැකි අනෙකුත් ඕනෑම resource එකක් සැලකිය හැකියි. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt; මෙවැනි අවස්ථාවලදී අප සකස්කරන සැලසුම අසාර්ථක එකක් වුවහොත් එය කෙලවර වන්නේ අධික ලෙස bandwidth එක භාවිතා කරන හෝ පරිගණක මතකය අපතේ යවන හෝ කාර්‍යක්ෂමතාව අතින් ඉතාම අඩු මට්ටමක පරිගණක වැඩසටහනකින්. ප්‍රොක්සි (proxy design pattern) යනු මෙවැනි අවස්ථාවන්හිදී සාර්ථකව apply කල හැකි design pattern එකකි.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;මෙහිදී සිදුකරනුයේ අදාල resource එක ප්‍රවේශය කිරීම(access) සඳහා interface එකක් සැකසීමයි. පහත ඉදිරිපත් කර ඇති class diagram එක මගින් මෙහි ක්‍රියාකාරීත්වය වටහාගැනීම පහසුය.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zymieio832M/TK28FVhDBDI/AAAAAAAAA9g/9Lty2RSSnsA/s1600/proxy.png" /&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;අපි දැන් ඉහත model එක ජාවාතුල ක්‍රියාවට නංවන&amp;nbsp; අන්දම බලමු.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ProxyTest.java&lt;/div&gt;&lt;pre class="Java" name="code"&gt;/**      &lt;br /&gt;*class  : ProxyTest&lt;br /&gt;*Author : Kanishka Dilshan      &lt;br /&gt;*Purpose: Showing how to implement Proxy design pattern &lt;br /&gt;*Blog   : http://javaxclass.blogspot.com      &lt;br /&gt;*/ &lt;br /&gt;&lt;br /&gt;interface Subject {&lt;br /&gt; void doAction();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class RealSubject implements Subject{&lt;br /&gt; &lt;br /&gt; public RealSubject(){&lt;br /&gt;  //init resources&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void doAction(){&lt;br /&gt;  //do something&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; private void someInternalProcess(){&lt;br /&gt;  /*do some internal process related to &lt;br /&gt;   *the external resource&lt;br /&gt;   */&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class Proxy implements Subject{&lt;br /&gt; private Subject subj=null;&lt;br /&gt; &lt;br /&gt; public Proxy(){&lt;br /&gt;  //init initial attributes&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void doAction(){&lt;br /&gt;  //handle the RealSubject&lt;br /&gt;  if(subj==null){&lt;br /&gt;   subj=new RealSubject();&lt;br /&gt;  }&lt;br /&gt;  subj.doAction();&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class ProxyTest {&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  Subject subj1=new Proxy();&lt;br /&gt;  Subject subj2=new Proxy();&lt;br /&gt;  &lt;br /&gt;  subj1.doAction();&lt;br /&gt;  //this initializes the resource&lt;br /&gt;  subj2.doAction();&lt;br /&gt;  //this also initializes the resource&lt;br /&gt;  subj1.doAction();&lt;br /&gt;  //this time it will not initializes the resource&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;ඉහත class diagram එක implement කරන අන්දම වටහා ගැනීමට සහ Proxy හි මූලධර්මය වටහාගැනීමට අදාල ජාවා කේතය ප්‍රමාණවත් වුවද ප්‍රායෝගික වශයෙන් Proxy pattern එක කිසියම් ගැටලුවකට apply කරන අන්දම වටහාගැනීමට අපි පහත උදාහරණය සලකා බලමු.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;ගැටලුව:&lt;br /&gt;URL එක දෙනලද(&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;http://sites.google.com/site/ansisliit/Home/MyData.dat&lt;/span&gt;) data file එකක් proxy design pattern එක යොදා view කරවීමට අදාල UML design එක සහ එය ජාවා යොදාගෙන implement කරන්න.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;පිළිතුර:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zymieio832M/TK4HTC_YGHI/AAAAAAAAA9o/xvYHKol0Oqs/s1600/proxy_example.png" /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;RemoteFile.java&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;pre class="Java" name="code"&gt;/**     &lt;br /&gt;*class  : ProxyExampleTest  &lt;br /&gt;*Author : Kanishka Dilshan     &lt;br /&gt;*Purpose: Showing how to implement Proxy design pattern&lt;br /&gt;*Blog   : http://javaxclass.blogspot.com     &lt;br /&gt;*/ &lt;br /&gt;public interface RemoteFile {&lt;br /&gt; void viewFile();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;RealRemoteFile.java&lt;/div&gt;&lt;pre class="Java" name="code"&gt;import java.io.BufferedReader;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.io.InputStreamReader;&lt;br /&gt;import java.net.MalformedURLException;&lt;br /&gt;import java.net.URL;&lt;br /&gt;import java.net.URLConnection;&lt;br /&gt;&lt;br /&gt;public class RealRemoteFile implements RemoteFile {&lt;br /&gt; private String fileContent;&lt;br /&gt; private URL url;&lt;br /&gt; &lt;br /&gt; public RealRemoteFile(String u){&lt;br /&gt;  try {&lt;br /&gt;   url=new URL(u);&lt;br /&gt;  } catch (MalformedURLException e) {&lt;br /&gt;   System.err.println("Invalid URL!");&lt;br /&gt;  }&lt;br /&gt;  fileContent="";&lt;br /&gt;  &lt;br /&gt;  loadResource();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; public void viewFile() {&lt;br /&gt;  System.out.println("Displaying the remote file...\n");&lt;br /&gt;  System.out.println(fileContent);&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; private void loadResource(){&lt;br /&gt;  System.out.println("Loading Remote Resource");&lt;br /&gt;  try {&lt;br /&gt;   URLConnection conn=url.openConnection();&lt;br /&gt;   conn.setDoOutput(false); //read only&lt;br /&gt;   InputStreamReader isr=new InputStreamReader(conn.getInputStream());&lt;br /&gt;   BufferedReader br=new BufferedReader(isr);&lt;br /&gt;   String tempLine;&lt;br /&gt;   while((tempLine=br.readLine())!= null){&lt;br /&gt;    fileContent+=tempLine+"\n";&lt;br /&gt;   }&lt;br /&gt;  } catch (IOException e) {&lt;br /&gt;   System.err.println("Cannot open the location "+ e.getMessage());&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ProxyRemoteFile.java&lt;/div&gt;&lt;pre class="Java" name="code"&gt;public class ProxyRemoteFile implements RemoteFile{&lt;br /&gt; RemoteFile rmtFile=null;&lt;br /&gt; String rmtFilePath;&lt;br /&gt; &lt;br /&gt; public ProxyRemoteFile(String url){&lt;br /&gt;  rmtFilePath=url;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt; public void viewFile() {&lt;br /&gt;  long st1,st2;&lt;br /&gt;  st1=System.nanoTime();&lt;br /&gt;  if(rmtFile==null){&lt;br /&gt;   rmtFile=new RealRemoteFile(rmtFilePath);&lt;br /&gt;  }&lt;br /&gt;  rmtFile.viewFile();&lt;br /&gt;  st2=System.nanoTime();&lt;br /&gt;  long timeDiff=st2-st1;&lt;br /&gt;  double timeAmt=timeDiff*10e-12;&lt;br /&gt;  System.out.println("Time taken to view : "+ timeAmt+ " s");  &lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ProxyExampleTest.java&lt;/span&gt;&lt;br /&gt;&lt;pre class="Java" name="code"&gt;public class ProxyExampleTest {&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  String location="http://sites.google.com/site/ansisliit/Home/MyData.dat";&lt;br /&gt;  RemoteFile rFile=new ProxyRemoteFile(location);&lt;br /&gt;  rFile.viewFile();&lt;br /&gt;  //view same file again&lt;br /&gt;  System.out.println("\nView same file again\n");&lt;br /&gt;  rFile.viewFile();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;output:&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zymieio832M/TK4ONZs-QyI/AAAAAAAAA9s/Ynp-3kZZkWU/s1600/proxy_output.png" /&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;පැහැදිලි කිරීම;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මුල් වතාවේ viewFile() method එක call කල විට එය view වීම සඳහා තත්පර 0.0387 ක් ගතවී ඇති බවත් නැවත වතාවක් එකම RemoteFile object එක සඳහා එම viewFile() method එක call කල විට ගතවී ඇත්තේ ඉතාමත්ම සුළු කාලයක් එනම් තත්පර 1.3641*10-6 ක් බවත් ඔබට පෙනෙනවා ඇති. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;අප විසින්&amp;nbsp; සාර්ථකව Proxy design pattern එක මෙම ගැටලුවට ආදේශ කල නිසා එකම resource එක නැවත නැවතත් ප්‍රවේශනය වීම වැළකී තිබේ.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt; ඔබට අවශ්‍ය නම් මේ සඳහා අදාල java කේත eclipse project එකක් ලෙස භාගත කරගත හැක.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://www.mediafire.com/file/qykle393tni2tbp/ProxyExample.zip" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" src="http://i1004.photobucket.com/albums/af166/kdkanishka/blogRes/download.png" /&gt;&lt;/a&gt;(9.52 KB)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-7009416943367977320?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/7009416943367977320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=7009416943367977320&amp;isPopup=true' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/7009416943367977320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/7009416943367977320'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/10/java-software-design-patterns-4-proxy.html' title='Java සමග Software Design Patterns (4 කොටස | Proxy Pattern)'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_zymieio832M/TK28FVhDBDI/AAAAAAAAA9g/9Lty2RSSnsA/s72-c/proxy.png' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-8885205530286825669</id><published>2010-10-07T00:11:00.002+05:30</published><updated>2010-12-07T19:49:52.589+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>Java සමග Software Design Patterns (3 කොටස | Facade Pattern)</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_zymieio832M/TKydigmz9DI/AAAAAAAAA9M/tEMz-S-hMXk/s1600/fc.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;ෆැෂාඩ් | Facade යනු structural ආකාරයේ design pattern එකකි. මෙමගින් කිසියම් සංකීර්ණ උප පද්ධතියක(sub system) lower level classes invoke කිරීම මගින් යම් කාර්‍යයක් සිදුකිරගැනීම සඳහා higher level interface එකක් සපයනු ලබයි. මෙලෙය fachade pattern එක යොදමින් කිසියම් පද්ධතියක් සැලසුම් කිරීම නිසා එම පද්ධතියේ &lt;a href="http://en.wikipedia.org/wiki/Coupling_%28computer_science%29" target="_blank" title="Coupling (computer science)| From Wikipedia, the free encyclopedia"&gt;&lt;b&gt;coupling&lt;/b&gt;&lt;/a&gt; යන ගුණය අඩුවීම සිදුවේ එනම් එම පද්ධතියේ ස්ථායීතාවය කෙරෙහි එය සුභදායක ලෙස බලපායි. මීට අමතරව coupling ගුණය අඩුවීම යම් පද්ධතියක කාර්‍යක්ෂමතාවය වැඩිවීම පිනිසද හේතුවේ. යම් system එකකට facade pattern එක apply කල පසු එතුල පවතින සංකීර්ණ sub system එකක් කිසියම් client class කිහිපයක් මගින් access කරනුයේ facade එක හරහාවේ. එමගින් ඉතා විශාල වාසි එම පද්ධතියට අත්වේ. ඉන් එක් වාසියක් නම්  client ගේ වෙනසක් නොවන පරිදි සංකීර්ණ sub system එක තුල වෙනස්කම් සිදුලහැකි වීමයි. එමගින් අප විසින් සැලසුම් කරන පද්ධතිය අවුල් ජාලයක් වීම වලකනු ලබයි.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Facade හි ව්‍යුහය&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_zymieio832M/TKyryHdDQyI/AAAAAAAAA9Q/kWggxjg5OMw/s1600/facade_structure.png" title="Class diagram for facade design pattern" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙම pattern එක තවදුරටත් වටහා ගැනීම පහසුවීම සඳහා අපි දැන් Facade එක apply කිරීමට පෙර class diagram එකක් සහ Facade design pattern එක apply කිරීමෙන් පසුව ලැබෙන විසඳුමකට අදාල class diagrams සලකා බලමු.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;Facade යෙදීමට&lt;/span&gt;&lt;span style="font-size: large;"&gt; පෙර&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zymieio832M/TKy-w5yQNRI/AAAAAAAAA9Y/7IOHU4REm5w/s1600/before_facade.png" title="Before applying Facade" /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;Facade යෙදූ&lt;/span&gt;&lt;span style="font-size: large;"&gt; පසු&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zymieio832M/TKy_C012PlI/AAAAAAAAA9c/QuSfxnMSU2M/s1600/after_facade.png" title="After applying Facade" /&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;2වන class diagram එක අධ්‍යයනය කිරීමේදී coupling ගුණාංගය විශාල ලෙස අඩුවී ඇති බව ඔබට වැටහෙනවා ඇති.&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;අපි මීට පෙර සාකච්ඡා කල &lt;a href="http://javaxclass.blogspot.com/2010/10/java-software-design-patterns-2-adapter.html" target="_blank" title="Java සමග Software Design Patterns (2 කොටස | Adapter Pattern)"&gt;Adapter design pattern&lt;/a&gt; එක සහ Facade එක මගින් කෙරෙනුයේ classes wrap කිරීමකි. Facade pattern එකේදී වඩා සංකීර්ණ interface එකක් ලැබේ. අපි ඉදිරි පාඩම් වලදී තවත් design pattern පිලිබඳ අධ්‍යයනය කරමු.&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-8885205530286825669?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/8885205530286825669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=8885205530286825669&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/8885205530286825669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/8885205530286825669'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/10/java-software-design-patterns-2-facade.html' title='Java සමග Software Design Patterns (3 කොටස | Facade Pattern)'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_zymieio832M/TKydigmz9DI/AAAAAAAAA9M/tEMz-S-hMXk/s72-c/fc.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-511562672013251353</id><published>2010-10-06T17:08:00.001+05:30</published><updated>2010-12-07T19:51:01.370+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>Java සමග Software Design Patterns (2 කොටස | Adapter Pattern)</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zymieio832M/TKxE7KeXeLI/AAAAAAAAA8w/QMGSNTB-e60/s1600/adap.jpg" imageanchor="1" rel="shadowbox" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zymieio832M/TKxE7KeXeLI/AAAAAAAAA8w/QMGSNTB-e60/s1600/adap.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;Adapter නම් design pattern එක structural ආකාරයේ pattern එකකි. ලියන ලද කිසියම් program code එකක් දැනට පවතින වෙනත්  නොගැලපෙන(incompatible) code-base එකකට(උදා: google maps API, twitter API) සම්බන්ද කිරීමේදී මෙම design pattern එක apply කල හැකිය. මෙහිදී සිදුකරනුයේ විධිමත් ක්‍රමයකට අපේ program එකට පරිභාහිර code-base එක call කිරීමට class structure එකක් සෑදීමයි. සාමාන්‍යයෙන් අප විසින් සකසන මෙම class තුලදී process එකක් නොපවතී ඒ වෙනුවට එම class මගින් සිදුකරනුයේ අදාලා කාර්‍යය සිදුකරගැනීම පිනිස පවතින code-base එක call කිරීමයි.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;අපි දැන් බලමු adapter pattern එක සඳහා අදාල class diagram එක&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zymieio832M/TKxFgkZaWTI/AAAAAAAAA84/TSVZ35eT9FY/s1600/adapter_dia.png" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;" title="Class Structure Of Adapter Design Pattern"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_zymieio832M/TKxFgkZaWTI/AAAAAAAAA84/TSVZ35eT9FY/s1600/adapter_dia.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;ඔබට UML පිළිබඳ යම් අවබෝධයක් ඇත්නම් ඉහත class diagram එක මගින් adapter pattern එකෙහි ව්‍යුහය පිලිබඳ මනා වැටහීමක් ලැබෙනු ඇත. ඔබට UML(Unified Modeling Language) පිළිබඳ අවබෝධයක් නොමැතිනම් &lt;a href="http://www.mediafire.com/file/fn5ybtpf8t4sy6w/Getting%20Started%20with%20UML.zip" target="_blank" title="Getting Started with UML.zip"&gt;මෙම tutorial එක&lt;/a&gt; භාගත කරගෙන හොඳින් අධ්‍යයනය කරන්න. ඉන්පසු ඔබට ඉතා පහසුවෙන් මෙම UML diagram එක සහ ඉදිරි පාඩම් වලදී ඉදිරිපත් කෙරෙන UML diagrams වටහාගත හැකිවනු ඇත.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;මෙය තවදුරටත් වටහාගැනීම පිනිස මෙම pattern එක ජාවා තුල implement කරන ආකාරය සලකා බලමු.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;pre class="Java" name="code"&gt;/**     &lt;br /&gt;*class  : AdapterTest  &lt;br /&gt;*Author : Kanishka Dilshan     &lt;br /&gt;*Purpose: Showing how to implement Adapter design pattern&lt;br /&gt;*Blog   : http://javaxclass.blogspot.com     &lt;br /&gt;*/ &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;interface Adapter {&lt;br /&gt; void operation();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class ConcreteAdapter implements Adapter {&lt;br /&gt; private Adaptee adaptee ;&lt;br /&gt; &lt;br /&gt; public ConcreteAdapter(){&lt;br /&gt;  adaptee=new Adaptee();&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void operation(){&lt;br /&gt;  adaptee.specialOperation();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class Adaptee {&lt;br /&gt; //this is the external codebase&lt;br /&gt; void specialOperation(){&lt;br /&gt;  System.out.println("Special operation was launched!");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//test class&lt;br /&gt;public class AdapterTest{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  ConcreteAdapter ca=new ConcreteAdapter();&lt;br /&gt;  ca.operation();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙම pattern එක වඩාත් හොඳින් තහවුරු කරගැනීම සඳහා ගැටලුවක් සාකච්ඡා කරමු. මෙම ගැටලුව උපුටාගත්තේ ශ්‍රීලංකා තොරතුරු තාක්ෂණ ආයතයනයේ software engineering II සඳහා ලබාදුන් tutorial එකකිනි.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;ගැටලුව:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;You have developed a set of classes that draws graphs.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zymieio832M/TKxPsiCf6BI/AAAAAAAAA88/9_0NO2eBguo/s1600/seQ.png" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;" title="Adapter Question"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_zymieio832M/TKxPsiCf6BI/AAAAAAAAA88/9_0NO2eBguo/s1600/seQ.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;Here the base class is the Chart Class.&amp;nbsp; You need to develop a PieChart class.&amp;nbsp; There is an existing PieChart class called PieChartGraph (See below).&amp;nbsp; You want to connect your code base to this new Class.&amp;nbsp; Briefly describe how an appropriate design pattern can be used for this purpose.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_zymieio832M/TKxQiR5KPLI/AAAAAAAAA9E/I1VqcIOvlm4/s1600/seQp2.png" /&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;පිලිතුර:&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span id="goog_93149937"&gt;&lt;/span&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zymieio832M/TKxeQii55wI/AAAAAAAAA9I/X16lnEoXqJI/s1600/answer.png" /&gt;&lt;span id="goog_93149938"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;abstract class Chart {&lt;br /&gt; abstract protected void display();&lt;br /&gt; abstract protected void refresh();&lt;br /&gt; abstract protected void addData();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class XYScatter extends Chart {&lt;br /&gt; public void display(){&lt;br /&gt;  System.out.println("Displaying XYScatter..");&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void refresh(){&lt;br /&gt;  System.out.println("Refreshing XYScatter..");&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void addData(){&lt;br /&gt;  System.out.println("Adding data to the XYScatter..");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class LineGraph extends Chart {&lt;br /&gt; public void display(){&lt;br /&gt;  System.out.println("Displaying LineGraph..");&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void refresh(){&lt;br /&gt;  System.out.println("Refreshing LineGraph..");&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void addData(){&lt;br /&gt;  System.out.println("Adding data to the LineGraph..");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class BarGraph extends Chart {&lt;br /&gt; public void display(){&lt;br /&gt;  System.out.println("Displaying BarGraph..");&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void refresh(){&lt;br /&gt;  System.out.println("Refreshing BarGraph..");&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void addData(){&lt;br /&gt;  System.out.println("Adding data to the BarGraph..");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class PieChart extends Chart {&lt;br /&gt; &lt;br /&gt; private PieChartGraph pcg;&lt;br /&gt; &lt;br /&gt; public PieChart(){&lt;br /&gt;  pcg=new PieChartGraph();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void display(){&lt;br /&gt;  System.out.println("Displaying PieChart..");&lt;br /&gt;  pcg.show();&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void refresh(){&lt;br /&gt;  System.out.println("Refreshing PieChart..");&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void addData(){&lt;br /&gt;  System.out.println("Adding data to the PieChart..");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class PieChartGraph{&lt;br /&gt;&lt;br /&gt; public void dataseriesX(){&lt;br /&gt;  &lt;br /&gt; } &lt;br /&gt; &lt;br /&gt; public void dataseriesY(){&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void show(){&lt;br /&gt;  System.out.println("Showing PieChartGraph..");&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void redraw(){&lt;br /&gt;  System.out.println("Refreshing PieChartGraph..");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class Answer {&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  PieChart pc=new PieChart();&lt;br /&gt;  pc.display();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-511562672013251353?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/511562672013251353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=511562672013251353&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/511562672013251353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/511562672013251353'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/10/java-software-design-patterns-2-adapter.html' title='Java සමග Software Design Patterns (2 කොටස | Adapter Pattern)'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_zymieio832M/TKxE7KeXeLI/AAAAAAAAA8w/QMGSNTB-e60/s72-c/adap.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-2931174975105670890</id><published>2010-10-06T03:04:00.001+05:30</published><updated>2010-12-07T19:51:22.504+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Design Patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>Java සමග Software Design Patterns (1 කොටස)</title><content type='html'>&lt;div class="separator" rel="shadowbox" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zymieio832M/TKrivw_mpEI/AAAAAAAAA8M/HZkAfqP2nTE/s1600/dp.png" imageanchor="1" rel="shadowbox" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zymieio832M/TKrivw_mpEI/AAAAAAAAA8M/HZkAfqP2nTE/s1600/dp.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;කිසියම් පරිගණක භාෂාවක් යොදාගෙන මෘදුකාංග නිපදවීමේදී අප විසින් කිසියම් සැලසුමක් මුලින් සකස් කල යුතු වනවා. මෙහිදී අදාල සැලැස්ම ඉතා හොඳ එකක් වීම ඉතා වැදගත්. හොඳ මෘදුකාංග සැලසුමක් නිසා කේතකරණය මෙන්ම මෘදුකාංගයේ නව යාවත් කාලීන කිරීම් පුලුල් කිරීම් ආදිය පහසු වීම සිදුවනවා.&lt;br /&gt;හොඳ design එකක් සාදාගැනීම සඳහා භාවිතාකරන එක තාක්ෂණයක් තමයි software design patterns කියල කියන්නෙ. කිසියම් මෘදුකාංගයක් සැලකීමේදී එහි design pattern 1කට වැඩි සංබ්‍යාවක් තිබීමට පුලුවන්.&lt;br /&gt;software design pattern සඳහා වන &lt;a href="http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29"&gt;Wikipedia&lt;/a&gt; හි අර්ථ දැක්වීම&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;span style="font-size: large;"&gt;"A general reusable solution  &amp;nbsp;&amp;nbsp; to a commonly occurring problem  &amp;nbsp;&amp;nbsp; in&amp;nbsp;software design"&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;සරළව විස්තර කරන්නේ නම්. design pattern එකක් යනු විවිධ අවස්ථාවන් සඳහා යොදාගත හැකිවන පටිදි කිසියම් ගැටලුවක් විසඳන ආකාරයයි. එම නිසා ඕනෑම software pattern එකක් සැලකූ විට ඒය design pattern එකක් නොවිය හැකියි.&lt;br /&gt;උදා: algorithm(sorting,encrypting,compressing..etc) සහ data structures(queues, linked lists, stacks...etc) යන ඒවා design patterns ලෙස නොසැලකේ.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;පහත දැක්වෙන ආකාරයට design patterns වර්ග කල හැකිය&lt;/span&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;&lt;/span&gt; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;creational design &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;object සෑදීම විධිමත් ලෙස කලමනාකරණය කිරීමට යොදාගැනේ&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;structural design &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;විධිමත් ලෙස objects එකලස් කිරීම සඳහා යොදාගැනේ&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;behavioral design patterns&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;flow control සහ algorithms කලමණාකරනය කිරීම සඳහා යොදාගැනේ&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;අපි දැන් බලමු singleton design pattern එක පිලිබඳව.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Singleton Design Pattern &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zymieio832M/TKuGnaPF87I/AAAAAAAAA8Q/4si6QKDaFAA/s1600/singnut.jpg" imageanchor="1" rel="shadowbox" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zymieio832M/TKuGnaPF87I/AAAAAAAAA8Q/4si6QKDaFAA/s1600/singnut.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;මෙය &lt;b&gt;creational pattern&lt;/b&gt; &lt;/span&gt;&lt;span style="font-size: large;"&gt;ආකාරයට&lt;/span&gt;&lt;span style="font-size: large;"&gt; අයත් වේ. සාමාන්‍යයෙන් class එකක් සැලකූ විට object 1ක් හෝ ඊට වැඩි ගනණක් සෑදිය හැකිය. class එකකින් instance එකක් පමණක් ලබාගන්නා අන්දම මෙමගින් පැහැදිලි කෙරේ.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;class structure&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zymieio832M/TKuJ5Dwf_TI/AAAAAAAAA8U/GCFV_VTF7BA/s1600/singleton.png" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zymieio832M/TKuJ5Dwf_TI/AAAAAAAAA8U/GCFV_VTF7BA/s1600/singleton.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙහිදී Singleton class එක සඳහා subclasses නොමැති නම් Singleton constructor එක private ලෙස දැක්විය යුතුය.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙහිදී Singleton එක access කල හැක්කේ getInstance() static method එක හරහා වේ. එනම් Singleton එකෙන් object create කිරීම කල හැක්කේ getInstance() method එක හරහා පමණි.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;Sample Code:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;pre class="Java" name="code"&gt;/**     &lt;br /&gt;*class  : Singleton  &lt;br /&gt;*Author : Kanishka Dilshan     &lt;br /&gt;*Purpose: Showing how to implement Singleton design pattern&lt;br /&gt;*Blog   : http://javaxclass.blogspot.com     &lt;br /&gt;*/ &lt;br /&gt;&lt;br /&gt;class Singleton {&lt;br /&gt; private static Singleton instance=null;&lt;br /&gt; &lt;br /&gt; protected Singleton(){&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public static Singleton getInstance(){&lt;br /&gt;  if(instance==null){&lt;br /&gt;   instance=new Singleton();&lt;br /&gt;  }&lt;br /&gt;  return instance;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;දැන් අපි බලමු Singleton design pattern එක යොදාගෙන සරල වැඩසටහනක් ලියන අයුරු.&lt;/span&gt;&lt;br /&gt;&lt;pre class="Java" name="code"&gt;/**     &lt;br /&gt;*class  : PrinterSingleton  &lt;br /&gt;*Author : Kanishka Dilshan     &lt;br /&gt;*Purpose: Showing how to use Singleton design pattern&lt;br /&gt;*Blog   : http://javaxclass.blogspot.com     &lt;br /&gt;*/ &lt;br /&gt;&lt;br /&gt;class PrinterSingleton {&lt;br /&gt; private static PrinterSingleton instance=null;&lt;br /&gt; int jobsCount;&lt;br /&gt; private PrinterSingleton(){&lt;br /&gt;  jobsCount=0;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public static PrinterSingleton getInstance(){&lt;br /&gt;  if(instance==null){&lt;br /&gt;   instance=new PrinterSingleton();&lt;br /&gt;  }&lt;br /&gt;  return instance;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void addNewJob(){&lt;br /&gt;  jobsCount++;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public int getJobsCount(){&lt;br /&gt;  return jobsCount;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class SingletonTest {&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  PrinterSingleton p1=PrinterSingleton.getInstance();&lt;br /&gt;  PrinterSingleton p2=PrinterSingleton.getInstance();&lt;br /&gt;  &lt;br /&gt;  p1.addNewJob();&lt;br /&gt;  p1.addNewJob();&lt;br /&gt;  p1.addNewJob();&lt;br /&gt;  &lt;br /&gt;  System.out.println("p1 job count "+p1.getJobsCount());&lt;br /&gt;  System.out.println("p2 job count "+p2.getJobsCount());&lt;br /&gt;  &lt;br /&gt;  if(p1.equals(p2)){&lt;br /&gt;   System.out.println("p1 and p2 are same object");&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;output:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zymieio832M/TKuUf1LQWHI/AAAAAAAAA8Y/bJL-v0gWUxk/s1600/printersingleton.png" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_zymieio832M/TKuUf1LQWHI/AAAAAAAAA8Y/bJL-v0gWUxk/s1600/printersingleton.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Singleton design pattern එක වැඩිදියුණු කරමින් Coupleton design එකක්(exactly 2 instances) implement කරන අයුරු මීලඟට බලමු.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;&lt;/span&gt; &lt;br /&gt;&lt;pre class="Java" name="code"&gt;/**     &lt;br /&gt;*class  : CoupletonTest, Coupleton  &lt;br /&gt;*Author : Kanishka Dilshan     &lt;br /&gt;*Purpose: Showing how to implement coupleton design pattern&lt;br /&gt;*Blog   : http://javaxclass.blogspot.com     &lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;class Coupleton{&lt;br /&gt; private static Coupleton _instance1=null;&lt;br /&gt; private static Coupleton _instance2=null;&lt;br /&gt; private String ins_name;&lt;br /&gt; private Coupleton(String insName){&lt;br /&gt;  this.ins_name=insName;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public static Coupleton getInstance(int instanceNo,String ins_name){&lt;br /&gt;  if(instanceNo==1){&lt;br /&gt;   if(_instance1==null){&lt;br /&gt;    _instance1=new Coupleton(ins_name);&lt;br /&gt;   }&lt;br /&gt;   return _instance1;&lt;br /&gt;  }else if(instanceNo==2){&lt;br /&gt;   if(_instance2==null){&lt;br /&gt;    _instance2=new Coupleton(ins_name);&lt;br /&gt;   }&lt;br /&gt;   return _instance2;  &lt;br /&gt;  }else{&lt;br /&gt;   return null;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public String getInsName(){&lt;br /&gt;  return ins_name;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class CoupletonTest{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  Coupleton c1=Coupleton.getInstance(1,"My Coupleton1");&lt;br /&gt;  Coupleton c2=Coupleton.getInstance(2,"My Coupleton2");&lt;br /&gt;  Coupleton c3=Coupleton.getInstance(1,"My CoupletonX");&lt;br /&gt;  Coupleton c4=Coupleton.getInstance(2,"My CoupletonY");&lt;br /&gt;  System.out.println("c1 instance name : "+c1.getInsName());&lt;br /&gt;  System.out.println("c2 instance name : "+c2.getInsName());&lt;br /&gt;  System.out.println("c3 instance name : "+c3.getInsName());&lt;br /&gt;  System.out.println("c4 instance name : "+c4.getInsName());&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;output:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zymieio832M/TKuYKVbGwCI/AAAAAAAAA8c/gQIXQn4ikBI/s1600/coupleton.png" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zymieio832M/TKuYKVbGwCI/AAAAAAAAA8c/gQIXQn4ikBI/s1600/coupleton.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අපි ඉදිරි පාඩම් වලදී තවත් design patterns පිලිබඳ සාකච්ඡා කරමු.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-2931174975105670890?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/2931174975105670890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=2931174975105670890&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/2931174975105670890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/2931174975105670890'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/10/java-software-design-patterns-1.html' title='Java සමග Software Design Patterns (1 කොටස)'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_zymieio832M/TKrivw_mpEI/AAAAAAAAA8M/HZkAfqP2nTE/s72-c/dp.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-5794826757211422774</id><published>2010-09-11T13:56:00.002+05:30</published><updated>2010-12-07T19:52:26.015+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Basics Of Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Threads'/><title type='text'>ජාවා යොදාගෙන බහුකාර්‍ය වැඩසටහන් ලිවීම (Java Threads) II</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_zymieio832M/TIs9ACTNGII/AAAAAAAAA7c/vp9l-qy0qp0/s1600/thread_sample.gif" imageanchor="1" rel="shadowbox" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;" title="Threads"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_zymieio832M/TIs9ACTNGII/AAAAAAAAA7c/vp9l-qy0qp0/s1600/thread_sample.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;අපි &lt;a href="http://javaxclass.blogspot.com/2010/09/java-threads-i.html" target="_blank"&gt;මීට පෙර&lt;/a&gt; පාඩමේදී සාකච්ඡා කලා Threads හා සම්බන්ද මූලිකම මූලධර්ම පිලිබඳව. අපි මෙම පාඩමෙන් බලමු Threads යොදාගෙන වැඩසටහන් ලියන ආකාරය.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;Threads යොදාගෙන ජාවා වැඩසටහන් ලිවීමේදී ඉතා වැදගත් වන methods කිහිපයක් තිබෙනවා අපි මුලින්ම එම methds පිලිබඳ සලකා බලමු.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;ඕනෑම Thread එකක් සැලකීමේදී එය පවත්නා තත්වයන් කිහිපයක් ඇත. පහත Thread state diagram එක මගින් එම අවස්ථා පිලිබඳ සහ thread එකක හැසිරීම පිලිබඳ අධ්‍යයනය කරමු.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zymieio832M/TIsYj1QkG9I/AAAAAAAAA7Q/v5snuJ2qumI/s1600/Thread+state+Diagram.png" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;" title="Thread State Diagram"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_zymieio832M/TIsYj1QkG9I/AAAAAAAAA7Q/v5snuJ2qumI/s1600/Thread+state+Diagram.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Fig 1.0 Thread State Diagram&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&lt;a name='more'&gt;&lt;/a&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;     &lt;th scope="col" style="background-color: #d9ead3;" width="33%"&gt;Method Name &lt;/th&gt;     &lt;th scope="col" style="background-color: #d9ead3;" width="67%"&gt;Description&lt;/th&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;Thread.sleep()&lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;දෙන ලද කාලයක් සඳහා අවශ්‍ය thread එකක් නවතා දැමිය හැක (pause).&lt;br /&gt;syntax:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sleep(long milliseconds)&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sleep(long ms,long nanosec)&lt;/div&gt;eg:&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;try{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thread.sleep(1000);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}catch(InterruptedException e){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.err.println("Operation was Interrupted!");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;Thread.yield()&lt;/span&gt;&lt;/td&gt;     &lt;td&gt;අනෙකුත් threads සඳහා execute වීමට ඉඩ ලබාදේ. Thread synchronization පිළිබඳ සාකච්ඡා කිරීමේදී මේ ගැන වැඩිදුරටත් අධ්‍යයනය කරමු.&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;Thread.start()&lt;/span&gt;&lt;/td&gt;     &lt;td&gt;අදාල Thread එක ආරම්භ කෙරේ. එනම් thread එක runnable state එකට පත්කරයි.&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;Thread.isAlive()&lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;දෙන ලද thread එකක් ජීවී තත්වයේ පවතීදැයි පරීක්ශා කෙරේ. Thread එක ජීවී තත්වයේ පවතී නම් true ලෙසටද නැතහොත් false ලෙසටද return කෙරේ. Thread එකක් live තත්වයේ පැවතීමට නම් එය start වී තිබීම හා එය dead state එකේ නොතිබීම අනිවාර්‍ය වේ.&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;Thread.activeCount()&lt;/span&gt;&lt;/td&gt;     &lt;td&gt;Active threads ප්‍රමාණය return කරයි.&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;Thread.enumurate()&lt;/span&gt;&lt;/td&gt;     &lt;td&gt;මේ වන විට active තත්වයේ පවතින සියලු threads දෙන ලද array එකකට fill කිරීම සිදුකරයි.&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;Thread.&lt;/span&gt;&lt;span class="style1"&gt;currentThread()&lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;Current thread එක return කරයි.&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;Thread.dumpStack()&lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;ජාවා වැඩසටහන් debug කිරීමේදී වැදගත් වේ.&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;Thread.setPriority()&lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;කිසියම් Thread එකකට ලබාදෙන priority එක int value එකක් ලෙස ලබාදේ. (1 සිට 10 දක්වා) &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;Thread.getId()&lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;දෙනලද thread එකක් හඳුනාගැනීම සඳහා ලැබී ඇති ID එක long value එකක් ලෙස return කරයි.&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;Thread.setDaemon()&lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;කිසියම් thread එකක් daemon ස්වභාවයට පත් කරයි. Daemon thread එකක් යනු user defined threads සඳහා සහය දැක්වීම සඳහා පසුබිමින් ධාවනය වන(run) threads වේ. JVM එකේ Garbage collector එක මීට උදාහරණයකි.&lt;br /&gt;&lt;br /&gt;මෙම method එක මගින් අප විසින් ලියන ලද කිසියම් thread එකක් daemon nature එකට පත්කල හැක. සාමාන්‍යයෙන් daemon thread එකකට ලැබෙනුයේ low priority එකකි. නමුත් අපට අවශ්‍ය නම් daemon threads සඳහා වැඩි priority එකක් ලබාදිය හැක.&lt;br /&gt;&lt;br /&gt;මෙහිදී විශේෂයෙන් සැලකිය යුතු කාරණය වන්නේ ඕනෑම daemon thred එකක් ආරම්භ වීමෙන් පසු එහි daemon ස්වභාවය වෙනස් කල නොහැකිය යන්නයි. නමුත් එහි priority එක වෙනස් කල හැක.&lt;br /&gt;&lt;br /&gt;eg:&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;MyThread mt=new MyThread();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mt.setDaemon(true);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;mt.start();&lt;/span&gt; &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;Thread.run()&lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;Thread එකක වැදගත්ම method එකක් ලෙස සැලකිය හැක. ඕනෑම thread එකක මෙම method එක override කර තිබිය යුතුය. start() method එක call කිරීමෙන් පසු execute කිරීමට පටන්ගන්නේ මෙම run() method එක තුල ඇති විධානයන් වේ.&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;Thread.&lt;del&gt;&lt;/del&gt;&lt;/span&gt;&lt;span class="style1" style="color: #990000;"&gt;destroy()&lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;කිසිඳු cleanup එකකින් තොරව දෙනලද thread එකක් destroy කරදමයි. මෙම method එක deadlocks ඇතිවීමට හේතුවන නිසා මෙය deprecated method එකක් ලෙස දක්වා ඇත. Deadlocks පිලිබඳ ඉදිරි පාඩමකදී සාකච්ඡා කෙරේ. &lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;Thread.&lt;del&gt;&lt;/del&gt;&lt;/span&gt;&lt;span class="style1" style="color: #990000;"&gt;stop()&lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;කිසියම් thread එකක් stop කිරීමට යොදාගැනේ. මෙයද unsafe operation එකක් ලෙස සැලකේ. එම නිසා මෙය depricated method එකක් ලෙස දක්වා ඇත. Thread එකක් නැවැත්වීම සඳහා stop method එක භාවිතා නොකර වෙනත් technique එකක් භාවිතා කර ආරක්ශිත ආකාරයකට threads නවතා දමන අයුරු අපි ඉදිරියේදී සාකච්ඡා කරමු.&lt;/td&gt;   &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;ජාවා භාවිතයෙන් thread create කරන අයුරු ආදර්ශනය කිරීමට ලියන ලද පහත සරල වැඩසටහන හොඳින් අධ්‍යයනය කරන්න.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;ThreadLauncher.java&lt;br /&gt;&lt;pre class="java" name="code"&gt;/**     &lt;br /&gt;*class  : ThreadLauncher     &lt;br /&gt;*Author : Kanishka Dilshan     &lt;br /&gt;*Purpose: Showing how to create threads in Java &lt;br /&gt;*Blog   : http://javaxclass.blogspot.com     &lt;br /&gt;*/ &lt;br /&gt;&lt;br /&gt;class ThreadLauncher{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  MyThread mt1=new MyThread("motor1");&lt;br /&gt;  MyThread mt2=new MyThread("motor2");&lt;br /&gt;  mt1.start();&lt;br /&gt;  mt2.start();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class MyThread extends Thread{&lt;br /&gt; String name;&lt;br /&gt; public MyThread(String name){&lt;br /&gt;  this.name=name;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void run(){&lt;br /&gt;  System.out.println("Thread : "+name+" started!");&lt;br /&gt;  for(int i=0;i&amp;lt;5;i++){&lt;br /&gt;   System.out.println("I am "+name+ " Thread.");&lt;br /&gt;   try{&lt;br /&gt;    this.sleep(1000);&lt;br /&gt;   }catch(InterruptedException e){&lt;br /&gt;    System.err.println("Thread was interrupted! "+ e.getMessage());&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  System.out.println("Thread "+name+" is going to die!");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: x-small;"&gt;Code &lt;/span&gt;&lt;/span&gt;1.0&lt;/b&gt;&lt;/div&gt;Output:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zymieio832M/TIspn1JGlqI/AAAAAAAAA7U/dGg19mVW5fE/s1600/thread_output.png" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;" title="output"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_zymieio832M/TIspn1JGlqI/AAAAAAAAA7U/dGg19mVW5fE/s1600/thread_output.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Fig 2.0 Output of code 1.0&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: large;"&gt;Threaded program &lt;/span&gt;&lt;/span&gt;එකක out put එක ඉහත පරිදි වේ.&amp;nbsp; mt1 හා mt2 යනු threads 2යි. අපි එම වැඩසටහනම mt1 හා mt2 යනු runnable නොවන objects ලෙස සකස් කලහොත් output එක පහත පරිදි වේ.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zymieio832M/TIs21GRXd4I/AAAAAAAAA7Y/WeUDyRsonfA/s1600/non_thread_output.png" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;" title="A non threaded program"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_zymieio832M/TIs21GRXd4I/AAAAAAAAA7Y/WeUDyRsonfA/s1600/non_thread_output.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;ඔබට threads පිලිබඳ යම් අවබෝධයක් දැන් ලැබී තිබිය යුතුය. අපි ඉදි පාඩම් වලින් තවදුරටත් threads පිලිබඳ සාකච්ඡා කරමු.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-5794826757211422774?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/5794826757211422774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=5794826757211422774&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/5794826757211422774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/5794826757211422774'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/09/java-threads-ii.html' title='ජාවා යොදාගෙන බහුකාර්‍ය වැඩසටහන් ලිවීම (Java Threads) II'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_zymieio832M/TIs9ACTNGII/AAAAAAAAA7c/vp9l-qy0qp0/s72-c/thread_sample.gif' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-1332203859057883564</id><published>2010-09-10T09:13:00.001+05:30</published><updated>2010-12-07T19:53:10.300+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Basics Of Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Threads'/><title type='text'>ජාවා යොදාගෙන බහුකාර්‍ය වැඩසටහන් ලිවීම (Java Threads) I</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;a href="http://3.bp.blogspot.com/_zymieio832M/TImioFQmL_I/AAAAAAAAA7M/irjHTFRtsc0/s1600/CLIPART_OF_10927_SM_2.png" imageanchor="1" ral="shadowbox" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_zymieio832M/TImioFQmL_I/AAAAAAAAA7M/irjHTFRtsc0/s1600/CLIPART_OF_10927_SM_2.png" /&gt;&lt;/a&gt;&lt;span style="font-size: large;"&gt;පරිගණක වැඩසටහනක් සැලසුම් කිරීමේදී එය මගින් යම් යම් ක්‍රියාවන්(methods) එකවිට(parallel) සිදුකලයුතු අවස්ථා අපට මුණගැසේ. Multitasking සඳහා උදාහරණයක් ලෙස web browser එකක tabs කිහිපයක් එකවිට load වීම ගත හැකිය.&amp;nbsp; එවැනි අවස්ථාවන් ක්‍රියාවට නැංවීම (implement) සඳහා multitasking සංකල්පය භාවිතයට ගත හැකිය.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt; &lt;br /&gt;Multitasking වැඩසටහන්හි පහත අයුරින් ප්‍රධාන ආකාර 2ක් දැකිය හැකිය.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Process Based&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt; මෙහිදී සිදුවනුයේ පරිගණකයේ වැඩසටහන් කීපයක්&amp;nbsp; සමගාමීව ක්‍රියාකිරීමෙන් අදාල ප්‍රතිඵලය ලබාදීමයි. process අතර සන්නිවේදනය(දත්ත හුවමාරුව) පහසු නොවේ. ඒ සඳහා pipes, files, sockets, shared memory ආදී විවිධ උපක්‍රම &lt;/span&gt;&lt;span style="font-size: large;"&gt; යොදාගැනීමට සිදුවේ.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt; &lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Thread Based&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt; මෙහිදී සිදුවනුයේ එක් වැඩසටහනක් මගින් කාර්‍යයන් කිහිපයක් සමගාමීව සිදුකර අදාල ප්‍රතිඵලය ලබාදීමයි. මෙහිදී අදාල වැඩසටහන තුල Threads ලෙසින් පවතින කාර්‍යයන් කිහිපය කලමණාකරණය කිරීම මගින් ප්‍රතිඵලය ලබාගැනේ. සියලුම threads මගින් එකම address space එක share කරගන්නා නිසා threads අතර සන්නිවේදනය සාපේක්ෂව පහසුය.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt; අපි මෙහිදී සලකනුයේ Java යොදාගෙන multitasking සිදුකිරීමයි. මුලින් සඳහන් කල multitasking අකාරය හෙවත් process based multitasking ජාවාහි පාලනයෙන් ඔබ්බෙන් පවතින නිසා ජාවාතුල multitasking සිදුකරනුයේ threads යොදාගැනීමෙනි. Process based multitasking සිදුකිරීම C/C++ වැනි භාෂා යොදාගැනීමෙන් සිදුකල හැක.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt; ඕනෑම ජාවා වැඩසටහනක මුලින්ම ආරම්භ වන thread එක වනුයේ main thread එකයි.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt; ජාවා තුල මූලිකව threads ප්‍රභේද 2ක් පවතී. එනම් &lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Thread&lt;/b&gt; class එක සහ &lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Runnable&lt;/span&gt;&lt;/b&gt; interface එකයි. එම නිසා ජාවාහි Threads සෑදිය හැකි මූලිකම ක්‍රම දෙක වනුයේ&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;java.lang.Thread&lt;/span&gt;&lt;/b&gt; class එක Extend කර &lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;run()&lt;/b&gt;&amp;nbsp;&amp;nbsp; method එක override කිරීම&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;java.lang.Runnable&lt;/b&gt; interface එක implement කර &lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;run()&lt;/b&gt; method එක implement කිරීම.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;Note : extend කිරීම සහ interfaces පිලිබඳ පෙර පාඩම් නැවත මතක් කරගැනීමට අවශ්‍ය නම් පහත සබැඳි භාවිතා කරන්න.&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;span style="font-size: large;"&gt;&lt;a href="http://javaxclass.blogspot.com/2010/07/interface.html" target="blank"&gt;&lt;span style="font-size: small;"&gt;ජාවා interface සංකල්පය සහ එහි යෙදීම් &lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://javaxclass.blogspot.com/2010/06/vi-inheritance-1.html" target="blank"&gt;&lt;span style="font-size: small;"&gt;ජාවා වස්තු පාදක ක්‍රමලේඛනය VI (Inheritance) :: 1 කොටස&lt;/span&gt;&lt;/a&gt;&lt;/blockquote&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Thread&lt;/span&gt;&lt;/b&gt; class එක &lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;extend&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &lt;/span&gt;කිරීම&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;TestThread.java&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;class TestThread{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  MyTask mt1=new MyTask();&lt;br /&gt;  mt1.start(); //start the thread&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class MyTask extends Thread {&lt;br /&gt;&lt;br /&gt; public void run(){&lt;br /&gt;  //do some task&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Runnable&lt;/span&gt;&lt;/b&gt; interface එක implement කිරීම&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;TestThreadRunnable.java&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;class TestThreadRunnable{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  Thread t1=new Thread(new MyTask());&lt;br /&gt;  t1.start(); //start the thread&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class MyTask implements Runnable {&lt;br /&gt;&lt;br /&gt; public void run(){&lt;br /&gt;  //do some task&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;අපි ඊලඟ පාඩමෙන්  threads පිලිබඳ තවදුරටත් හදාරමු.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-1332203859057883564?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/1332203859057883564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=1332203859057883564&amp;isPopup=true' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/1332203859057883564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/1332203859057883564'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/09/java-threads-i.html' title='ජාවා යොදාගෙන බහුකාර්‍ය වැඩසටහන් ලිවීම (Java Threads) I'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_zymieio832M/TImioFQmL_I/AAAAAAAAA7M/irjHTFRtsc0/s72-c/CLIPART_OF_10927_SM_2.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-9136647922196402829</id><published>2010-08-23T15:30:00.001+05:30</published><updated>2010-08-23T16:04:51.746+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exception Handling'/><title type='text'>Errors සහ Exceptions කලමනාකරණය කිරීම (Exception Handling)</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a rel="shadowbox" href="http://4.bp.blogspot.com/_zymieio832M/THJOqUe53YI/AAAAAAAAA6Q/Tc32H5RcUyo/s1600/exceptionhandling.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_zymieio832M/THJOqUe53YI/AAAAAAAAA6Q/Tc32H5RcUyo/s1600/exceptionhandling.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;කිසියම්&lt;/span&gt;&lt;span style="font-size: large;"&gt; වැඩසටහනක් 100% ක්ම දෝශ රහිතව ලිවීම ඉතාම අසීරු කාරණයකි. වැඩසටහනේ විශාලත්වය වැඩිවත්ම මෙහි අසීරුතාව සීඝ්‍රයෙන්&lt;/span&gt;&lt;span style="font-size: large;"&gt; වැඩිවේ. Program එක සාර්ථකව compile වීම යනු එම වැඩසටහන දෝශරහිත යයි සැලකීමට සාධකයක් නොවේ. Program එකෙහි logical errors තිබිය හැක. logical errors යනු වැඩසටහන නියමාකාර ලෙස ක්‍රියානොකිරීමට(අපේක්ෂා කල පරිදි ක්‍රියා නොකිරීමට&lt;/span&gt;&lt;span style="font-size: large;"&gt;) හේතුපාදක වන කාරණයකි.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;ජාවා වැඩසටහනක ඇතිවිය හැකි errors ආකාර දෙකකි.&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Compile-time errors&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Run-time errors&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;සියලුම syntax errors හෙවත් භාශාවේ කාරක රීති වලට පටහැනි අවස්ථා Compile-time errors ලෙස සැලකේ. මෙහිදී ජාවා compiler එක  .java file එක මගින් .class file එක නොසාදයි. එනම් වැඩසටහන compile නොකෙරේ.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;*Compile-time errors සඳහා උදාහරණ.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zymieio832M/THITE55gBaI/AAAAAAAAA50/7h6606j9O3k/s1600/someerror.png" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_zymieio832M/THITE55gBaI/AAAAAAAAA50/7h6606j9O3k/s1600/someerror.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;ඉහත වැඩසටහනේ 3 වන line එකෙහි ඇති statement එක semicolon ";" එකකින් අවසන් කර නැත එය syntax error එකකි. එමනිසා එය  compile කිරීමේදී පහත දෝශය පෙන්වයි.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zymieio832M/THITy4baWaI/AAAAAAAAA54/DMtYAA9duIg/s1600/someerrorcmd.png" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_zymieio832M/THITy4baWaI/AAAAAAAAA54/DMtYAA9duIg/s1600/someerrorcmd.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;* Run-time errors සඳහා උදාහරණ&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙහිදී program එක සාර්ථකව compile වුවද එය run කිරීමට යාමේදී විවිධ ගැටලු ඇතිවේ.&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;නිඛිල සංඛ්‍යා 0න් බෙදිම&lt;/span&gt; &lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Array එකක සීමාවෙන් පිට element එකක් access කිරීමට යාම&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;කිසියම් array එකක් තුලට නොගැලපෙන data type එකකින් යුතු අගයක් ඇතුලු කිරීම&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;null object එකක attribute හෝ methods භාවිතා කිරීම(access)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;මේ සඳහා තවත් උදාහරණ රාශියක් ඇත.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;දැන් අපි Run-time erors සඳහා උදාහරණ කිරිපයක් බලමු.&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;*Division by zero&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;pre class="java" name="code"&gt;class Runtime1{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  int a=5;&lt;br /&gt;  int b=6;&lt;br /&gt;  int c=10;&lt;br /&gt;  int res=c/(b-a-1);&lt;br /&gt;  System.out.println(res);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙම වැඩසටහන සාර්ථකව compile වුවද run වීමේදී පහත දෝශය පෙන්වයි. එයට හේතුව line 6 දී (b-a-1) කොටසෙහි අගය 0 වීමයි.&lt;/span&gt; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zymieio832M/THIXLz851hI/AAAAAAAAA58/x2QQX2GqZok/s1600/runtime1.png" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_zymieio832M/THIXLz851hI/AAAAAAAAA58/x2QQX2GqZok/s1600/runtime1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;* Array index out of bounds&lt;/span&gt;&lt;/div&gt;&lt;pre class="java" name="code"&gt;class Runtime2{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  int arr[]=new int[5];&lt;br /&gt;  int i=arr[10];&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;මෙය run වීමේදී පහත දෝශය පැන නගී&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zymieio832M/THIYIiFD-vI/AAAAAAAAA6A/pHR3Ug6kw5Q/s1600/runtime2.png" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zymieio832M/THIYIiFD-vI/AAAAAAAAA6A/pHR3Ug6kw5Q/s1600/runtime2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;දැන් අපි Run-time errors පිලිබඳ පුලුල්ව සාකච්ඡා කරමු.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Run-time errors වර්ග 2කි&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Errors&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Exceptions&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අපි මුල්ම පාඩම් වලදී ඉගෙනගත්තා ජාවා තුල සියලුම දේවල් class ලෙස සලකන බව. ඒ අනුව Errors හා Exception සඳහාද ජාවා තුල class 2ක් තිබෙනවා.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Error class&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙම ආකාරයේ errors හඳුන්වන්නේ abnormal errors හෙවත් අස්වාභාවික errors ලෙසින්. වැඩසටහනක් ලිවීමේදී අප එම වැඩසටහන තුලින් සාමාන්‍යයෙන් මෙම ආකාරයේ errors අපේක්ෂා කරන්නේ නෑ එනම් ඒවා handle කිරීමට යන්නේ නෑ.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මේ සඳහා උදාහරණ.&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Virtual machine එකේ දෝශ&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;ThreadDeath errors&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Exception class&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;ජාවා වැඩසටහන් තුල Error handle කරනවා යනු මෙම exceptions නියමාකාරයෙන් handle කිරීමයි. මෙහි වැදගත්කම වනුයේ run-time එකේදී කලින් අපේක්ෂා කල errors ඇතිවුවහොත් program එක terminate වීම හෝ වැරදි ප්‍රතිඵලයක් ලබාදීමෙන් වලක්වා&lt;/span&gt;&lt;span style="font-size: large;"&gt; ගැනීමයි.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;බහුල වශයෙන්&amp;nbsp; හටහන්නා Exception කිහිපයකට උදාහරණ&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;ArithmeticException&lt;/span&gt;&lt;/li&gt;&lt;li style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;ArrayIndexOutOfBoundsException&lt;/span&gt;&lt;/li&gt;&lt;li style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;IOException&lt;/span&gt;&lt;/li&gt;&lt;li style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;FileNotFoundException&lt;/span&gt;&lt;/li&gt;&lt;li style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;NumberFormatException&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: large;"&gt;StringOutOfBoundsException&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;දැන් අපි බලමු ක්‍රමලේඛයක් තුලදී Exception handle කරන්නේ කියලා. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;මේ සඳහා විධි 2ක් තිබෙනවා.&lt;/span&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;1) Throw Out (Ignore)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙහිදී යම් අපේක්ෂා කල Exception එකක් හටගතහොත් එය ඉවත දැමීම නොහොත් නොසලකා හැරීම සිදුකෙරෙනවා. ඇතැම් අවස්ථා&lt;/span&gt;&lt;span style="font-size: large;"&gt; වලදී මෙම ක්‍රමය යොදාගත්තත් මෙය සුදුසුම ක්‍රමය නොවේ.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;දැන් අපි බලමු මෙම ක්‍රමය භාවිතා කරන අයුරු.&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;Syntax:&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; methodName &lt;b style="color: blue;"&gt;throws&lt;/b&gt;&lt;span style="color: blue;"&gt; &lt;/span&gt;ExceptionName{&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ..method body&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;උදා:&lt;/span&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;class ExceptionEx1{&lt;br /&gt; public static void main(String args[]) throws IOException{&lt;br /&gt;  InputStreamReader isr=new InputStreamReader(System.in);&lt;br /&gt;  BufferedReader br=new BufferedReader(isr);&lt;br /&gt;  System.out.print("Enter your name : ");&lt;br /&gt;  String name=br.readLine();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;2) Catch and handle&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;සලකනු ලබන code segment එකක් තුල යම් අපේක්ෂිත Exception එකක් පැනනැගුනහොත් සිදුකලයුතු ක්‍රියාමාර්ගය පිලිබඳ මෙහිදී සඳහන් කෙරේ ජාවා වැඩසටහනක Exception handle කිරීම සඳහා මෙම ක්‍රමය ඉතාම සුදුසු වේ.&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;Syntax:&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: large;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b style="color: blue;"&gt;try&lt;/b&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ..................&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ...code segment...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ..................&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;b style="color: blue;"&gt;catch&lt;/b&gt;(ExceptionName&lt;b&gt;1&lt;/b&gt; &lt;span style="color: #38761d;"&gt;exObj&lt;/span&gt;){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ..................&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ..handling error&lt;b&gt;1&lt;/b&gt;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ..................&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: large;"&gt;&lt;b style="color: blue;"&gt;catch&lt;/b&gt;(ExceptionName&lt;b&gt;2&lt;/b&gt; &lt;span style="color: #38761d;"&gt;exObj&lt;/span&gt;){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ..................&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ..handling error&lt;b&gt;2&lt;/b&gt;..&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ..................&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: large;"&gt;&lt;b style="color: blue;"&gt;catch&lt;/b&gt;(ExceptionName&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;n&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: large;"&gt; &lt;span style="color: #38761d;"&gt;exObj&lt;/span&gt;){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ..................&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ..handling error&lt;b&gt;n&lt;/b&gt;.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ..................&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;b style="color: blue;"&gt;finally&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: large;"&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ..................&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ..final action....&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ..................&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;උදා:&lt;/span&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;class ExceptionEx2{&lt;br /&gt; public static void main(String args[]) {&lt;br /&gt;  int age=0;&lt;br /&gt;  InputStreamReader isr=new InputStreamReader(System.in);&lt;br /&gt;  BufferedReader br=new BufferedReader(isr);&lt;br /&gt;  System.out.print("Enter your age : ");&lt;br /&gt;  try{&lt;br /&gt;   String ageStr=br.readLine(); &lt;br /&gt;   age=Integer.parseInt(ageStr);&lt;br /&gt;  }catch(IOException ex1){&lt;br /&gt;   System.out.println("I/O Error! "+ ex1.getMessage());&lt;br /&gt;  }catch(NumberFormatException ex2){&lt;br /&gt;   System.out.println("Invalid number format! "+ ex2.getMessage());&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;output:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zymieio832M/THImczD-eCI/AAAAAAAAA6E/46L4Bo17_E4/s1600/errorH.png" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_zymieio832M/THImczD-eCI/AAAAAAAAA6E/46L4Bo17_E4/s1600/errorH.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;Errors catch කිරීමේදී ඒවා අපේක්ශි&lt;/span&gt;&lt;span style="font-size: large;"&gt;ත අනුපිලිවෙලට සිදුකලයුතු බව මතකතබා ගත යුතුය. මෙහිදී exceptions ඇතිවිය හැකි අනුපිළිවෙල මෙන්ම class hierarchy එකද වැදගත් වේ. class hierarchy එකේ පහලින් ඇති errors මුලින් catch කර ඉහල ඇති ඒවා පසුව catch කිරීම සිදුකලයුතුය. class hierarcy එක බලාගැනීමට java documentation එක පරිශීලනය කලයුතුවේ.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;b style="color: blue;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;finally&lt;/span&gt;&lt;/b&gt;&amp;nbsp; block එක පිලිබඳව&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙතුල අන්තර්ගත කරන code segments අනිවාර්‍යයෙන්ම execute කිරීම සිදුවේ(Exception එකක් හටගත්තත් නැතත්&lt;/span&gt;&lt;span style="font-size: large;"&gt;). finally statement එක යෙදෙන අවස්ථා සඳහා උදාහරණ ලෙස open කරන ලද stream එකක් close කිරීම වැනි අවස්ථා දැක්විය හැකිය.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Exception&lt;/span&gt; class එකෙහි ඇති &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;getMessage()&lt;/span&gt; method එක පිලිබඳව&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;මෙමගින් Exception එකට අදාල වැඩිදුර තොරතුරු String එකක් ලෙස return කරයි.&lt;/span&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අපි දැන් බලමු අපිවිසින් අපේම&lt;/span&gt;&lt;span style="font-size: large;"&gt;(our own) Exception සාදන ආකාරය සහ ඒවා throw කරන්නේ කවර ආකාරයෙන්ද කියලා.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;මෙහිදී මූලිකවම සිදුකරන්නේ Exception නම් predefined class එක extend කරමින් නව class එකක් සෑදීමයි.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;උදා: &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;OwnExceptionDemo.java&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre class="java" name="code"&gt;/**     &lt;br /&gt;*class  : OwnExceptionDemo     &lt;br /&gt;*Author : Kanishka Dilshan     &lt;br /&gt;*Purpose: Demonstrate howto write custom exceptions   &lt;br /&gt;*Blog   : http://javaxclass.blogspot.com     &lt;br /&gt;*/ &lt;br /&gt;&lt;br /&gt;class Printer{&lt;br /&gt; /*assumption: &lt;br /&gt;  *printing 1 page will decrease the ink level by 1&lt;br /&gt;  */&lt;br /&gt; int inkLevel;//minimum=0&lt;br /&gt; int pages;&lt;br /&gt; &lt;br /&gt; public Printer(int p,int inkLevel){&lt;br /&gt;  pages=p;&lt;br /&gt;  this.inkLevel=inkLevel;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void print(){&lt;br /&gt;  try{&lt;br /&gt;   if(inkLevel==0){&lt;br /&gt;    throw new EmptyCartridgeException();&lt;br /&gt;   }else if(pages==0){&lt;br /&gt;    throw new NoPagesException();&lt;br /&gt;   }else{&lt;br /&gt;    pages-=1;&lt;br /&gt;    inkLevel-=1;&lt;br /&gt;    System.out.println("Page completed.");&lt;br /&gt;   }&lt;br /&gt;  }catch(EmptyCartridgeException ecEx){&lt;br /&gt;   System.err.println(ecEx.getMessage());&lt;br /&gt;  }catch(NoPagesException npEx){&lt;br /&gt;   System.err.println(npEx.getMessage());&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class NoPagesException extends Exception{&lt;br /&gt; NoPagesException(){&lt;br /&gt;  super("No pages in the paper tray!");&lt;br /&gt; }&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;class EmptyCartridgeException extends Exception{&lt;br /&gt; EmptyCartridgeException(){&lt;br /&gt;  super("Cartridge is empty. Please refill it");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class OwnExceptionDemo{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  //creating Printer object and and calling print() method&lt;br /&gt;  System.out.println("---------p1 Printer object---------");&lt;br /&gt;     Printer p1=new Printer(5,100);&lt;br /&gt;  for(int i=0;i&amp;lt;8;i++) //this will cause NoPagesException&lt;br /&gt;   p1.print();&lt;br /&gt;&lt;br /&gt;  System.out.println("\n---------p2 Printer object---------");&lt;br /&gt;  Printer p2=new Printer(5,4);&lt;br /&gt;  for(int i=0;i&amp;lt;5;i++) //this will cause EmptyCartridgeException&lt;br /&gt;   p2.print();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;මෙම වැඩසටහනෙහි output එක පහත පරිදි වේ.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zymieio832M/THJChR60dgI/AAAAAAAAA6M/d4GstqFmLVU/s1600/ownexdemo.png" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_zymieio832M/THJChR60dgI/AAAAAAAAA6M/d4GstqFmLVU/s1600/ownexdemo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;දැන් ඔබට Error handling පිලිබඳව යම් වැටහීමක් ඇතැයි සිතමි. වැඩිදුරටත් අභ්‍යාසයේ යෙදීමෙන් තවදුරටත් එය තහවුරු කරගැනීමට උත්සාහ ගන්න. ගැටලු සහගත තැන් ඇත්නම් ඒවා ඉදිරිපත් කරන්න.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මීලඟ පාඩමෙන් අපි Threads පිලිබඳ අධ්‍යයනය කරමු.&lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-9136647922196402829?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/9136647922196402829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=9136647922196402829&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/9136647922196402829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/9136647922196402829'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/08/errors-exceptions-exception-handling.html' title='Errors සහ Exceptions කලමනාකරණය කිරීම (Exception Handling)'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_zymieio832M/THJOqUe53YI/AAAAAAAAA6Q/Tc32H5RcUyo/s72-c/exceptionhandling.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-8391951189493897151</id><published>2010-08-11T15:40:00.002+05:30</published><updated>2010-08-11T16:31:54.710+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><title type='text'>GUI සැකසීම සඳහා Basic Layouts යොදාගන්නා අයුරු</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අපි මෙම පාඩමෙන් සාකච්ඡා කරන්න යන්නේ ජාවා වැඩසටහන් සඳහා අතුරුමුහුනත් සැකසීමේදී components සුදුසු පරිදි ස්ථානගත කිරීම සඳහා layouts යොදාගන්නා ආකාරයයි. මෙම layouts java.awt පැකේජයේ අන්තර්ගත වනවා. අප මෙම පාඩමේදී මූලික වශයෙන් පහත දැක්වෙන layouts භාවිතා කරන අයුරු සලකා බලමු.&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;FlowLayout&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;BorderLayout &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;GridLayout&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අපි මුලින්ම බලමු ජාවා අතුරුමුහුණතකට Layout manager එකක් set කරන්නේ කොහොමද කියලා.&lt;/span&gt;&lt;/div&gt;syntax:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;void &lt;span style="color: purple;"&gt;setLayout&lt;/span&gt;(LayoutManager &lt;span style="color: blue;"&gt;layoutObj&lt;/span&gt;);&lt;/span&gt;&lt;/blockquote&gt;උදා:&lt;br /&gt;&lt;pre class="Java" name="code"&gt;this.setLayout(new FlowLayout());&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;දැන් අපි ඉහත සඳහන් කල layouts විස්තරාත්මකව සලකා බලමු&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;FlowLayout&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;Panel class එකෙහි සහ එහි සියලුම child classes (උදා:Applet,JApplet,JPannel,.. ) වල default layout එක වන්නේ මෙයයි. සාමාන්‍යයෙන් &lt;/span&gt;&lt;span style="font-size: large;"&gt;components place(ස්ථානගත) කරනුයේ වමේ සිට දකුණට සහ උඩ සිට පහලට යන ආකාරයෙනි(left to right and top to bottom).&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zymieio832M/TGJEQx5s-QI/AAAAAAAAA4I/3vyV2oNz4LA/s1600/FlowLayout.png" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;" title="FlowLayout"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_zymieio832M/TGJEQx5s-QI/AAAAAAAAA4I/3vyV2oNz4LA/s320/FlowLayout.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;constructor:&lt;/span&gt; &lt;br /&gt;&lt;pre class="Java" name="code"&gt;FlowLayout(int align, int hgap, int vgap);&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;align&lt;/span&gt;&lt;/b&gt;: මෙමගින් සඳහන් කරනුයේ components ස්ථානගත කරනුයේ මොන පැත්තෙන් ආරම්භ වන පරිදිද යන්නයි&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;FlowLayout.LEFT&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;FlowLayout.CENTER&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;FlowLayout.RIGHT&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;hgap, vgap&lt;/span&gt;&lt;/b&gt;&lt;/span&gt; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: large;"&gt;:&lt;/span&gt; &lt;span style="font-size: large;"&gt;මෙමහින් සඳහන් කරනුයේ components අතර horizontal gap එක සහ vertical gap එකයි මෙය pixels වලින් ලබාදිය යුතුය.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;දැන් අපි FlowLayout එක යොදාගෙන සරල&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: large;"&gt;චිත්‍රක&lt;/span&gt;&lt;span style="font-size: large;"&gt;මුහුනතක් (GUI )&lt;/span&gt;&lt;span style="font-size: large;"&gt;සකසන අයුරු බලමු.&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zymieio832M/TGJLJHbON_I/AAAAAAAAA4M/ccGlh5WdIKY/s1600/FlowLayoutDemo.png" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;" title="FlowLayoutDemo"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_zymieio832M/TGJLJHbON_I/AAAAAAAAA4M/ccGlh5WdIKY/s400/FlowLayoutDemo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;Code:&lt;/span&gt;&lt;br /&gt;&lt;pre class="Java" name="code"&gt;import java.awt.FlowLayout;&lt;br /&gt;import javax.swing.*;&lt;br /&gt;&lt;br /&gt;public class FlowLayoutDemo extends JFrame{&lt;br /&gt;&lt;br /&gt; public FlowLayoutDemo(){&lt;br /&gt;  setTitle("FlowLayoutDemo Demo");  &lt;br /&gt;  JPanel myPanel=new JPanel();&lt;br /&gt;  myPanel.setLayout(new FlowLayout(FlowLayout.CENTER,5,5));&lt;br /&gt;  //creating JButton objects&lt;br /&gt;  JButton btn1=new JButton("Component1");&lt;br /&gt;  JButton btn2=new JButton("Component2");&lt;br /&gt;  JButton btn3=new JButton("Component3");&lt;br /&gt;  JButton btn4=new JButton("Component4");&lt;br /&gt;  JButton btn5=new JButton("Component5");&lt;br /&gt;  JButton btn6=new JButton("Component6");&lt;br /&gt;  //adding JButton objects to the panel&lt;br /&gt;  myPanel.add(btn1);&lt;br /&gt;  myPanel.add(btn2);&lt;br /&gt;  myPanel.add(btn3);&lt;br /&gt;  myPanel.add(btn4);&lt;br /&gt;  myPanel.add(btn5);&lt;br /&gt;  myPanel.add(btn6);&lt;br /&gt;  this.add(myPanel);&lt;br /&gt;  this.setSize(492,100);&lt;br /&gt;  this.setDefaultCloseOperation(3);&lt;br /&gt;  this.setVisible(true);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  new FlowLayoutDemo();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;BorderLayout&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Window&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: large;"&gt;සහ එහි sub class සඳහා default layout එක වේ. මෙහිදී container එක කලාප 5 කට බෙදනු ලැබේ ඒවා නම්&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;North&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;South&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;East&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;West&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Center&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;components place කරනුයේ මෙම කලාප 5 ට වේ.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zymieio832M/TGJOHVNgEFI/AAAAAAAAA4Q/rj0ePyP6CrQ/s1600/BorderLayout.png" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;" title="BorderLayout"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zymieio832M/TGJOHVNgEFI/AAAAAAAAA4Q/rj0ePyP6CrQ/s320/BorderLayout.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;Constructor&lt;b&gt;:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre class="java" name="code"&gt;BorderLayout(int hgap, int vgap) &lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;hgap, vgap&lt;/span&gt;&lt;/b&gt;&lt;/span&gt; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: large;"&gt;:&lt;/span&gt; &lt;span style="font-size: large;"&gt;මෙමහින් සඳහන් කරනුයේ components අතර horizontal gap එක සහ vertical gap එකයි මෙය pixels වලින් ලබාදිය යුතුය.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;දැන් අපි BorderLayout එක යොදාගෙන සරල චිත්‍රක&lt;/span&gt;&lt;span style="font-size: large;"&gt;මුහුනතක් (GUI )සකසන අයුරු බලමු.&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;Code:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;pre class="Java" name="code"&gt;import java.awt.BorderLayout;&lt;br /&gt;import javax.swing.*;&lt;br /&gt;&lt;br /&gt;public class BorderLayoutDemo extends JFrame{&lt;br /&gt;&lt;br /&gt; public BorderLayoutDemo(){&lt;br /&gt;  setTitle("BorderLayout Demo");  &lt;br /&gt;  JPanel myPanel=new JPanel();&lt;br /&gt;  myPanel.setLayout(new BorderLayout(5,5));&lt;br /&gt;  //creating JButton objects&lt;br /&gt;  JButton btn1=new JButton("North");&lt;br /&gt;  JButton btn2=new JButton("East");&lt;br /&gt;  JButton btn3=new JButton("South");&lt;br /&gt;  JButton btn4=new JButton("West");&lt;br /&gt;  JButton btn5=new JButton("Center");&lt;br /&gt;  //adding JButton objects to the panel&lt;br /&gt;  myPanel.add(btn1,BorderLayout.NORTH);&lt;br /&gt;  myPanel.add(btn2,BorderLayout.EAST);&lt;br /&gt;  myPanel.add(btn3,BorderLayout.SOUTH);&lt;br /&gt;  myPanel.add(btn4,BorderLayout.WEST);&lt;br /&gt;  myPanel.add(btn5,BorderLayout.CENTER);&lt;br /&gt;&lt;br /&gt;  this.add(myPanel);&lt;br /&gt;  this.pack();&lt;br /&gt;  this.setDefaultCloseOperation(3);&lt;br /&gt;  this.setVisible(true);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  new BorderLayoutDemo();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;output:&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_zymieio832M/TGJQ5canluI/AAAAAAAAA4U/vJWIw1cgKPI/s1600/BorderLayoutDemo.png" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;" title="BorderLayoutDemo"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_zymieio832M/TGJQ5canluI/AAAAAAAAA4U/vJWIw1cgKPI/s1600/BorderLayoutDemo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;GridLayout&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙම layout එක බොහෝ දුරට FlowLayout එකට සමානය නමුත්&amp;nbsp; components place කරනුයේ සමාන cell sizes ඇති&lt;/span&gt;&lt;span style="font-size: large;"&gt; virtual grid එකක් තුලටය. මෙහිදී අදාල component එකෙහි preffered size එක නොසලකා හැරේ.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Constructor&lt;b&gt;:&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;GridLayout(int rows, int cols, int hgap, int vgap) ;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;rows, cols :&lt;/span&gt;&lt;/b&gt; &lt;span style="font-size: large;"&gt;මෙමගින් දැක්වෙන්නේ components add කරනු ලබන virtual grid එකෙහි rows සහ columns ප්‍රමාණයයි.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;hgap, vgap&lt;/span&gt;&lt;/b&gt;&lt;/span&gt; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: large;"&gt;:&lt;/span&gt; &lt;span style="font-size: large;"&gt;මෙමහින් සඳහන් කරනුයේ components අතර horizontal gap එක සහ vertical gap එකයි මෙය pixels වලින් ලබාදිය යුතුය.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Code:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;pre class="java" name="code"&gt;import java.awt.GridLayout;&lt;br /&gt;import javax.swing.*;&lt;br /&gt;&lt;br /&gt;public class GridLayoutDemo extends JFrame{&lt;br /&gt;&lt;br /&gt; public GridLayoutDemo(){&lt;br /&gt;  setTitle("GridLayoutDemo Demo");  &lt;br /&gt;  JPanel myPanel=new JPanel();&lt;br /&gt;  myPanel.setLayout(new GridLayout(2,3,5,5));&lt;br /&gt;  //creating JButton objects&lt;br /&gt;  JButton btn1=new JButton("Component1");&lt;br /&gt;  JButton btn2=new JButton("Component2");&lt;br /&gt;  JButton btn3=new JButton("Component3");&lt;br /&gt;  JButton btn4=new JButton("Component4");&lt;br /&gt;  JButton btn5=new JButton("Component5");&lt;br /&gt;  JButton btn6=new JButton("Component6");&lt;br /&gt;  //adding JButton objects to the panel&lt;br /&gt;  myPanel.add(btn1);&lt;br /&gt;  myPanel.add(btn2);&lt;br /&gt;  myPanel.add(btn3);&lt;br /&gt;  myPanel.add(btn4);&lt;br /&gt;  myPanel.add(btn5);&lt;br /&gt;  myPanel.add(btn6);&lt;br /&gt;&lt;br /&gt;  this.add(myPanel);&lt;br /&gt;  this.pack();&lt;br /&gt;  this.setDefaultCloseOperation(3);&lt;br /&gt;  this.setVisible(true);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  new GridLayoutDemo();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;output:&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zymieio832M/TGJgw7a9pXI/AAAAAAAAA4Y/npw286xb8SE/s1600/GridLayoutDemo.png" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;" title="GridLayoutDemo"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_zymieio832M/TGJgw7a9pXI/AAAAAAAAA4Y/npw286xb8SE/s320/GridLayoutDemo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;අපි ඉහත සාකච්ඡා කල layout managers කිහිපය GUI සෑදීමේදී බහුල වශයෙන් යෙදේ.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;වඩාත් සංකීර්ණ GUI සෑදීම&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;මෙහිදී සිදු කෙරෙනුයේ Layouts කිහිපයක් සංයුක්ත කොට කොට භාවිතා කිරීමය. Panel objects කිහිපක් සුදුසු පරිදි යෙදවීමෙන් අපට වඩාත් සංකීර්ණ GUI සකසාගත හැකිය.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;දැන් අපි Windows calculator එකෙහි අනුරුවක් අප ඉගෙනගත් LayoutManagers යොදාගෙන සෑදීමට උත්සාහ කරමු.&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Output:&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zymieio832M/TGJzr24UswI/AAAAAAAAA4c/iZFgbMo4HBw/s1600/democalc.png" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;" title="Demo Calc GUI"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_zymieio832M/TGJzr24UswI/AAAAAAAAA4c/iZFgbMo4HBw/s320/democalc.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;code:&lt;/span&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;import java.awt.*;&lt;br /&gt;import javax.swing.*;&lt;br /&gt;&lt;br /&gt;public class ComplexGUIDemo extends JFrame{&lt;br /&gt;&lt;br /&gt; public ComplexGUIDemo(){&lt;br /&gt;  //this.setLayout(new GridLayout(3,1));&lt;br /&gt;  this.setLayout(new FlowLayout(FlowLayout.RIGHT));&lt;br /&gt;  //main panels&lt;br /&gt;  JPanel txtPanel=new JPanel();&lt;br /&gt;  JPanel numPanel1=new JPanel();&lt;br /&gt;  JPanel numPanel2=new JPanel();&lt;br /&gt;  //sub panels of numPanel2&lt;br /&gt;  JPanel numPanel2Sub1=new JPanel();&lt;br /&gt;  JPanel numPanel2Sub2=new JPanel();&lt;br /&gt;  &lt;br /&gt;  JTextField textBox=new JTextField("0",33);&lt;br /&gt;  textBox.setHorizontalAlignment(JTextField.RIGHT);&lt;br /&gt;  txtPanel.setLayout(new GridLayout(1,1));&lt;br /&gt;  txtPanel.add(textBox);&lt;br /&gt;  &lt;br /&gt;  numPanel1.setLayout(new FlowLayout(FlowLayout.RIGHT));&lt;br /&gt;  JButton btnbacksp=new JButton("Backspace");&lt;br /&gt;  JButton btnce=new JButton("CE");&lt;br /&gt;  JButton btnc=new JButton("C");&lt;br /&gt;  numPanel1.add(btnbacksp);&lt;br /&gt;  numPanel1.add(btnce);&lt;br /&gt;  numPanel1.add(btnc);&lt;br /&gt;  &lt;br /&gt;  numPanel2Sub1.setLayout(new GridLayout(4,1,5,5));&lt;br /&gt;  JButton btnMC=new JButton("MC");&lt;br /&gt;  JButton btnMR=new JButton("MR");&lt;br /&gt;  JButton btnMS=new JButton("MS");&lt;br /&gt;  JButton btnMPl=new JButton("M+");&lt;br /&gt;  numPanel2Sub1.add(btnMC);&lt;br /&gt;  numPanel2Sub1.add(btnMR);&lt;br /&gt;  numPanel2Sub1.add(btnMS);&lt;br /&gt;  numPanel2Sub1.add(btnMPl);&lt;br /&gt;  &lt;br /&gt;  numPanel2Sub2.setLayout(new GridLayout(4,5,5,5));&lt;br /&gt;  JButton btn7=new JButton("7");&lt;br /&gt;  JButton btn8=new JButton("8");&lt;br /&gt;  JButton btn9=new JButton("9");&lt;br /&gt;  &lt;br /&gt;  JButton btndv=new JButton("/");&lt;br /&gt;  JButton btnsqrt=new JButton("sqrt");&lt;br /&gt;  numPanel2Sub2.add(btn7);&lt;br /&gt;  numPanel2Sub2.add(btn8);&lt;br /&gt;  numPanel2Sub2.add(btn9);&lt;br /&gt;  numPanel2Sub2.add(btndv);&lt;br /&gt;  numPanel2Sub2.add(btnsqrt);&lt;br /&gt;  &lt;br /&gt;  JButton btn4=new JButton("4");&lt;br /&gt;  JButton btn5=new JButton("5");&lt;br /&gt;  JButton btn6=new JButton("6");&lt;br /&gt;  &lt;br /&gt;  JButton btnmul=new JButton("*");&lt;br /&gt;  JButton btnperc=new JButton("%");&lt;br /&gt;  numPanel2Sub2.add(btn4);&lt;br /&gt;  numPanel2Sub2.add(btn5);&lt;br /&gt;  numPanel2Sub2.add(btn6);&lt;br /&gt;  numPanel2Sub2.add(btnmul);&lt;br /&gt;  numPanel2Sub2.add(btnperc);&lt;br /&gt;  &lt;br /&gt;  JButton btn1=new JButton("1");&lt;br /&gt;  JButton btn2=new JButton("2");&lt;br /&gt;  JButton btn3=new JButton("3");&lt;br /&gt;  &lt;br /&gt;  JButton btnmin=new JButton("-");&lt;br /&gt;  JButton btn1bx=new JButton("1/x");&lt;br /&gt;  numPanel2Sub2.add(btn1);&lt;br /&gt;  numPanel2Sub2.add(btn2);&lt;br /&gt;  numPanel2Sub2.add(btn3);&lt;br /&gt;  numPanel2Sub2.add(btnmin);&lt;br /&gt;  numPanel2Sub2.add(btn1bx);&lt;br /&gt;  &lt;br /&gt;  JButton btn0=new JButton("0");&lt;br /&gt;  JButton btnPM=new JButton("+/-");&lt;br /&gt;  JButton btnpt=new JButton(".");&lt;br /&gt;  &lt;br /&gt;  JButton btnpl=new JButton("+");&lt;br /&gt;  JButton btneq=new JButton("=");&lt;br /&gt;  numPanel2Sub2.add(btn0);&lt;br /&gt;  numPanel2Sub2.add(btnPM);&lt;br /&gt;  numPanel2Sub2.add(btnpt);&lt;br /&gt;  numPanel2Sub2.add(btnpl);&lt;br /&gt;  numPanel2Sub2.add(btneq);&lt;br /&gt;  &lt;br /&gt;  numPanel2.setLayout(new FlowLayout());&lt;br /&gt;  numPanel2.add(numPanel2Sub1);&lt;br /&gt;  numPanel2.add(numPanel2Sub2);&lt;br /&gt;  &lt;br /&gt;  this.add(txtPanel);&lt;br /&gt;  this.add(numPanel1);&lt;br /&gt;  this.add(numPanel2);&lt;br /&gt;  &lt;br /&gt;  this.setTitle("My Calculator");&lt;br /&gt;  this.setDefaultCloseOperation(3);&lt;br /&gt;  this.setVisible(true);&lt;br /&gt;  this.setSize(390,235);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  new ComplexGUIDemo();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;GUI සම්බන්ද තවත් කරුණු අපි ඉදිරි පාඩම්වලදී සාකච්ඡා කරමු.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙම පාඩමට සම්බන්ද source codes බාගත කරගැනීම සඳහා සඳහා පහත ලින්ක් එක භාවිතා කරන්න.&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;span id="goog_1985319526"&gt;&lt;/span&gt;&lt;span id="goog_1985319527"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;a href="http://sites.google.com/site/sliitprogramming/sourcecodeforblogs/LayoutManagers.zip" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://i1004.photobucket.com/albums/af166/kdkanishka/blogRes/download.png" /&gt;&lt;/a&gt;&lt;a href="http://sites.google.com/site/sliitprogramming/sourcecodeforblogs/LayoutManagers.zip"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-8391951189493897151?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/8391951189493897151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=8391951189493897151&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/8391951189493897151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/8391951189493897151'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/08/gui-basic-layouts.html' title='GUI සැකසීම සඳහා Basic Layouts යොදාගන්නා අයුරු'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_zymieio832M/TGJEQx5s-QI/AAAAAAAAA4I/3vyV2oNz4LA/s72-c/FlowLayout.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-6924096954265403614</id><published>2010-07-31T10:32:00.001+05:30</published><updated>2010-07-31T10:40:24.378+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><title type='text'>Java වැඩසටහන් සඳහා User Interfaces සැකසීම :: Swing පැකේජය හැඳින්වීම III කොටස</title><content type='html'>&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;JRadioButton&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;විකල්ප කිහිපයක් දී ඇති විටදී ඉන් එක් විකල්පයක් තෝරාගැනීමට අවකාශ සැලසීමට මෙම component එක යොදාගත හැක. උදාහරණයක් පහත ඉදිරිපත් කර ඇත. Mr,Mrs,Ms,Dr යන විකල්ප වලින් එකක් පමණක් තෝරාගැනීමට මෙහිදී සිදුවේ. මෙම පාඩමෙන් සිදුකෙරෙන්නේ JRadioButton එකක් සාදාගන්නා ආකාරය පමණි. මේවායේ event handling සිදුකිරීම ඉදිරි පාඩම් වලදී සාකච්ඡා කෙරේ.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;JRadioButtonDemo.java&lt;/div&gt;&lt;pre class="java" name="code"&gt;import javax.swing.*;&lt;br /&gt;import java.awt.*;&lt;br /&gt;&lt;br /&gt;public class JRadioButtonDemo extends JFrame{&lt;br /&gt; &lt;br /&gt; public JRadioButtonDemo(){&lt;br /&gt;   setTitle("JRadioButton Demo");&lt;br /&gt;   setLayout(new FlowLayout(FlowLayout.LEADING  ));&lt;br /&gt;   setSize(300,300);&lt;br /&gt;   JRadioButton jrb_mr=new JRadioButton("Mr");&lt;br /&gt;   JRadioButton jrb_mrs=new JRadioButton("Mrs");&lt;br /&gt;   JRadioButton jrb_ms=new JRadioButton("Ms");&lt;br /&gt;   JRadioButton jrb_dr=new JRadioButton("Dr");&lt;br /&gt;   //grouping&lt;br /&gt;   ButtonGroup btnGroup=new ButtonGroup();&lt;br /&gt;   btnGroup.add(jrb_mr);&lt;br /&gt;   btnGroup.add(jrb_mrs);&lt;br /&gt;   btnGroup.add(jrb_ms);&lt;br /&gt;   btnGroup.add(jrb_dr);&lt;br /&gt;   //add them to the JFrame&lt;br /&gt;   add(jrb_mr);&lt;br /&gt;   add(jrb_mrs);&lt;br /&gt;   add(jrb_ms);&lt;br /&gt;   add(jrb_dr);&lt;br /&gt;   setVisible(true);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  new JRadioButtonDemo();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Output:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zymieio832M/TFMsU8xTOgI/AAAAAAAAA28/1ZTG1yJIpvU/s1600/JRadioDemo.png" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;" title="JRadioButton Demo"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zymieio832M/TFMsU8xTOgI/AAAAAAAAA28/1ZTG1yJIpvU/s1600/JRadioDemo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;line14:&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙහිදී අපි සාදාගත් JRadioButton ටික group කිරීම සිදුකෙරේ. මේවා group නොකලහොත් Mr, Mrs, Ms, Dr යන විකල්පයන්ගෙන් එකක් හෝ කිහිපයක් තේරීම සිදුකල හැකිය. නමුත් JRadioButton යෙදීමේ අරමුණ මෙය නොවන නිසා සාමාන්‍යයෙන් JRadioButtons group කිරීම සිදුවේ.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;JList &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt; කිසියම් elements ප්‍රමාණයක් පහත ආකාරයට දැක්වීමට JList නම් swing component එක භාවිතාකෙරේ.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_zymieio832M/TFN9SNZrNtI/AAAAAAAAA3A/137q7Dx-ywU/s1600/JListDemo.png" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;" title="JList Demo"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_zymieio832M/TFN9SNZrNtI/AAAAAAAAA3A/137q7Dx-ywU/s1600/JListDemo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;උදා:&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &lt;span style="font-size: small;"&gt;JListDemo.java&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre class="Java" name="code"&gt;import javax.swing.*;&lt;br /&gt;import java.awt.*;&lt;br /&gt;&lt;br /&gt;public class JListDemo extends JFrame{&lt;br /&gt; &lt;br /&gt; public JListDemo(){&lt;br /&gt;   setTitle("JList Demo");&lt;br /&gt;   setLayout(new FlowLayout(FlowLayout.LEADING  ));&lt;br /&gt;   setSize(300,300);&lt;br /&gt;   &lt;br /&gt;   DefaultListModel dlm=new DefaultListModel();&lt;br /&gt;   JList countries=new JList(dlm);&lt;br /&gt;   dlm.addElement("Sri Lanka");&lt;br /&gt;   dlm.addElement("India");&lt;br /&gt;   dlm.addElement("Japan");&lt;br /&gt;   dlm.addElement("Usa");&lt;br /&gt;   dlm.addElement("UK");&lt;br /&gt;   &lt;br /&gt;   add(countries); &lt;br /&gt;   setVisible(true);&lt;br /&gt; }&lt;br /&gt;   &lt;br /&gt;   public static void main(String args[]){&lt;br /&gt;  new JListDemo();&lt;br /&gt;   } &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;JList එක construct කරගැනීමට පෙර &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DefaultListModel &lt;/span&gt;එකක් සාදාගැනීම කල යුතුයි. පසුව අපි සාදාගත් JList එකට දත්ත add කිරීම්ට JList එක clear කිරීමට, JList එකෙන් elements ඉවත් කිරීම මෙම &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DefaultListModel &lt;/span&gt;object එක හරහා සිදුවේ.Line11&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;දී මෙම DefaultListModel object එකක් සාදාගෙන ඇත.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;span style="font-family: inherit;"&gt;Line12: &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;මෙහිදී අපි සාදාගත් DefaultListModel object එක සහ JList එක සම්බන්ද කිරීම සිදුකෙරේ.&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;දැන් අපි JList එක හා සම්බන්ද වැදගත් method කිහිපයක් සලකා බලමු.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;     &lt;th scope="col" style="background-color: #d0e0e3;" width="30%"&gt;&lt;div align="center"&gt;JList Methods &lt;/div&gt;&lt;/th&gt;     &lt;th scope="col" style="background-color: #d9ead3;" width="70%"&gt;&lt;div align="center"&gt;විස්තරය&lt;/div&gt;&lt;/th&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;&lt;span style="color: blue;"&gt;int&lt;/span&gt; getSelectedIndex()&lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;user විසින් list එකීහි මේ වනවිට select කර ඇති item එකෙහි index එක ලබාදේ.&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;&lt;span style="color: blue;"&gt;void&lt;/span&gt; setSelectedIndex()&lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;Program එක තුලින් list එකෙහි item එකක් select කර ඇති ලෙසට දක්වයි.&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;&lt;span style="color: blue;"&gt;Object&lt;/span&gt; getSelectedValue()&lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;user විසින් list එකීහි මේ වනවිට select කර ඇති item එක ලබාදේ&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;&lt;span style="color: blue;"&gt;boolean&lt;/span&gt; isSelectedIndex(&lt;span style="color: blue;"&gt;int&lt;/span&gt; idx) &lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;ලබාදෙන int value එකක් select වී ඇති item එකේ index value එක නම් true ලෙසටද නැතිනම් false ලෙසටද return කරයි&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;setModel(&lt;span style="color: blue;"&gt;ListModel&lt;/span&gt; model) &lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;සකස් කරගත් ListModel object එකක් JList එක හා සම්බන්ද කිරීමට යොදාගැනේ&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="background-color: #d0e0e3;"&gt;&lt;div align="center"&gt;&lt;b&gt;DefaultListModel Methods&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;     &lt;td style="background-color: #d9ead3;"&gt;&lt;div align="center"&gt;&lt;b&gt;විස්තරය&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;void add(&lt;span style="color: blue;"&gt;int &lt;/span&gt;index, &lt;span style="color: blue;"&gt;Object &lt;/span&gt;element)&lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;ලබාදෙන index අගයකට(location එකකට) item එකක් ඇතුලු කිරීම සිදුකරයි&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;&lt;span style="color: blue;"&gt;void&lt;/span&gt; addElement(&lt;span style="color: blue;"&gt;Object&lt;/span&gt; obj)&lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;list එකේ අගට item එකක් ඇතුලු කිරීම සිදුකරයි&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;&lt;span style="color: blue;"&gt;int &lt;/span&gt;capacity() &lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;දැනට list එකේ capacity එක නොහොත් items ගනණ ලබාදේ&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;&lt;span style="color: blue;"&gt;void &lt;/span&gt;clear() &lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;list එකේ ඇති සියලු items clear කිරීම සිදුකරයි.&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;&lt;span style="color: blue;"&gt;boolean&amp;nbsp;&lt;/span&gt; contains(&lt;span style="color: blue;"&gt;Object&lt;/span&gt; obj) &lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;ලබදෙන Object එකක් list එක තුල අන්තර්ගත වේනම් true ලෙසද නැත්නම් false ලෙසටද ලබාදේ.&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;&lt;span style="color: blue;"&gt;Object&lt;/span&gt; elementAt(&lt;span style="color: blue;"&gt;int&lt;/span&gt; index) &lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;ලබාදෙන index එකක ඇති value එක ලබාදේ&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;&lt;span style="color: blue;"&gt;boolean &lt;/span&gt;isEmpty() &lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;list එක empty නම් true ලෙසටද නැත්නම් false ලෙසටද ලබාදේ&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;&lt;span style="color: blue;"&gt;Object &lt;/span&gt;remove(&lt;span style="color: blue;"&gt;int&lt;/span&gt; index) &lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;ලබාදෙන index එකක ඇති item එක ඉවත්කරයි&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td height="21" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="style1"&gt;&lt;span style="color: blue;"&gt;void&lt;/span&gt; removeAllElements() &lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&amp;nbsp;list එක තුල ඇති සියලු items ඉවත් කරයි&lt;/td&gt;   &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/api/javax/swing/JTextArea.html" target="_blank" tip=""&gt;JList එකට අදාල documentation එක කියවීම සඳහා මෙම ලින්ක් එකෙන් යන්න.&lt;/a&gt;&lt;br /&gt;&lt;a href="http://download.oracle.com/javase/6/docs/api/javax/swing/JList.html" target="_blank" tip=""&gt;DefaultListModel එකට අදාල documentation එක කියවීම සඳහා මෙම ලින්ක් එකෙන් යන්න.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;JList&lt;/span&gt; එකට scroll bar යෙදීමට අවශ්‍ය නම්  JScrollPane එකක් යොදාගත හැකිය. එය සිදුකරන අයුරු පහත දැක්වේ.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;pre class="Java" name="code"&gt;import javax.swing.*;&lt;br /&gt;import java.awt.*;&lt;br /&gt;&lt;br /&gt;public class JListDemo extends JFrame{&lt;br /&gt; &lt;br /&gt; public JListDemo(){&lt;br /&gt;   setTitle("JList Demo");&lt;br /&gt;   setLayout(new FlowLayout(FlowLayout.LEADING  ));&lt;br /&gt;   setSize(300,300);&lt;br /&gt;   &lt;br /&gt;   DefaultListModel dlm=new DefaultListModel();&lt;br /&gt;   JList countries=new JList(dlm);  &lt;br /&gt;   &lt;br /&gt;   JScrollPane scrollP=new JScrollPane(countries);&lt;br /&gt;   scrollP.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);&lt;br /&gt;&lt;br /&gt;   dlm.addElement("Sri Lanka");&lt;br /&gt;   dlm.addElement("India");&lt;br /&gt;   dlm.addElement("Japan");&lt;br /&gt;   dlm.addElement("Usa");&lt;br /&gt;   dlm.addElement("Canada");&lt;br /&gt;   dlm.addElement("Australlia");&lt;br /&gt;   dlm.addElement("Italy");&lt;br /&gt;   dlm.addElement("South Affrica");&lt;br /&gt;   dlm.addElement("Thailand");&lt;br /&gt;   &lt;br /&gt;   add(scrollP); &lt;br /&gt;   setVisible(true);&lt;br /&gt; }&lt;br /&gt;   &lt;br /&gt;   public static void main(String args[]){&lt;br /&gt;  new JListDemo();&lt;br /&gt;   } &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Output:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zymieio832M/TFOSjU-CyfI/AAAAAAAAA3E/Cu3QMpz-a8s/s1600/JListWithJScrollPane.png" imageanchor="1" rel="shadowbox" style="margin-left: 1em; margin-right: 1em;" title="JList with Scrollbars"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_zymieio832M/TFOSjU-CyfI/AAAAAAAAA3E/Cu3QMpz-a8s/s1600/JListWithJScrollPane.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;පහත ජාවා ඇප්ලට් එක භාවිතයෙන් ඔබට ඉහත සඳහන් කල methods හි ක්‍රියාකාරීත්වය පහසුවෙන් වටහාගත හැකිවෙතැයි සිතමි.&lt;/span&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;object align="center"&gt; &lt;applet codeBase="http://sites.google.com/site/ansisliit/Home/" width="360" height="527" archive="JListDemo.jar" code="JListDemoAppl.class" &gt;&lt;/APPLET&gt; &lt;/object&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;පාඩමේ භාවිතා කර ඇති මූලාශ්‍ර කේත(source codes) බාගත කරගැනීම සඳහා පහත ලින්ක් එක භාවිතා කරන්න. &lt;/span&gt;&lt;/div&gt;&lt;a href="http://sites.google.com/site/sliitprogramming/sourcecodeforblogs/JListDemonstration.zip?attredirects=0&amp;amp;d=1" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://i1004.photobucket.com/albums/af166/kdkanishka/blogRes/download.png" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-6924096954265403614?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/6924096954265403614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=6924096954265403614&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/6924096954265403614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/6924096954265403614'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/07/java-user-interfaces-swing-iii.html' title='Java වැඩසටහන් සඳහා User Interfaces සැකසීම :: Swing පැකේජය හැඳින්වීම III කොටස'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_zymieio832M/TFMsU8xTOgI/AAAAAAAAA28/1ZTG1yJIpvU/s72-c/JRadioDemo.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-4544963419008933161</id><published>2010-07-23T21:55:00.000+05:30</published><updated>2010-10-07T11:19:17.005+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><title type='text'>Java වැඩසටහන් සඳහා User Interfaces සැකසීම :: Swing පැකේජය හැඳින්වීම II කොටස</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අපි ඉහත කලින් පාඩමේදී සාකච්ඡා කලේ JLabel, JButton හා JTextField පිලිබඳවයි. මෙම පාඩමෙන් තවත් swing components කිහිපයක් පිලිබඳවා සාකච්ඡා කරමු.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;JTextArea&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙය JTextField සඳහා බොහෝ සමාන වුවද මෙහි lines කිහිපයකින් යුතු user inputs ගත හැක. එනම් address එකක් හෝ කිසියම් description එකක් ගැනීමේදී මෙය භාවිතා කල හැක. &lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;JTextArea(&lt;span style="color: #351c75;"&gt;int&lt;/span&gt; rows, &lt;span style="color: #351c75;"&gt;int&lt;/span&gt; columns)&lt;br /&gt;JTextArea(&lt;span style="color: #351c75;"&gt;String&lt;/span&gt; text)&lt;br /&gt;JTextArea(&lt;span style="color: #351c75;"&gt;String&lt;/span&gt; text, &lt;span style="color: #351c75;"&gt;int&lt;/span&gt; rows, &lt;span style="color: #351c75;"&gt;int&lt;/span&gt; columns)&lt;/span&gt; &lt;/span&gt;&lt;/blockquote&gt;උදා;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="158" src="http://4.bp.blogspot.com/_zymieio832M/TEm4VAtMoQI/AAAAAAAAA2g/M_i6HnZzh2E/s320/JTextAreaDemoWindow.png" width="320" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අපිට අවශ්‍ය නම් මෙම &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;JTextArea&lt;/span&gt; සඳහා scrollbar යෙදිය හැක. මේ සඳහා කල යුත්තේ &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;JScrollPane&lt;/span&gt; එකක් තුලට &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;JTextArea&lt;/span&gt; එක දැමීමයි. මෙය සිදුකරන අයුරු පහත දැක්වේ.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre class="java" name="code"&gt;import javax.swing.*;&lt;br /&gt;import java.awt.*;&lt;br /&gt;class JTextAreaDemo extends JFrame{&lt;br /&gt;&lt;br /&gt; public JTextAreaDemo(){&lt;br /&gt;  setTitle("JTextArea Demo");&lt;br /&gt;  JTextArea jtxt=new JTextArea(10,20);&lt;br /&gt;  JScrollPane scrollpane=new JScrollPane(jtxt);&lt;br /&gt;  &lt;br /&gt;  setLayout(new FlowLayout());&lt;br /&gt;  setSize(300,300);&lt;br /&gt;  setVisible(true);&lt;br /&gt;  add(new JLabel("Description :"));&lt;br /&gt;  add(scrollpane);&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  new JTextAreaDemo();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;Output:&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zymieio832M/TEm68aOX4aI/AAAAAAAAA2k/1gEEISqdPFU/s1600/JTextAreaDemoWindowWithScrolls.png" /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;JScrollPane &lt;/span&gt;එකෙහි constructor එකට(line 8) JTextArea object එක වන jtxt object එක ලබාදීම මගින් scrollpane එකට textarea එක ඇතුලුකිරීම සිදුකර ඇත.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;JTextArea &lt;/span&gt;එකෙහි method ලෙස getText(),setText() බහුලව යෙදේ.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/api/javax/swing/JTextArea.html" target="_blank"&gt;JTextArea එකට අදාල documentation එක කියවීම සඳහා මෙම ලින්ක් එකෙන් යන්න.&lt;/a&gt; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;hr /&gt;&lt;br /&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;JCheckBox&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;විකල්ප 1ක් හෝ කීපයක් තේරීමට ඉඩලබාදිය යුතුවිට මෙය භාවිතා කෙරේ.&lt;/span&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_zymieio832M/TEm-QdUohXI/AAAAAAAAA2o/Mnn1CQAAdxY/s1600/JCheckBox.png" /&gt;&lt;/div&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;isSelected()&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;method එක භාවිතා කර යම් CheckBox එකක් select කර ඇත්දැයි පරීක්ෂා කල හැක. Event handling පාඩමේදී JCheckBox පිලිබඳ වැඩිදුරටත් සාකච්ඡා කෙරේ.&lt;/span&gt;&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/api/javax/swing/JCheckBox.html" target="_blank"&gt;JCheckBox එකට අදාල documentation එක කියවීම සඳහා මෙම ලින්ක් එකෙන් යන්න.&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-4544963419008933161?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/4544963419008933161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=4544963419008933161&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/4544963419008933161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/4544963419008933161'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/07/java-user-interfaces-swing-ii.html' title='Java වැඩසටහන් සඳහා User Interfaces සැකසීම :: Swing පැකේජය හැඳින්වීම II කොටස'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_zymieio832M/TEm4VAtMoQI/AAAAAAAAA2g/M_i6HnZzh2E/s72-c/JTextAreaDemoWindow.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-359409975672341438</id><published>2010-07-23T12:55:00.001+05:30</published><updated>2010-12-07T19:53:32.625+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='swing'/><title type='text'>Java වැඩසටහන් සඳහා User Interfaces සැකසීම :: Swing පැකේජය හැඳින්වීම I කොටස</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අතුරු මුහුණත්(&lt;b&gt;G&lt;/b&gt;raphical &lt;b&gt;U&lt;/b&gt;ser &lt;b&gt;I&lt;/b&gt;nterfaces) යනු යම් පරිගණක වැඩසටහනක් භාවිතා කිරීම පහසු කරවන්නක්. සාමාන්‍ය පරිගණක පරිශීලකයෙක් නම් මේ වකවානුවේ බොහෝ දුරට භාවිතා කරනුයේ මෙවැනි වැඩසටහන්. ජාවා පරිගණක භාෂාව යොදාගෙන මෙවැනි GUI සහිත වැඩසටහන් සැකසීමට විශේෂ පහසුකම් ලබාදී තිබෙනවා. මේ සඳහා යොදාගත හැකි ප්‍රධාන ජාවා පැකේජ 2ක තමයි&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;AWT (Abstract Window Toolkit)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Swing&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;විශේෂ හේතූන් කිහිපයක් නිසා Swing පැකේජය භාවිතා කිරීම ප්‍රයෝජනවත් වනවා. ඉන් ප්‍රධානම  හේතුව වන්නේ  swing පැකේජය pure Java වලින් ලියැවුනු එකක් වීම. එම නිසා සුවිශේෂ වාසි කිහිපයක් අදාල වැඩසටහනට ලැබෙනවා. මීට අමතරව AWT සහය දක්වන සියලුම පහසුකම් සඳහා swing ද සහය දක්වනවා. AWT හි නොමැති පහසුකම් ගනණාවක්ද swing හි අඩංගු වනවා.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;AWT සහ Swing හි වාසි අවාසි පිලිබඳ වැඩි විස්තර කියවීම සඳහා &lt;a href="http://edn.embarcadero.com/article/26970" target="_blank"&gt;මෙම ලින්ක් එක&lt;/a&gt; භාවිතා කරන්න.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අපි මෙම පාඩම් මාලාවේදී වැඩිදුර සාකච්ඡා කිරීමට බලාපොරොත්තු වන්නේ Swing පැකේජය පිලිබඳවයි. NetBeans වැනි IDE එකක් යොදාගෙන ඉතා පහසුවෙන් GUI (අතුරු මුහුනත්) සාදාගත හැකිවුවද මෙය&lt;/span&gt;&lt;span style="font-size: large;"&gt; නවකයින්ගේ දැණුම මොට කරදැමීමට එය හේතුවන බව මගේ අදහසයි. එම නිසා මුලදී Notepad හෝ Notepad++ වැනි text editor භාවිතා කර GUI සඳහා අදාල කේත ලිවීමෙන් ඒ සම්බන්ද හොඳ අවබෝධයක් ලබාගෙන  පසුව ක්‍රමලේඛන කටයුතු පහසු කරගැනීමට NetBeans භාවිතාකිරීම වරදක් නැහැ.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;දැන් අපි බලමු swing components කිහිපයක විස්තර කිහිපයක්.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: justify;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;JLabel&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zymieio832M/TEkc-Ig1EDI/AAAAAAAAA2M/MAnmALcPCPY/s1600/JLabel.png" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;jLabel එක වැදගත් වනුයේ user ට යම් විස්තරයක් පෙන්වීමේදීය.&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;jLabel එකක් සාදාගැනීම.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Constructors&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;JLabel(&lt;span style="color: #351c75;"&gt;String&lt;/span&gt; text)&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;JLabel(&lt;span style="color: #351c75;"&gt;Icon&lt;/span&gt; ico)&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;JLabel(&lt;span style="color: #351c75;"&gt;Strnig&lt;/span&gt; text,&lt;span style="color: #351c75;"&gt;Icon&lt;/span&gt; ico,&lt;span style="color: #0b5394;"&gt;int&lt;/span&gt; align)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;note : &lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;align &lt;/span&gt;&lt;/span&gt;සඳහා දියහැකි අගයන්&lt;/span&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;JLabel.&lt;span style="color: #38761d;"&gt;LEFT&lt;/span&gt; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;JLabel.&lt;span style="color: #38761d;"&gt;CENTER&lt;/span&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;JLabel.&lt;span style="color: #38761d;"&gt;RIGHT&lt;/span&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;JLabel.&lt;span style="color: #38761d;"&gt;LEADING&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;ඉහත constructors යොදාගෙන JLabel 3ක් සාදන ආකාරය දැන් අපි බලමු.&lt;/span&gt;&lt;br /&gt;Constructor 1&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;JLabel lbl1=&lt;span style="color: blue;"&gt;new&lt;/span&gt; JLabel(&lt;span style="color: #990000;"&gt;"Sri Lanka"&lt;/span&gt;);&lt;/span&gt; &lt;/span&gt;&lt;/blockquote&gt;Constructor &lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;2&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;ImageIcon ico=&lt;span style="color: blue;"&gt;new&lt;/span&gt; ImageIcon(&lt;span style="color: #990000;"&gt;"sriLanka.png"&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;JLabel lbl2=&lt;span style="color: blue;"&gt;new&lt;/span&gt; JLabel(ico);&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Constructor &lt;span style="font-size: small;"&gt;3&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;JLabel lbl3=&lt;span style="color: blue;"&gt;new&lt;/span&gt; JLabel(&lt;span style="color: #990000;"&gt;"Sri Lanka"&lt;/span&gt;,ico,JLabel.&lt;span style="color: #38761d;"&gt;LEFT&lt;/span&gt;);&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;දැන් අපි බලමු ඉහත &lt;/span&gt;&lt;span style="font-size: large;"&gt;Label 3ක්.&lt;/span&gt;&lt;span style="font-size: large;"&gt; යොදාගෙන සාදන ලද සරළ GUI එකක් සඳහා කේතය.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Note: &lt;span style="color: #351c75;"&gt;පහත කේතයේ ඇති සියලු කොටස් ඉදිරියේදී සාකච්ඡා කෙරේ එබැවින් එහි JLabel සම්බන්ද කේත කොටස් පමණක් මෙහිදී අධ්‍යයනය කරන්න.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;SwingDemo.java&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: large;"&gt;&lt;span style="color: #351c75;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;pre class="java" name="code"&gt;import javax.swing.*;&lt;br /&gt;import java.awt.*;&lt;br /&gt;&lt;br /&gt;class SwingDemo extends JFrame{&lt;br /&gt; public SwingDemo(){&lt;br /&gt;  setTitle("Swing Demo");&lt;br /&gt;  setLayout(new GridLayout(3,1));&lt;br /&gt;  JLabel lbl1=new JLabel("Sri Lanka");&lt;br /&gt;  ImageIcon ico=new ImageIcon("sriLanka.png");&lt;br /&gt;  JLabel lbl2=new JLabel(ico);&lt;br /&gt;  JLabel lbl3=new JLabel("Sri Lanka",ico,JLabel.LEFT);&lt;br /&gt;  add(lbl1);&lt;br /&gt;  add(lbl2);&lt;br /&gt;  add(lbl3);&lt;br /&gt;  setSize(300,300);&lt;br /&gt;  setVisible(true);  &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  new SwingDemo();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Output:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_zymieio832M/TEknjrB_wWI/AAAAAAAAA2Q/tP-3s3IZazg/s1600/JLabel_Constructors.png" /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;JLabel class එකෙහි methods&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;setText(String txt)&lt;/span&gt; -&amp;gt;JLabel එකෙට text එකක් ලබා දීමට .&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;getText()&lt;/span&gt; JLabel -&amp;gt;එකෙහි දැනට ඇති text එක ලබාගැනීමට.&amp;nbsp;&lt;/blockquote&gt;&lt;a href="http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/api/javax/swing/JLabel.html#JLabel%28java.lang.String,%20javax.swing.Icon,%20int%29" target="_blank"&gt;JLabel එකට අදාල documentation එක කියවීම සඳහා මෙම ලින්ක් එකෙන් යන්න.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;JButton &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;කිසියම් විධානයක් user ගේ අනුදැනුම මත ක්‍රියාත්මක කරවීම සඳහා යොදාගැනේ. මෙය Swing components අතුරින් බහුල වශයෙන් යෙදෙන component එකකි.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Constructors&lt;/span&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;JButton(&lt;span style="color: #351c75;"&gt;String&lt;/span&gt; text)&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;JButton(&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #351c75;"&gt;String&lt;/span&gt; text,&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #351c75;"&gt;Icon&lt;/span&gt; ico)&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;උදා:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="253" src="http://1.bp.blogspot.com/_zymieio832M/TEkzZJPVKrI/AAAAAAAAA2Y/BFJaRLHE2Bc/s320/JButtonDemo.png" width="320" /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Code:&lt;br /&gt;&lt;pre class="Java" name="code"&gt;ImageIcon ico=new ImageIcon("icon5.jpg");&lt;br /&gt;  JButton button2=new JButton("Show Details",ico);&lt;br /&gt;  add(button1);&lt;br /&gt;  JLabel lbl1=new JLabel("");&lt;br /&gt;  add(lbl1);&lt;br /&gt;  add(button2);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/api/javax/swing/JButton.html" target="_blank"&gt;JButton එකට අදාල documentation එක කියවීම සඳහා මෙම ලින්ක් එකෙන් යන්න.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;JTextField&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;User ගෙන් කිසියම් text  input එකක් ලබාගැනීම සඳහා භාවිතා කෙරේ. (උදා: user name, age )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Constructors&lt;/span&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;JTextField()&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;JTextField(&lt;span style="color: #351c75;"&gt;String&lt;/span&gt; text)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;JTextField(&lt;span style="color: #351c75;"&gt;int&lt;/span&gt; Columns)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;JTextField(&lt;span style="color: #351c75;"&gt;String&lt;/span&gt; text,&lt;span style="color: #351c75;"&gt;int&lt;/span&gt; Columns)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;උදා:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zymieio832M/TEk2Y5YBdNI/AAAAAAAAA2c/o_ncDn8nmnY/s1600/JTextFieldDemo.png" /&gt;&lt;/div&gt;Methods:&lt;br /&gt;getText() user විසින් textbox එකට ඇතුලුකල text එක ලබාගැනීමට&lt;br /&gt;setText(String str) textbox එකට text එකක් set කිරීම සඳහා&lt;br /&gt;&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/api/javax/swing/JTextField.html" target="_blank"&gt;JTextField එකට අදාල documentation එක කියවීම සඳහා මෙම ලින්ක් එකෙන් යන්න.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;අපි ඊලඟ පාඩමෙන් අනෙකුත් swing components පිලිබඳ සාකච්ඡා කරමු.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-359409975672341438?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/359409975672341438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=359409975672341438&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/359409975672341438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/359409975672341438'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/07/java-user-interfaces-swing-i.html' title='Java වැඩසටහන් සඳහා User Interfaces සැකසීම :: Swing පැකේජය හැඳින්වීම I කොටස'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_zymieio832M/TEkc-Ig1EDI/AAAAAAAAA2M/MAnmALcPCPY/s72-c/JLabel.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-3795872265159091859</id><published>2010-07-16T23:31:00.000+05:30</published><updated>2010-07-16T23:31:19.094+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>ජාවා interface සංකල්පය සහ එහි යෙදීම්</title><content type='html'>&lt;span style="font-size: x-large;"&gt;I&lt;/span&gt;&lt;span style="font-size: large;"&gt;nterface එකක් කිව්වාම එකපාරටම මතක් වෙන්නෙ GUI එකක් නැත්නම් web form එකක් නේ. නමුත් මෙම පාඩමේදී අපි සලකා බලන්නේ වස්තු පාදක සංකල්පයක් වන interface සංකල්පය පිලිබඳවයි. මෙම සංකල්පයත් ජාවා ක්‍රමලේඛනයේ යෙදීමේදී බහුල වශයෙන් භාවිතා වන්නක්. මෙම පාඩමේදී පෙර පාඩම වන &lt;b&gt;&lt;a href="http://javaxclass.blogspot.com/2010/07/abstract-classes.html" target="_blank"&gt;&lt;i&gt;"ජාවා තුල Abstract Classes යොදාගන්නා අයුරු"&lt;/i&gt;&lt;/a&gt;&lt;/b&gt; යන පාඩමේදී උගත් කරුණු වැදගත් වන නිසා අවශ්‍ය නම් නැවත එය අධ්‍යයනය කරන්න.&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;interface එකක ඇති ප්‍රධාන ලක්ෂණ ගැන අපි සලකා බලමු.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;interface එකක් යනු සම්පූර්ණයෙන්ම abstract class එකකි.&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;interface එකක ඇති methods සියල්ලම අර්ථදක්වා(define) ඇත්තේ method body එකකින් තොරවය(මෙයට හේතුව interface එක fully abstract වීමයි. එමනිසා මෙහි methods සියල්ලක්ම abstract වේ)&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;interface එකක් තුල class variables (උදා : &lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="color: purple;"&gt;private int&lt;/span&gt; age;&lt;/span&gt;&lt;/span&gt;) පැවතිය නොහැක. නමුත් final attributes පැවතිය හැක(උදා: &lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="color: purple;"&gt;private final&lt;/span&gt; SIZE=512;&lt;/span&gt;&lt;/span&gt;)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;මීලඟට අපි සලකා බලමු ලියන ලද interface එකක් භාවිතා කිරීමේදී සැලකිය යුතු කරුණු.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;class එකකට අවශ්‍ය නම් interface එකකට වැඩි ප්‍රමාණයක් භාවිතා කල හැක. එනම් class එකකට අවශ්‍ය නම් interface එකකට වැඩි ප්‍රමාණයක් implement කල හැක. මේ සඳහා &lt;span style="color: purple; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;implement&lt;/span&gt; keyword එක භාවිතාවේ.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;යම් class එකක් interface එකක් implement කර ඇත්නම් එම interface එකෙහි ඇති සියලුම methods override කිරීම අනිවාර්‍යයෙන්ම කල යුතුය&lt;/span&gt;&lt;span style="font-size: large;"&gt;.&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;class එක abstract නම් එසේ අවශ්‍ය නොවේ.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;class වලදී මෙන් inheritance සංකල්පය interface සඳහාද භාවිතා කල හැක. එනම් interface එකකදී වෙනත් interface එකක් extend කල හැක.&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;multiple inheritance නම්&lt;/span&gt;&lt;span style="font-size: large;"&gt; සංකල්පය C++ වලදී මෙන්  java තුලදී කිරීමට ඉඩදී නොමැති වුවද, මෙම interface සංකල්පය යොදාගෙන එම ක්‍රියාවලිය ඉටුකරගත හැක.&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;අපි දැන් බලමු interface එකක් ලිවීම සඳහා භාවිතා වන syntax එක&lt;/span&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;interface MyInterface {&lt;br /&gt; &lt;br /&gt; final int VAL=512;&lt;br /&gt; &lt;br /&gt; void myMethod1();&lt;br /&gt; int myMethod2();&lt;br /&gt; ......................&lt;br /&gt; ...................... &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;දැන් අපි බලමු interface සංකල්පයේ යෙදීම් ආදර්ශනය කිරීමට ලියන ලද සරල වැඩසටහනක්&lt;/span&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;/**    &lt;br /&gt;*class  : CarControllerDemo    &lt;br /&gt;*Author : Kanishka Dilshan    &lt;br /&gt;*Purpose: Describe interface concept in Java  &lt;br /&gt;*Blog   : http://javaxclass.blogspot.com    &lt;br /&gt;*/ &lt;br /&gt;&lt;br /&gt;interface CarController{&lt;br /&gt; final float MAX_SPEED=320f;&lt;br /&gt; &lt;br /&gt; void accelerate(); //accelerate the car&lt;br /&gt; void applyBreak(); //apply breaks&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class BMW implements CarController{&lt;br /&gt; private String model;&lt;br /&gt; private float speed;&lt;br /&gt; &lt;br /&gt; public BMW(String model){&lt;br /&gt;  this.model=model;&lt;br /&gt;  speed=0f;&lt;br /&gt; }&lt;br /&gt; public void accelerate(){&lt;br /&gt; //implementing accelerate() method in the interface&lt;br /&gt;  if(speed &amp;lt; MAX_SPEED)&lt;br /&gt;   speed+=15;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void applyBreak(){&lt;br /&gt; //implementing applyBreak() method in the interface&lt;br /&gt;  if(!((speed-20) &amp;lt; 0))&lt;br /&gt;   speed-=20;&lt;br /&gt;  else&lt;br /&gt;   speed=0;   &lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void showDetails(){&lt;br /&gt;  System.out.println("Car model : "+model);&lt;br /&gt;  System.out.println("Speed     : "+speed);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//another car called Nissan implements CarController interface&lt;br /&gt;class Nissan implements CarController{&lt;br /&gt; private String model;&lt;br /&gt; private float speed;&lt;br /&gt; &lt;br /&gt; public Nissan(String model){&lt;br /&gt;  this.model=model;&lt;br /&gt;  speed=0f;&lt;br /&gt; }&lt;br /&gt; public void accelerate(){&lt;br /&gt; //implementing accelerate() method in the interface&lt;br /&gt;  if(speed &amp;lt; MAX_SPEED)&lt;br /&gt;   speed+=15;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void applyBreak(){&lt;br /&gt; //implementing applyBreak() method in the interface&lt;br /&gt;  if(!((speed-25) &amp;lt; 0))&lt;br /&gt;   speed-=25;&lt;br /&gt;  else&lt;br /&gt;   speed=0;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void showDetails(){&lt;br /&gt;  System.out.println("Car model : "+model);&lt;br /&gt;  System.out.println("Speed     : "+speed);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class CarControllerDemo{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  //creating BMW car object&lt;br /&gt;  BMW car1=new BMW("BMW M6");&lt;br /&gt;  Nissan car2=new Nissan("Altima Sedan");&lt;br /&gt;  &lt;br /&gt;  //accelerate car1 twice&lt;br /&gt;  car1.accelerate();&lt;br /&gt;  car1.accelerate();&lt;br /&gt;  //applyBreak() for car1&lt;br /&gt;  car1.applyBreak();&lt;br /&gt;  car1.showDetails();&lt;br /&gt;  &lt;br /&gt;  //accelerate car2 4 times&lt;br /&gt;  car2.accelerate();&lt;br /&gt;  car2.accelerate();   &lt;br /&gt;  car2.accelerate();&lt;br /&gt;  car2.accelerate(); &lt;br /&gt;  //applyBreak() for car2&lt;br /&gt;  car2.applyBreak();  &lt;br /&gt;  car2.showDetails();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Output:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_zymieio832M/TECWY9dzG8I/AAAAAAAAA1I/dhK26StosXE/s1600/CarControllerDemo.png" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;පැහැදිලි කිරීම&lt;/span&gt;:&lt;br /&gt;&lt;span style="font-size: large;"&gt;ඉහත උදාහරණයේ Line8 සිට Line13 දක්වා ඇත්තේ define කරන ලද interface එකයි. BMW සහ Nissan යන class තුලදී implement කර ඇත්තේ එම interface එක තුල ඇති accelerate() සහ applybreak() යන methods දෙකයි. මීට පෙර පාඩම් වලදී උගත් සිද්ධාන්ත භාවිතා කරමින් ඉහත කේතයේ අනෙකුත් කොටස් අවබෝධ කිරීම ඔබගේ කාර්‍යයකි.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;ජාවා ක්‍රමලේඛන භාෂාව යොදාගෙන වැඩසටහන් ලිවීමේදී පහත අවස්ථා වලදී මෙම interface භාවිතය ප්‍රායෝගිකව දැකගත හැකිය&lt;/span&gt;&lt;span style="font-size: large;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Event handling&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Database connectivity&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;මෙම පාඩමත් සමග ජාවා වල මූලික OOP සංකල්ප කොටස අවසන් වේ. ඉදිරි පාඩම් වලදී ජාවහි අතුරු මුහුණත් සැකසීම පිලිබඳ අධ්‍යයනය කරමු.&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-3795872265159091859?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/3795872265159091859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=3795872265159091859&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/3795872265159091859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/3795872265159091859'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/07/interface.html' title='ජාවා interface සංකල්පය සහ එහි යෙදීම්'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_zymieio832M/TECWY9dzG8I/AAAAAAAAA1I/dhK26StosXE/s72-c/CarControllerDemo.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-2413163033331019682</id><published>2010-07-10T19:15:00.001+05:30</published><updated>2010-10-07T11:19:48.801+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>ජාවා තුල Abstract Classes  යොදාගන්නා අයුරු</title><content type='html'>&lt;span style="font-size: large;"&gt;වස්තු පාදක(OO) ජාවා වැඩසටහන් ලිවීමේදී බහුල වශයෙන් යෙදෙන සංකල්පයක් තමයි abstraction කියන්නේ මේ සඳහා ජාවා පරිගණක භාෂාව තුල පහසුකම් සපයාතිබෙනවා.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;අපි මුලින්ම බලමු abstract class එකක ලක්ෂණ මොනවාද කියල.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Abstract class වලින් කිසිවිටෙකත් objects සෑදිය නොහැක.&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt; Abstract class එකක් extend කර(inherit කර) පසුව සාදනු ලබන class වලට හොඳ පදනමක් සැපයීම.&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Generic (පොදු) ස්වභාවයකින් යුතුවීම.&amp;nbsp; එනම් abstract class එකෙහි child class වලට පොදු ලක්ෂණ එතුල කැටිවී තිබීම&lt;span style="font-size: small;"&gt;(උදාහරණය මගින් විස්තර කර ඇත.)&lt;/span&gt;&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: large;"&gt;Parent class&lt;/span&gt; &lt;/span&gt;එකෙහි&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt; &lt;span style="font-size: large;"&gt;Abstract methods&lt;/span&gt; &lt;/span&gt;ඇත්න්නම් එහි sub class නොහොත් child classes වලදී එම abstract methods අනිවාර්‍යයෙන්ම override කල යුතුය(override කරනවා යන්නෙහි සරල අදහස නම් අදාල abstract method එකෙහි body එක implement කල යුතු බවයි)&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;දැන් අපි උදාහරණය බලමු&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;class : AbstractDemo.java&lt;/span&gt;&lt;/div&gt;&lt;pre class="java" name="code"&gt;/**   &lt;br /&gt;*class  : AbstractDemo   &lt;br /&gt;*Author : Kanishka Dilshan   &lt;br /&gt;*Purpose: Describe abstract concept in Java &lt;br /&gt;*Blog   : http://javaxclass.blogspot.com   &lt;br /&gt;*/   &lt;br /&gt;&lt;br /&gt;abstract class Shape{&lt;br /&gt; protected int color;&lt;br /&gt; protected Point pos; //position&lt;br /&gt; &lt;br /&gt; public void setColor(int color){&lt;br /&gt;  this.color=color;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public int getColor(){&lt;br /&gt;  return color;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void setPos(Point p){&lt;br /&gt;  pos=p;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public Point getPos(){&lt;br /&gt;  return pos;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; abstract public float getArea();&lt;br /&gt;  /* This method is defined as abstract since&lt;br /&gt;     it cannot be implemented since Shape is a  &lt;br /&gt;     common class(abstract class) */&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class Rectangle extends Shape {&lt;br /&gt; /*since this clsaa inherits Shape class&lt;br /&gt;  *the getArea() method must be overrided&lt;br /&gt;  */&lt;br /&gt;  //thease are properties specific to a Rectangle&lt;br /&gt;  private float width,height;&lt;br /&gt;  &lt;br /&gt;  public Rectangle(float w,float h,Point p,int col){&lt;br /&gt;  super.color=col;&lt;br /&gt;  super.pos=p;&lt;br /&gt;  this.width=w;&lt;br /&gt;  this.height=h;&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  public float getArea(){&lt;br /&gt;  return (width*height);&lt;br /&gt;  } &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class Circle extends Shape {&lt;br /&gt; /*since this clsaa inherits Shape class&lt;br /&gt;  *the getArea() method must be overrided&lt;br /&gt;  */&lt;br /&gt;  private float radius;&lt;br /&gt;  &lt;br /&gt;  public Circle(float rad,Point p,int col){&lt;br /&gt;  super.color=col;&lt;br /&gt;  super.pos=p;  &lt;br /&gt;  this.radius=rad;&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  public float getArea(){&lt;br /&gt;  return (float)(Math.PI*Math.pow(radius,2));&lt;br /&gt;  }   &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class Point{&lt;br /&gt; //class definition for represent a Point&lt;br /&gt; protected int xPos;&lt;br /&gt; protected int yPos;&lt;br /&gt; public Point(int x,int y){&lt;br /&gt;  xPos=x;&lt;br /&gt;  yPos=y;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public int getX(){&lt;br /&gt;  return xPos;&lt;br /&gt; } &lt;br /&gt; &lt;br /&gt; public int getY(){&lt;br /&gt;  return yPos;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class AbstractDemo{&lt;br /&gt; //main method&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  Rectangle rect1=new Rectangle(12.0f,7.5f,new Point(10,-3),255);&lt;br /&gt;  Circle c1=new Circle(4.3f,new Point(3,8),100);&lt;br /&gt;  &lt;br /&gt;  //let's prnint object details for rect1&lt;br /&gt;  println("rect1 belongs to    : "+ rect1.getClass().toString());&lt;br /&gt;  println("colour val of rect1 : "+ rect1.getColor());&lt;br /&gt;  println("x position of rect1 : "+ rect1.getPos().getX());&lt;br /&gt;  println("y position of rect1 : "+ rect1.getPos().getY());&lt;br /&gt;  println("area of rect1       : "+ rect1.getArea() );&lt;br /&gt;  &lt;br /&gt;  println("-----------------------------------------");&lt;br /&gt;  //let's prnint object details for c1&lt;br /&gt;  println("c1 belongs to       : "+ c1.getClass().toString());&lt;br /&gt;  println("colour val of c1    : "+ c1.getColor());&lt;br /&gt;  println("x position of c1    : "+ c1.getPos().getX());&lt;br /&gt;  println("y position of c1    : "+ c1.getPos().getY());&lt;br /&gt;  println("area of c1          : "+ c1.getArea() );&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public static void println(Object o){&lt;br /&gt;  System.out.println(o);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;output :&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="173" src="http://4.bp.blogspot.com/_zymieio832M/TDhyh4J2ivI/AAAAAAAAA1E/jUzJW3vojDI/s320/abstractdemo.png" width="320" /&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;අපි දැන් ඉහත code එක විස්තරාත්මකව අධ්‍යයනය කරමු&lt;/span&gt; &lt;br /&gt;&lt;span style="font-size: large;"&gt;අපි abstract class එක ලෙස මෙහිදී යොදාගෙන තිබෙන්නේ Shape නම් class එකයි. එයට හේතුව වනුයේ Circle සහ Rectangle යන class දෙකටම පොදු ලක්ෂණ Shape තුල අන්තර්ගත වන නිසයි.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;Line 28&lt;/span&gt;&lt;/div&gt;&lt;pre class="java" name="code"&gt;abstract public float getArea();&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;මෙහි getArea() නම් method එක abstract ලෙස  සටහන් කර ඇත්තේ එය Shape හි sub classes වලට (specific) අනන්‍ය නිසා Shape class එක තුල implement කල නොහැකි නිසාය.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;Line 48 - 50&lt;/span&gt;&lt;/div&gt;&lt;pre class="java" name="code"&gt;public float getArea(){&lt;br /&gt;  return (width*height);&lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;මෙහිදී Rectangle class එකෙහි super class එක වන Shape class එකෙහි ඇති abstract method එක implement කර ඇත. super class එකෙහි abstract method යම් ප්‍රමාණයක් ඇත්නම් ඒ සියල්ලම එහි subclasses වලදී implement කිරීම අනිවාර්‍ය වේ.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;මෙම පාඩමෙන් අප ලබාගත් දැණුම මීලඟ&lt;/span&gt;&lt;span style="font-size: large;"&gt; පාඩම වන  interfaces පාඩමේදී අත්‍යාවශ්‍ය වන නිසා මෙය හොඳින් අධ්‍යයනය කරන්න.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;මෙහි ගැටලු සහගත තැනක් වේ නම් email එකක් මගින් දන්වන්න නැත්නම් comment එකක් ලෙස හෝ ඉදිරිපත් කරන්න.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;පාඩමේ භාවිතා කර ඇති මූලාශ්‍ර කේත(source codes) බාගත කරගැනීම සඳහා පහත ලින්ක් එක භාවිතා කරන්න.&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://sites.google.com/site/sliitprogramming/sourcecodeforblogs/AbstractDemo.zip" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://i1004.photobucket.com/albums/af166/kdkanishka/blogRes/download.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-2413163033331019682?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/2413163033331019682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=2413163033331019682&amp;isPopup=true' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/2413163033331019682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/2413163033331019682'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/07/abstract-classes.html' title='ජාවා තුල Abstract Classes  යොදාගන්නා අයුරු'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_zymieio832M/TDhyh4J2ivI/AAAAAAAAA1E/jUzJW3vojDI/s72-c/abstractdemo.png' height='72' width='72'/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-9090448624550803882</id><published>2010-07-03T00:02:00.000+05:30</published><updated>2012-01-28T22:00:53.226+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>ජාවා තුල Inner Classes හි භාවිතය</title><content type='html'>&lt;span style="font-size: large;"&gt;අපි අද පාඩමෙන් කතාකරන්න යන්නේ ජාවා inner classes පිලිබඳවයි. පරිගණක භාෂාවක් ලෙසට ජාවා වැනි භාෂාවක් හොඳින් අධ්‍යයනය කිරීම ඉතාම වැදගත්. ඒ මොකද, OOP සංකල්ප පැහැදිලිව අවබෝධ කරගැනීමට ජාවා අධ්‍යයනය මහත් රුකුලක් වන නිසා.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;අපි දැන්&lt;/span&gt; &lt;span style="font-size: large;"&gt;සරළ රූප සටහනක් මගින් මෙම inner class සංකල්පය අවබෝධ කරගනිමු&lt;/span&gt;&lt;span style="font-size: large;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zymieio832M/TC4bJ-rkExI/AAAAAAAAAz4/rYpaiQ-xMs0/s1600/inner_Class_illustration.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_zymieio832M/TC4bJ-rkExI/AAAAAAAAAz4/rYpaiQ-xMs0/s320/inner_Class_illustration.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;දැන් අපි ඉහත රූපසටහන විස්තරාත්මකව අධ්‍යයනය කරමු.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;class B යනු class A හි inner class එකකි එනම් මෙහිදී class B හි outer class එක වන්නේ class A වෙයි. එමෙන්ම class C ද class A හි inner class එකකි. class D යනු class C හි ද inner class එකකි. එනම් class D හි outer class එක වන්නේ class C ය, class C හි outer class එක class A ය. දැන් ඔබට මෙහිදී සිදුවන්නේ කුමක්ද යන්න පැහැදිලි ඇතැයි සිතමි. outer class සහ inner class ගැන පැහැදිලි දල අවබෝධයක් පාඩමේ පහත කොටසට අවශ්‍ය නිසා මෙහිදී එය පැහැදිලි කරගන්න.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;අපි දැන් බලමු inner classes වල ප්‍රධාන ලක්ෂණ මොනවාද කියලා.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;► Outer class වලට ඒවායේ inner classes &lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;import&lt;/b&gt; කිරීමකින් තොරව භාවිතා කල හැකිය. &lt;span style="color: purple;"&gt;උදා :&lt;/span&gt; ඉහත සටහනේ class A ට ඕනෑම විටක class B භාවිතා කල හැකිය(objects සෑදිය හැකිය)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;► නමුත් &lt;/span&gt;&lt;span style="font-size: large;"&gt;inner classes භාවිතා කල හැක්කේ ඒවායේ outer class වලට පමනි. ඉන් පරිභාහිර කිසිඳු class එකකට සෘජුව අදාල inner classes භාවිතා කල නොහැක. &lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;span style="color: purple;"&gt;උදා : &lt;/span&gt;class A ට පරිබාහිර වෙනත් කිසිඳු class එකකට class B access කල නොහැක.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;►Inner class එකක් යනු එහි outer class එකෙහි member කෙනෙක් ලෙස සැලකිය හැක.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;►Inner class එකකට එහි outer class එකෙහි ඕනෑම attributes හෝ methods සෘජුව access කල හැක.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;►නමුත් &lt;/span&gt;&lt;span style="font-size: large;"&gt;Outer class එකකට එහි inner classes වල&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: large;"&gt; attributes හෝ methods සෘජුව access කල නොහැක.&lt;/span&gt;&lt;span style="font-size: large;"&gt; එම inner class වලින් object සෑදීමෙන් අනතුරුව ඒ හරහා එම methods සහ attribute access කල හැක.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;inner classes ආදර්ශනය කිරීමට ලියන ලද පහත වැඩසටහන සැලකිල්ලෙන් අධ්‍යයනය කරන්න.&lt;/span&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;/**  &lt;br /&gt;*class  : InnerClsDemo  &lt;br /&gt;*Author : Kanishka Dilshan  &lt;br /&gt;*Purpose: Demonstrate how inner classes are manipulated&lt;br /&gt;*Blog   : http://javaxclass.blogspot.com  &lt;br /&gt;*/  &lt;br /&gt;&lt;br /&gt;public class InnerClsDemo{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  Report rpt1=new Report("Sri Lanka","I love my country","End of the DOC");&lt;br /&gt;  rpt1.print();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class Report {&lt;br /&gt; String headerTxt;&lt;br /&gt; String bodyTxt;&lt;br /&gt; String footerTxt;&lt;br /&gt; &lt;br /&gt; public Report(String h,String b,String f){&lt;br /&gt;  headerTxt=h;&lt;br /&gt;  bodyTxt=b;&lt;br /&gt;  footerTxt=f;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void print(){&lt;br /&gt;  Header h=new Header();&lt;br /&gt;  Body b=new Body();&lt;br /&gt;  Footer f=new Footer();&lt;br /&gt;  h.print();&lt;br /&gt;  b.print();&lt;br /&gt;  f.print();&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; //inner class 1: Header&lt;br /&gt; class Header{&lt;br /&gt;  public void print(){&lt;br /&gt;   System.out.println("-----------------------------");&lt;br /&gt;   System.out.println("------This is The Header-----");&lt;br /&gt;   System.out.println("\t"+headerTxt);&lt;br /&gt;   System.out.println("-----------------------------");   &lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; //inner class 2: Body&lt;br /&gt; class Body{&lt;br /&gt;  public void print(){&lt;br /&gt;   System.out.println("-                           -");&lt;br /&gt;   System.out.println("-                           -");&lt;br /&gt;   System.out.println("------This is The Body-------");   &lt;br /&gt;   System.out.println("\t"+bodyTxt);   &lt;br /&gt;   System.out.println("-                           -");   &lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; //inner class 3: Footer&lt;br /&gt; class Footer{&lt;br /&gt;  public void print(){&lt;br /&gt;   System.out.println("------This is The Footer-----");&lt;br /&gt;   System.out.println("\t"+footerTxt);&lt;br /&gt;   System.out.println("-----------------------------");       &lt;br /&gt;  }&lt;br /&gt; } &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;output:&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zymieio832M/TC4wyoNN_II/AAAAAAAAA0Y/7gk_gut2Qck/s1600/innerclsdemo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_zymieio832M/TC4wyoNN_II/AAAAAAAAA0Y/7gk_gut2Qck/s320/innerclsdemo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt; අපි ඉහත ඉගෙනගත් inner classes මූලධර්ම මගින් ඔබට ඉහත වැඩසටහන පැහැදිලි කරගත හැකිය.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;inner classes compile කිරීමෙන් අනතුරුව file system එකේ තැන්පත් වන ආකාරය දැන් බලමු.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zymieio832M/TC4pdFAFjPI/AAAAAAAAA0Q/fDVDaWp0T_c/s1600/innerclzsc.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="135" src="http://2.bp.blogspot.com/_zymieio832M/TC4pdFAFjPI/AAAAAAAAA0Q/fDVDaWp0T_c/s400/innerclzsc.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;outer class එක වන Report class එක Report.class ලෙස පවතින බව ඔබට පෙනෙනවා ඇති. එම Report නම් outer class එකෙහි inner classes වන Header , Body සහ Footer classes පිලිවෙලින් Report$Header.class ,  Report$Body.class සහ Report$Footer.class ලෙස පවතින බවත් පෙනෙනවා ඇති. එනම් inner class එකට අදාල class file එකට නම ලැබී ඇත්තේ එහි outer class එකට ඇති සම්බන්දය විද්‍යාමන කරවමිනි.&lt;/span&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: large;"&gt;(&lt;span style="color: #274e13;"&gt;OuterClassName&lt;/span&gt;$&lt;span style="color: #351c75;"&gt;InnerClassName&lt;/span&gt;.class)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;මීලඟ පාඩමෙන් අපි ජාවා interface පිලිබඳව සාකච්ඡා කරමු.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-9090448624550803882?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/9090448624550803882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=9090448624550803882&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/9090448624550803882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/9090448624550803882'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/07/inner-classes.html' title='ජාවා තුල Inner Classes හි භාවිතය'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_zymieio832M/TC4bJ-rkExI/AAAAAAAAAz4/rYpaiQ-xMs0/s72-c/inner_Class_illustration.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-2966482409851768444</id><published>2010-06-23T20:16:00.000+05:30</published><updated>2010-10-07T11:20:03.206+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Basics Of Java'/><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>ජාවා static members කියන්නේ මොනවාද? මොකටද යොදාගන්නේ?</title><content type='html'>&lt;span style="font-size: large;"&gt;&lt;span style="font-size: x-large;"&gt;S&lt;/span&gt;tatic කියන්නේ ස්ථිතික කියන එකනේ සරලව කිව්වොත් පැතිරීයන ස්වභාවය නැති කියන එක ඉතින් මේ ස්ථිතික ස්වභාවය ජාවා වැඩසටහන් වලට ලබාදීමට තමයි මෙම static ලක්ෂණය&amp;nbsp; ජාවා වලට හඳුන්වාදී තිබෙන්නේ. මේ සඳහා &lt;b style="color: #351c75;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;static&lt;/span&gt;&lt;/b&gt; නම් keyword එක භාවිතා වනවා. සාමාන්‍යයෙන් static modifier එක යොදා ඇති fields බැඳී තිබෙන්නේ class එක සමගයි.&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;span style="font-size: large;"&gt;static members වර්ග දෙකක් තිබෙනවා&lt;/span&gt;&lt;span style="font-size: large;"&gt; ඒ තමයි&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;Class variables&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Class methods&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size: large;"&gt;අපි දැන් class variables ගැන බලමු. ඔබ දන්නවා සමාන්‍ය instance variable නම් object එකකට එක බැගින් තිබෙනවා. උදාහරණයක් ලෙස Student class එකේ studentName එක instance variable එකක්. එනිසා එය Student object එකකට අනන්‍ය(unique) ලෙස පවතිනවා. සරලව කිව්වොත් සෑම object එකකටම studentName කියල වෙන වෙනම instance පවතිනවා. නමුත් කිසියම් static variable එකක් නැත්නම් class variable එකක් Student class එකේ තියනවා නම් සෑම object එකකටම එක බැගින් static members නෑ. එකම memory location එකක ඇති variable එකක් ලෙසටයි පවතින්නේ. සෑම object එකක්ම එය share කරගැනීම සිදුවෙනවා. එනම් object 1000ක් තිබුනොත් instance variable නම් 1000ක් පවතිනවා නමුත් static variable නම් පවතින්නේ එකම එකයි. පහත ඉදිරිපත්කර ඇති උදාහරණය අධ්‍යයනය කිරීමෙන් ඔබට මේ ගැන අවබෝධ කරගැනීමට පහසු වේවි.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;උදාහරණයට කලින් static methods නැතහොත් class methods ගැනත් බලලම&lt;/span&gt;&lt;span style="font-size: large;"&gt; ඉඳිමු.&lt;/span&gt;&lt;span style="font-size: large;"&gt; static methods පොදු&lt;/span&gt;&lt;span style="font-size: large;"&gt;වේ භාවිතා වන්නේ class එකෙන් objects සෑදීමෙන් තොරව අදාල method එක භාවිතා කිරීමටයි. class එකක් තුල ඇති static variable හි අගයන් පිටතට ගැනීමට(access කිරීමට) මෙම static methods භාවිතා කලයුතු වනවා. මෙම static methods invoke(call) කිරීම සිදුවන්නේ class එකේ නම හරහායි.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;දැන් අපි static සංකල්පය යොදාගැනීමට භාවිතා කරන syntax ගැන අධ්‍යයනය කරමු.&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #134f5c;"&gt;&lt;span style="font-size: large;"&gt;Syntax 1 : Declaring a static variable&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="color: #b45f06;"&gt;[access modifier]&lt;/span&gt;&lt;span style="color: #351c75;"&gt; static&lt;/span&gt; &lt;span style="color: #38761d;"&gt;[datatype]&lt;/span&gt; [variable__name]&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; ;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&amp;nbsp;&lt;span style="color: #134f5c; font-size: large;"&gt;&lt;span style="color: black;"&gt;ex: &lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="color: #b45f06;"&gt;private&lt;/span&gt; &lt;span style="color: #351c75;"&gt;static&lt;/span&gt; &lt;span style="color: #38761d;"&gt;int&lt;/span&gt; studID;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #134f5c; font-size: large;"&gt;Syntax 2 : Declaring a static method&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="color: #b45f06; font-size: x-small;"&gt;[access modifier]&lt;/span&gt;&lt;span style="color: #351c75; font-size: x-small;"&gt; static&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;span style="color: #38761d; font-size: x-small;"&gt;[datatype]&lt;/span&gt; [method__name]()&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;ex: &lt;span style="color: #134f5c; font-size: large;"&gt;&lt;span style="color: black;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="color: #b45f06;"&gt;public&lt;/span&gt; &lt;span style="color: #351c75;"&gt;static&lt;/span&gt; &lt;span style="color: #38761d;"&gt;int&lt;/span&gt; getSum()&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;දැන් අපි උදාහරණය බලමු&lt;/span&gt;&lt;span style="color: #134f5c; font-size: large;"&gt;&lt;span style="color: black;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;/** &lt;br /&gt;*class  : StaticDemo &lt;br /&gt;*Author : Kanishka Dilshan &lt;br /&gt;*Purpose: introduce static keyword in Java &lt;br /&gt;*Blog   : http://javaxclass.blogspot.com &lt;br /&gt;*/ &lt;br /&gt;&lt;br /&gt;class Student {&lt;br /&gt; private String name;&lt;br /&gt; private int studId;&lt;br /&gt; private static int numberOfStudents;&lt;br /&gt;&lt;br /&gt; public Student(String name){&lt;br /&gt;  this.name=name;&lt;br /&gt;  //generate a new ID and increment the total value by 1&lt;br /&gt;  studId=1000+(numberOfStudents++);&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public static int getNumberOfStuds(){&lt;br /&gt;  return numberOfStudents;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void showStudDetails(){&lt;br /&gt;  System.out.println("Name : " + name);&lt;br /&gt;  System.out.println("stID : " + studId);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class StaticDemo{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  Student std1=new Student("Sajith");&lt;br /&gt;  Student std2=new Student("Kanishka");&lt;br /&gt;  Student std3=new Student("Ravindu");&lt;br /&gt;  Student std4=new Student("Sathiranga");&lt;br /&gt;&lt;br /&gt;  std1.showStudDetails();&lt;br /&gt;  std2.showStudDetails();&lt;br /&gt;  std3.showStudDetails();&lt;br /&gt;  std4.showStudDetails();&lt;br /&gt;  System.out.println("Total students : " + Student.getNumberOfStuds());&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;ප්‍රතිඵලය:&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: center;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zymieio832M/TCIWc2I5Q_I/AAAAAAAAAys/F5_3GAb4-qk/s320/staticdemo.png" /&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;පැහැදිලි කිරීම:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;මෙහි &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;name&lt;/span&gt; හා &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;studId&lt;/span&gt; යන ඒවා instance variable වේ. &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;numberOfStudents&lt;/span&gt; යන්න &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;static&lt;/span&gt; variable එකකි. student ලා කීයක් ඉන්නවද කියන තමයි &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;numberOfStudents&lt;/span&gt; එකේ තබාගන්නේ එය object  එකින් එකට වෙනස් වන අගයක් නොවේ. එනිසයි අපි &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;numberOfStudents&lt;/span&gt; යන්න static ලෙස යොදාගෙන තිබෙන්නේ. තවද මෙහි &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;showStudDetails()&lt;/span&gt; යන method එකත් static මොකද එයත් object එකින් එකට වෙනස් වන්නේ නැහැ අනික එම method එක &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;numberOfStudents&lt;/span&gt;  නම් &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;static&lt;/span&gt; variable එකත් access කරනවා. එම නිසා එය &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;static&lt;/span&gt; විය යුතුයි. එමනිසා class එකේ නමයොදාගෙන call කිරීම කලහැකියි 41 වන පේලියේදී ඔබට මෙය දැකගත හැකියි.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;තවත් OOP සංකල්ප අපි ඉදිරි පාඩමකදී සාකච්ඡා කරමු.&lt;/span&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-2966482409851768444?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/2966482409851768444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=2966482409851768444&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/2966482409851768444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/2966482409851768444'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/06/static-members.html' title='ජාවා static members කියන්නේ මොනවාද? මොකටද යොදාගන්නේ?'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_zymieio832M/TCIWc2I5Q_I/AAAAAAAAAys/F5_3GAb4-qk/s72-c/staticdemo.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-8723399453270315506</id><published>2010-06-18T11:09:00.001+05:30</published><updated>2010-06-18T11:17:34.449+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Basics Of Java'/><title type='text'>ජාවාහි එන Wrapper classes යනු මොනවාද..?</title><content type='html'>&lt;span style="font-size: large;"&gt;ඔබ දන්නවා ජාවා වැඩසටහන තිබෙනවා &lt;a href="http://javaxclass.blogspot.com/2010/04/basic-data-types-of-java.html" target="_blank"&gt;මූලික දත්ත ආකාර&lt;/a&gt;(primitive data types) 8ක්&lt;/span&gt;&lt;span style="font-size: large;"&gt;. ජාවාහි සෑම තැනකටම පොදු ඔබ්ජෙක්ට් ඔරියන්ටඩ් ගතිය මෙම primitive data types තුල නැති බව බැලූ බැල්මටම පෙනෙනවා. මෙම wrapper classes නිර්මාණය කර ඇත්තේ මෙම primitive data type 8 සඳහා objects සෑදීමේ හැකියාව ලබාදීමටයි. එම නිසා ජාවා 1.0 සංස්කරණයේ සිටම මෙම primitive data types 8 සඳහා wrapper class 8ක් පැමිණෙනවා මේවා  java.lang පැකේජයේ අන්තර්ගත වන නිසා වැඩසටහනකට විශේෂයෙන් import කිරීමට අවශ්‍ය නැහැ.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;මෙම&amp;nbsp; wrapper classes යොදාගෙන ජාවාහි ඉතා වැදගත් කාර්‍යභාරයක් කරගැනීමට පුලුවන්. data types convert කිරීම මෙවායේ සුලභ යෙදීමක්.&amp;nbsp; මීට අමතරව එම දත්ත ආකාරය ගැන වැඩි විස්තර මෙම wrapper classes යොදාගනිමින් අපට ලබාගන්නටද පුලුවන්.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellpadding="2" cellspacing="2" style="text-align: left; width: 100%;"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td style="background-color: #d9ead3; vertical-align: top;"&gt;&lt;b&gt;Primitive type&lt;/b&gt;&lt;/td&gt; &lt;td style="background-color: #d9ead3; vertical-align: top;"&gt;&lt;b&gt;Wrapper class&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; vertical-align: top;"&gt;boolean&lt;br /&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; vertical-align: top;"&gt;Boolean&lt;br /&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; vertical-align: top;"&gt;char&lt;br /&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; vertical-align: top;"&gt;Character&lt;br /&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; vertical-align: top;"&gt;byte&lt;br /&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; vertical-align: top;"&gt;Byte&lt;br /&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; vertical-align: top;"&gt;short&lt;br /&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; vertical-align: top;"&gt;Short&lt;br /&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; vertical-align: top;"&gt;int &lt;br /&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; vertical-align: top;"&gt;Integer&lt;br /&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; vertical-align: top;"&gt;long&lt;br /&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; vertical-align: top;"&gt;Long&lt;br /&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; vertical-align: top;"&gt;float&lt;br /&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; vertical-align: top;"&gt;Float&lt;br /&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; vertical-align: top;"&gt;double&lt;br /&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; vertical-align: top;"&gt;Double&lt;br /&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;අපි දැන් බලමු wrapper class යොදගෙන ලියන ලද සරල වැඩසටහනක්.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;public class Wrapper{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  Integer num1=new Integer(23);&lt;br /&gt;  Integer num2=new Integer(34);&lt;br /&gt;  Integer tot1=new Integer(num1+num2);&lt;br /&gt;  Integer tot2=num1+num2;&lt;br /&gt;  &lt;br /&gt;  System.out.println("tot1 : " + tot2);&lt;br /&gt;  System.out.println("tot2 : " + tot1);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;ඉහත වැඩසටහන නිරීක්ෂණයෙන් ඔබට පෙනෙනවා ඇති ක්‍රම 2කකට අපි &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;num1&lt;/span&gt; හා &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;num2&lt;/span&gt; හි එකතුව ලබාගෙන තිබෙනවා. ජාවා 1.5 න් පසු සංස්කරණ වලදී නම් මෙම 2 ක්‍රම 2ම දෝශ රහිතයි නමුත් ඊට පෙර සංස්කරණයන්හි 2වන ක්‍රමය එනම් 6 වන පේලියේ ඇති ක්‍රමය දෝශ සහගතයි. &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Integer&lt;/span&gt; class type එක ඇති ඔබ්ජෙක්ට් එකකට &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;int&lt;/span&gt; primitive type එකක් assign කිරීම ඇත්තටම වරදක්. නමුත් ජාවා 1.5න් පසු සංස්කරණ වලදී එලෙස assign කර ඇති අගය සුදුසු wrapper class type එකට convert කිරීමෙන් අනතුරුවයි assign කිරීම සිදුකරන්නේ. මෙය autoboxing ලෙසත් හඳුන්වනවා.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;දැන් අපි බලමු මෙම wrapper classes භාවිතාකර data types convert කරන ආකාරය. මේ සඳහා ලියන ලද සරළ ජාවා වැඩසටහන බලමු.&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;public class Wrapper{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  String str1="23.44";&lt;br /&gt;  String str2="44.76";&lt;br /&gt;  float val1=Float.parseFloat(str1);&lt;br /&gt;  float val2=Float.parseFloat(str2);&lt;br /&gt;&lt;br /&gt;  System.out.println("str1 \t =&amp;gt; " + str1);&lt;br /&gt;  System.out.println("str2 \t =&amp;gt; " + str2);&lt;br /&gt;  System.out.println("String Data\t=&amp;gt; "+str1+str2);&lt;br /&gt;  System.out.print("float  Data\t=&amp;gt; ");&lt;br /&gt;  System.out.println(val1+val2);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zymieio832M/TBovX_uIWvI/AAAAAAAAAyc/1E5R02fRSyY/s1600/wrapperout.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_zymieio832M/TBovX_uIWvI/AAAAAAAAAyc/1E5R02fRSyY/s320/wrapperout.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;line 5 හා line6 දී සිදුකර ඇත්තේ &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;str1&lt;/span&gt; හා &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;str2&lt;/span&gt; යන &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;String&lt;/span&gt; data &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;val1&lt;/span&gt; හා &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;val2&lt;/span&gt; ලෙස &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;float&lt;/span&gt; ඩේටා බවට පත්කිරීමයි. ඒ ආකාරයට wrapper class අටේම ඇති parseXXX methods (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;parseInt(),parseFloat(),parseDouble()&lt;/span&gt;...) දත්ත&lt;/span&gt; &lt;span style="font-size: large;"&gt;භාවිතා කර අපිට අවශ්‍ය data type වලට convert කරගන්න පුලුවන්.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;දැන් අපි wrapper classes භාවිතා කර යම් data type එකකට දැරිය හැකි උපරිම හා අවම අගයන් ලබාගැනීමට වැඩසටහනක් ලියමු.&lt;/span&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;public class Wrapper{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  &lt;br /&gt;  System.out.println("Byte wrapper"+"\t_______________");&lt;br /&gt;  System.out.println("Max value : "+Byte.MAX_VALUE);&lt;br /&gt;  System.out.println("Min value : "+Byte.MIN_VALUE);&lt;br /&gt;  System.out.println();&lt;br /&gt;&lt;br /&gt;  System.out.println("Integer wrapper"+"\t_______________");&lt;br /&gt;  System.out.println("Max value : "+Integer.MAX_VALUE);&lt;br /&gt;  System.out.println("Min value : "+Integer.MIN_VALUE);  &lt;br /&gt;  System.out.println();&lt;br /&gt;&lt;br /&gt;  System.out.println("Long wrapper"+"\t_______________");&lt;br /&gt;  System.out.println("Max value : "+Long.MAX_VALUE);&lt;br /&gt;  System.out.println("Min value : "+Long.MIN_VALUE); &lt;br /&gt;  System.out.println();&lt;br /&gt;  &lt;br /&gt;  System.out.println("Float wrapper"+"\t_______________");&lt;br /&gt;  System.out.println("Max value : "+Float.MAX_VALUE);&lt;br /&gt;  System.out.println("Min value : "+Float.MIN_VALUE); &lt;br /&gt;  System.out.println(); &lt;br /&gt;  &lt;br /&gt;  System.out.println("Double wrapper"+"\t_______________");&lt;br /&gt;  System.out.println("Max value : "+Double.MAX_VALUE);&lt;br /&gt;  System.out.println("Min value : "+Double.MIN_VALUE); &lt;br /&gt;  System.out.println();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;ප්‍රථිඵලය:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zymieio832M/TBr7ipWCl2I/AAAAAAAAAyk/gti4ikqN2H4/s1600/wrapperout2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zymieio832M/TBr7ipWCl2I/AAAAAAAAAyk/gti4ikqN2H4/s320/wrapperout2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Source: &lt;a href="http://java.sun.com/javase/6/docs/api/java/lang/package-summary.html" target="_blank"&gt;Java Documentation&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-8723399453270315506?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/8723399453270315506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=8723399453270315506&amp;isPopup=true' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/8723399453270315506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/8723399453270315506'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/06/wrapper-classes.html' title='ජාවාහි එන Wrapper classes යනු මොනවාද..?'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_zymieio832M/TBovX_uIWvI/AAAAAAAAAyc/1E5R02fRSyY/s72-c/wrapperout.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-4662540119043865030</id><published>2010-06-17T15:33:00.001+05:30</published><updated>2010-10-07T11:20:30.568+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Basics Of Java'/><title type='text'>ජාවා වැඩසටහනකින් Keyboard Inputs ලබාගන්නා අයුරු :: (Accessing the standard input stream)</title><content type='html'>&lt;span style="font-size: large;"&gt;ජාවා භාවිත යෙදුම්(Java Aplications)&amp;nbsp; Desktop applications හා Console applications&amp;nbsp; වශයෙන් මූලික ආකාර 2ක් තිබෙනවා .&amp;nbsp; Desktop applications&lt;/span&gt;&lt;span style="font-size: large;"&gt; සඳහා textbox වැනි component භාවිතාකර user inputs ලබාගන්න පුලුවන් මේ සඳහා awt හා swing ලෙස ජාවා පැකේජ 2ක් හඳුන්වාදී තිබෙනවා. නමුත් console application යනු console එක(windows වලදී command prompt එක) ක්‍රියාකරන ආකාරය අනුව කොන්සෝල් එකෙදී inputs ලබාගැනීමට වන්නේ keyboad එක මගින් ලබාදෙන string එකක් වශයෙන්. අපි අද පාඩමෙන් අධ්‍යයනය කරන්නේ කොන්සෝල් එක මගින් user input එකක් ලබාගන්නා අයුරුයි.&lt;a name='more'&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;keyboard එකකින් ලබාදෙන දත්ත ජාවා තුලදී stream එකක් ලෙස සලකනවා. ඒ විතරක් නොවෙයි file data සහ network connection යනාදියත් ජාවා තුලදී stream එකක් ලෙස සලකනවා. ජාවා තුල භාවිතාවන මූලිකම stream වර්ග 2 තමයි byte streams සහ character streams.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;අපි දැන් සරළ ජාවා වැඩසටහනක් මගින් බලමු ජාවා වලදී stream යොදාගෙන keyboard input එකක් ලබාගන්නා ආකාරය.&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;KeybIn.java&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;pre class="java" name="code"&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;public class KeybIn{ &lt;br /&gt; public static void main(String args[]) throws IOException{&lt;br /&gt;  String name;&lt;br /&gt;  InputStreamReader myIsr=new InputStreamReader(System.in);&lt;br /&gt;  BufferedReader myBr=new BufferedReader(myIsr);&lt;br /&gt;  &lt;br /&gt;  System.out.print("What is your name : " );&lt;br /&gt;  name=myBr.readLine();&lt;br /&gt;  &lt;br /&gt;  System.out.println("Your name is : "+ name);&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;දැන් අපි ඉහත වැඩසටහන අධ්‍යයනය කරමු.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b style="color: #674ea7;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Line1&lt;/span&gt;&lt;/b&gt; : මෙම වගන්තිය මගින් සිදුකරනුයේ IO නම් ජාවා පැකේජ් එකේ තිබෙන ඕනෑම class එකක් හෝ සියල්ල අපගේ වැඩසටහන තුලදී භාවිතා විය හැකිය යන්න සඳහන් කිරීමයි.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b style="color: #674ea7;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Line4&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt; : main method එකෙහි throws IOException යන්නෙන් විධාන කරන්නේ input හෝ output exception එකක්(දෝශයක් යයි කියමු) පැමිණියහොත් එය නොසලකා හරින්න(ignore) යන්නයි.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b style="color: #674ea7;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Line6&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt; : මෙහිදී සිදුකරන්නේ System.in නොහොත් standard input stream එකෙන් දත්ත bytes වශයෙන් කියවා characters බවට පත්කලහැකි object එකක් සෑදීමයි. සාමාන්‍යයෙන් standard input stream එක යනු keyboad input strem එකයි.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b style="color: #674ea7;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Line7&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt; : මෙහිදී සිදුකරන්නේ ඉහත සාදන ලද InputStremaReader object එක මගින් එකතුකරන ලද characters එකතු කර තනි පේලියක් සෑදිය හැකි BufferedReader object එකක් සෑදීමයි.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b style="color: #674ea7;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Line10&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt; :&lt;/span&gt;&lt;span style="font-size: large;"&gt; මෙහිදී කොන්සෝල් එකෙන් string එකක් read කිරීම සිදුකරනවා.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" height="40" src="http://4.bp.blogspot.com/_zymieio832M/TBnx0E5gyeI/AAAAAAAAAyM/LGZjHJdBhHY/s320/inputif.gif" width="204" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;ඉහත ආකාරයේ ව්‍යුහයක් යොදාගනිමින් ජාවා තුලදී key board input එකක් ලබාගන්න පුලුවන්.&lt;/span&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;ප්‍රතිඵලය&lt;span style="font-size: large;"&gt; :&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zymieio832M/TBnyb7eDLrI/AAAAAAAAAyU/zAUDojM7-V0/s1600/outputblog1121.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_zymieio832M/TBnyb7eDLrI/AAAAAAAAAyU/zAUDojM7-V0/s320/outputblog1121.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-4662540119043865030?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/4662540119043865030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=4662540119043865030&amp;isPopup=true' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/4662540119043865030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/4662540119043865030'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/06/keyboard-inputs-accessing-standard.html' title='ජාවා වැඩසටහනකින් Keyboard Inputs ලබාගන්නා අයුරු :: (Accessing the standard input stream)'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_zymieio832M/TBnx0E5gyeI/AAAAAAAAAyM/LGZjHJdBhHY/s72-c/inputif.gif' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-3083488861546295444</id><published>2010-06-12T15:54:00.002+05:30</published><updated>2010-06-12T16:47:33.814+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>ජාවා වස්තු පාදක ක්‍රමලේඛනය VI (Inheritance) :: 1 කොටස</title><content type='html'>&lt;span style="font-size: large;"&gt;&lt;span style="font-size: x-large;"&gt;I&lt;/span&gt;nheritance යනු ජාවාහි එන ප්‍රභල සංකල්පයක්. එමෙන්ම වස්තු පාදක වැඩසටහන් (OOP programs) ලිවීමේදී මෙය බොහෝ විට භාවිතා වනවා. C++ වැනි අනෙකුත් OOP සඳහා සහය දක්වන පරිගණක භාෂා වලත් මෙම සංකල්පය සඳහා සහය දැක්වුවද C++ හා Java අතර inheritance හිදී යම් වෙනස්කම් පවතිනවා.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;දැම් අපි බලමු මොකක්ද මේ inheritance ක්‍රියාවලිය කියල,&amp;nbsp; Inheritance&amp;nbsp; යනු යම් class එකකකින් සාදන ලද වස්තුන්(objects)  වෙනත් class එකකට අයත් objects වල ගුණාංගයන්ද අයත් කර ගැනීමේදී සිදුකරන ක්‍රියාවලියයි. එම නිසා මෙහිදී අදාල ලක්ෂණ අත් කරගත් class එක සහ ලක්ෂණ අත් කරගැනීමට බඳුන් වූ class එක සඳහා පොදු ලක්ෂණ එකක් හෝ කිහිපයක් පවතිනවා. අදාල ලක්ෂණ අත් කරගත් class එක &lt;b&gt;child&lt;/b&gt; class එක නොහොත් &lt;b&gt;sub&lt;/b&gt; class එක ලෙසත් ලක්ෂණ අත් කරගැනීමට බඳුන් වූ class එක &lt;b&gt;parent&lt;/b&gt; class එක නොහොත් &lt;b&gt;super&lt;/b&gt; class එක ලෙසත් හැඳින්වෙනවා.&amp;nbsp; මෙම ක්‍රියාවලියේදී &lt;b style="color: blue;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;extends&lt;/span&gt;&lt;/b&gt; නම් ජාවා keyword එක භාවිතා වනවා. යම් class එකක් Inherite කිරීමෙන් සාදන ලද නව class එක එහි parent class එකෙහි attributes සහ behaviour යනාදිය උකහා ගන්නා නිසා මෙහිදී ඉබේම software re-usability නම් සංකල්පයද ක්‍රියාත්මක වනවා. නමුත් inherite කිරීමෙන් සාදාගන්නා ලද  නව class එකෙහි එහි parent class එකේ නොමැති attributes සහ behaviours අන්තර්ගත වීමට පුලුවන්.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;ජාවා තුල inheritance සංකල්පය ක්‍රියාවට නැංවීමේදී දැන ගතයුතු&lt;/b&gt;&lt;b&gt; කරුණු.&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;►&lt;span style="font-size: large;"&gt; අලුතින් සාදන සෑම class එකක්ම අනිවාර්‍යයෙන්ම වෙනත් class එකක් extend (inherit) කල යුතුය.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;► &lt;span style="font-size: large;"&gt;extend කරන්නේ කුමන class එකක්ද යන්න විශේෂයෙන් සඳහන් කර නැති විට Object යන class එක inherit වීම සිදුවේ. Object යනු ජාවා class hierarchy එකේ උඩින්ම ඇති super class එකයි.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;► &lt;span style="font-size: large;"&gt;inherit කිරීමකදී කිසිවිටෙකත් constructors උකහා ගැනීම සිදුනොවේ. සියලුම constructors එය define කරන ලද class එක සඳහා වීශේෂ වේ. (constructor පිලිබඳ අපි මීට පෙර පාඩමකින් සාකච්ඡා කර තිබේ එම පාඩම සඳහා &lt;a href="http://javaxclass.blogspot.com/2010/05/iii-constructors.html" target="_blank"&gt;මෙතන click කරන්න&lt;/a&gt;)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;►&lt;span style="font-size: large;"&gt; යම්කිසි sub class එකක් construct වීමේදී එම class එකෙහි super class එකෙහි constructor එක මුලින්ම call වීම සිදුවේ.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;► &lt;span style="font-size: large;"&gt;ජාවාහිදී ඕනෑම class එකකට තිබිය හැක්කේ එක් parent class එකක් පමණි. එනම් multiple inheritance සඳහා ජාවා සහය නොදක්වයි. එමනිසා multiple inheritance මගින් සිදුවන කාර්‍යය ජාවාහිදී සිදුකරන්නේ interfaces භාවිතයෙනි. අපි ඉදිරි පාඩමකින් ජාවා interfaces පිලිබඳ අධ්‍යයනය කරමු. ජාවා multiple inheritance සඳහා සහාය නොදැක්වුවද C++ වලදී නම් multiple inheritance සඳහා ඉඩකඩ සලසා&lt;/span&gt; &lt;span style="font-size: large;"&gt;තිබේ. &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Syntax for extending/inheriting a class&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="color: purple;"&gt;class&lt;/span&gt; SubClassName &lt;b style="color: blue;"&gt;extends&lt;/b&gt; SuperClassName&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: large;"&gt;දැන් අපි මෙම inheritance සංකල්පය හොඳින් වටහා ගැනීම සඳහා සරල ජාවා වැඩසටහනක් ලියමු.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;එම ජාවා වැඩසටහන සඳහා අපි පහත hierarchy එක භාවිතා කරමු. &lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zymieio832M/TBM0oPJ6ykI/AAAAAAAAAxg/dNoAg3Zt2rM/s1600/inheritance_demo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_zymieio832M/TBM0oPJ6ykI/AAAAAAAAAxg/dNoAg3Zt2rM/s320/inheritance_demo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;Cube.java&lt;/b&gt;&lt;/div&gt;&lt;pre class="java" name="code"&gt;/**&lt;br /&gt; *class  : Cube&lt;br /&gt; *Author : Kanishka Dilshan&lt;br /&gt; *Purpose: Demonstrate inheritance in Java&lt;br /&gt; *Blog   : http://javaxclass.blogspot.com&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class Cube {&lt;br /&gt; protected int length;&lt;br /&gt; protected int width;&lt;br /&gt; protected int height;&lt;br /&gt; &lt;br /&gt; public Cube(int l,int w,int h){&lt;br /&gt;  length=l;&lt;br /&gt;  width=w;&lt;br /&gt;  height=h;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void setLength(int l){&lt;br /&gt;  length=l; &lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void setWidth(int w){&lt;br /&gt;  width=w; &lt;br /&gt; } &lt;br /&gt; &lt;br /&gt; public void setHeight(int h){&lt;br /&gt;  width=h; &lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public int getVolume(){&lt;br /&gt;  return(length*width*height);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void showInfo(){&lt;br /&gt;  System.out.println("Length \t:"+this.length);&lt;br /&gt;  System.out.println("Width  \t:"+this.width);&lt;br /&gt;  System.out.println("Height \t:"+this.height);&lt;br /&gt;  System.out.println("Volume \t:"+getVolume());&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;ColorCube.java&lt;/b&gt;&lt;/div&gt;&lt;pre class="java" name="code"&gt;/**&lt;br /&gt; *class  : ColorCube&lt;br /&gt; *Author : Kanishka Dilshan&lt;br /&gt; *Purpose: Demonstrate inheritance in Java&lt;br /&gt; *Blog   : http://javaxclass.blogspot.com&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;class ColorCube extends Cube {&lt;br /&gt; String color;&lt;br /&gt; &lt;br /&gt; public ColorCube(int l,int w,int h,String color){&lt;br /&gt;  //constructing the parent&lt;br /&gt;  super(l,w,h);&lt;br /&gt;  this.color=color;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void setColor(String color){&lt;br /&gt;  this.color=color;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void showInfo(){&lt;br /&gt;  super.showInfo();&lt;br /&gt;  System.out.println("Color \t:"+this.color);&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;InheritanceDemo.java&lt;/b&gt;&lt;/div&gt;&lt;pre class="java" name="code"&gt;/**&lt;br /&gt; *class  : InheritanceDemo&lt;br /&gt; *Author : Kanishka Dilshan&lt;br /&gt; *Purpose: Demonstrate inheritance in Java&lt;br /&gt; *Blog   : http://javaxclass.blogspot.com&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;class InheritanceDemo {&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  Cube cube1=new Cube(3,7,5);&lt;br /&gt;  ColorCube ccb1=new ColorCube(2,9,4,"Blue");&lt;br /&gt;  &lt;br /&gt;  cube1.showInfo();&lt;br /&gt;  System.out.println("_____________________________");&lt;br /&gt;  ccb1.showInfo();&lt;br /&gt;  &lt;br /&gt;  System.out.println("\nMaking changes to cube objects....");&lt;br /&gt;  cube1.setWidth(8);&lt;br /&gt;  ccb1.setColor("Yellow");&lt;br /&gt;  ccb1.setHeight(6); //this methods is inherited by the Cube class&lt;br /&gt;  System.out.println("New info. of modified objects\n");  &lt;br /&gt;  cube1.showInfo();&lt;br /&gt;  System.out.println("_____________________________");&lt;br /&gt;  ccb1.showInfo();  &lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Output :&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zymieio832M/TBM1yy3RSII/AAAAAAAAAxo/PYxqcy1-hRg/s1600/inheritancedemo_code.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/_zymieio832M/TBM1yy3RSII/AAAAAAAAAxo/PYxqcy1-hRg/s400/inheritancedemo_code.png" width="336" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;ඉහත ජාවා වැඩසටහන අධ්‍යයනයෙන් ඔබට inheritance පිලිබඳ තවදුරටත් වටහාගත හැකිවනු ඇත.එහි class variables සඳහා &lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;protected&lt;/b&gt; access එකක් ලබාදීමෙන් සිදුකරන්නේ එම data members සඳහා ප්‍රවේශවීම(access) අදාල class එක තුලදී සහ එහි sub classes වලට පමණක් සීමා කිරීමයි.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;දැන් අපි Inheritance හිදී සිදුවන ක්‍රියාවලිය සියුම්ව වටහා ගැනීමට සුදුසු ජාවා වැඩසටහනක් අධ්‍යයනය කරමු.&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;InherianceStudy.java&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;/**&lt;br /&gt; *class  : InherianceStudy&lt;br /&gt; *Author : Kanishka Dilshan&lt;br /&gt; *Purpose: Demonstrate inheritance in Java&lt;br /&gt; *Blog   : http://javaxclass.blogspot.com&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;class Parent {&lt;br /&gt; protected int i,j;&lt;br /&gt; &lt;br /&gt; public Parent(){&lt;br /&gt;  System.out.println("Using the default constructor of Parent class..");&lt;br /&gt;  i=0;&lt;br /&gt;  j=0;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public Parent(int i,int j){&lt;br /&gt;  System.out.println("Using the integer constructor of Parent class..");&lt;br /&gt;  this.i=i;&lt;br /&gt;  this.j=j;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void showMessage(String msg){&lt;br /&gt;  System.out.println("A message from Parent class..");&lt;br /&gt;  System.out.println("Message : "+msg);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class Child extends Parent {&lt;br /&gt; protected String text;&lt;br /&gt; &lt;br /&gt; public Child(){&lt;br /&gt;  System.out.println("Using the default constructor of Child class..");&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public Child(int i,int j,String t){&lt;br /&gt;  super(i,j);&lt;br /&gt;  System.out.println("Using the integer constructor of Child class..");&lt;br /&gt;  this.text=t;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void showMessage(){&lt;br /&gt;  showMessage("Java programming is very interesting!!");&lt;br /&gt;  System.out.println("A message from Child class..");&lt;br /&gt;  System.out.println("Message : "+text);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class InherianceStudy {&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  System.out.println("Creating Parent objects...");&lt;br /&gt;  System.out.println("_________________________________________________\n");&lt;br /&gt;  Parent p1=new Parent();&lt;br /&gt;  Parent p2=new Parent(2,5);&lt;br /&gt;  System.out.println("\nCreating Child objects...");&lt;br /&gt;  System.out.println("_________________________________________________\n");&lt;br /&gt; &lt;br /&gt;  Child c1=new Child();&lt;br /&gt;  Child c2=new Child(3,-1,"Java is owned by Sun Microsystems");&lt;br /&gt;  System.out.println("\nShowing messages..");&lt;br /&gt;  System.out.println("_________________________________________________\n");&lt;br /&gt;  c2.showMessage();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Output:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_zymieio832M/TBNW2Jk1kZI/AAAAAAAAAxw/K4ptwCjBvdk/s1600/inheritance_study_javaxclass.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="333" src="http://3.bp.blogspot.com/_zymieio832M/TBNW2Jk1kZI/AAAAAAAAAxw/K4ptwCjBvdk/s400/inheritance_study_javaxclass.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;ඉහත ජාවා කේතය දී ඇති ප්‍රතිඵලය සමග සැසඳීමෙන් ඔබට Inheritance සංකල්පය ගැන හොඳ අවබෝධයක් ලබා ගැනීමට පුලුවන්.&amp;nbsp; Sub class එකකින් object එකක් සාදන සෑම විටම එහි super class එකත් construct වීම සිදුවන බව දැන් ඔබට වටහා ගත හැකිවිය යුතුයි.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;මෙම පාඩමේ උදාහරණ download කරගැනීමට පහත Link එක භාවිතා කරන්න&lt;/span&gt;.&lt;br /&gt;&lt;a href="http://sites.google.com/site/sliitprogramming/sourcecodeforblogs/Inheritance.zip"&gt;&lt;img src="http://i1004.photobucket.com/albums/af166/kdkanishka/blogRes/download.png" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-3083488861546295444?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/3083488861546295444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=3083488861546295444&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/3083488861546295444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/3083488861546295444'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/06/vi-inheritance-1.html' title='ජාවා වස්තු පාදක ක්‍රමලේඛනය VI (Inheritance) :: 1 කොටස'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_zymieio832M/TBM0oPJ6ykI/AAAAAAAAAxg/dNoAg3Zt2rM/s72-c/inheritance_demo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-6382158402249992198</id><published>2010-06-03T19:31:00.002+05:30</published><updated>2010-06-03T19:37:45.951+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>ජාවා වස්තු පාදක ක්‍රමලේඛනය V (Data Encapsulation/ Data Hiding)</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_zymieio832M/TAe1mi9l0SI/AAAAAAAAAxQ/gEi-QrdPfos/s1600/capsule.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zymieio832M/TAe1mi9l0SI/AAAAAAAAAxQ/gEi-QrdPfos/s320/capsule.png" /&gt;&lt;/a&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;data සහ methods තනි ඒකකයකට සංක්ෂිප්ත කිරීම data encapsulation ලෙස හඳුන්වන්න පුලුවන්. මෙහි තනි ඒකකය ලෙස දක්වා ඇත්තේ ජාවා class එකකි.&amp;nbsp; ජාවා class එකක ඉතාම සිත් ගන්නා සුලු ලක්ෂණයක් ලෙසටද data encapsulation දැක්විය හැකියි. මෙහිදී සිදුකරන්නේ පිටතින් දත්ත සඳහා සෘජුව පිවිසීමට(access) ඉඩ නොදී methods භාවිතා කොට ඒ සඳහා අතුරු මුහුනතක් සැකසීමයි. data hiding ලෙස හැඳින්වෙන්නේද මෙම සංකල්පයමයි. මෙම සංකල්පය ක්‍රියාවට නංවන ලද object එකක් අපට black box එකක් ලෙස හැඳින්විය හැකි අතර මෙහිදී එහි අභ්‍යන්තර ක්‍රියාවලිය ගැන සවිස්තර අවබෝධයක් නැතිව එහි සපයා ඇති methods ගැන පමණක් අවබෝධයක් ලබාගැනීමෙන් පසු අදාල කාර්‍ය කිරීමට හැකිය. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Data Encapsulation&lt;/span&gt;&lt;span style="font-size: large;"&gt; සංකල්පය ක්‍රියාවට නැංවීම සඳහා අනුගමනය කලයුතු නීතිරීති.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;1 ) &lt;/b&gt;Encapsulate කරන ලද object එකක අභ්‍යන්තර දත්ත(internal data) කිසි විටෙකත් වෙනත් පරිභාහිර object එකක් මහින් සෘජුව මෙහෙයවීම වැළැක්විය යුතුය.&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;2 ) &lt;/b&gt;දත්ත මෙහෙයවීම(manipulate) සඳහා &lt;/span&gt;&lt;span style="font-size: large;"&gt;accessor methods හා mutator methods භාවිතා කල යුතුය.&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Accessor Methods&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: large;"&gt; - අභ්‍යන්තර දත්ත වලට අදාල අගයන් පිටතට ලබාදීමට යොදාගනී. එමෙන්ම අභ්‍යන්තර දත්ත(internal data) ප්‍රදර්ශනය කිරීමක් වැනි ක්‍රියාවලටද යොදාගනී. &lt;/span&gt;&lt;span style="font-size: large;"&gt;සාමාන්‍යයෙන් accessor method එකක නම ආරම්භ වනුයේ get යන උපසර්ගයෙනි(prefix).&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;උදා :&amp;nbsp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;getUserName(); , showErr();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Mutator Methods&lt;/span&gt;&lt;/b&gt; - &lt;/span&gt;&lt;/span&gt;අභ්‍යන්තර දත්ත සඳහා අගයන් සෙට් කිරීම මෙම methods භාවිතයෙන් සිදුකෙරේ. මෙහිදී නව දත්ත වල වලංගු භාවය(validity) සහ සම්පූර්ණත්වය (integri&lt;/span&gt;&lt;span style="font-size: large;"&gt;ty) සහතික කල හැකිය. &lt;/span&gt;&lt;span style="font-size: large;"&gt;සාමාන්‍යයෙන් mutator method එකක නම ආරම්භ වනුයේ set යන උපසර්ගයෙනි(prefix).&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;උදා : &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;setWallpaper(String imagePath);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;දැන් අපි data encapsulation/data hiding සංකල්පය හොඳින් අවබෝධ කරගැනීම සඳහා උදාහරණයක් බලමු.&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt; &lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Cylinder.java&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;/**&lt;br /&gt; *Author : Kanishka Dilshan&lt;br /&gt; *Purpose: Demonstrate encapsulation in Java&lt;br /&gt; *Blog   : http://javaxclass.blogspot.com&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;public class Cylinder{&lt;br /&gt; //radius and height are private members&lt;br /&gt;  &lt;br /&gt; private double radius,height;&lt;br /&gt; &lt;br /&gt; public Cylinder(double rad,double ht){&lt;br /&gt;  radius=rad;&lt;br /&gt;  height=ht;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; //mutator methods&lt;br /&gt; public void setRadius(double rad){&lt;br /&gt;  radius=rad;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void setHeight(double ht){&lt;br /&gt;  height=ht;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; //accessor methods&lt;br /&gt; public double getVolume(){&lt;br /&gt;  return (Math.PI*radius*radius*height);&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public double getSurface(){&lt;br /&gt;  return (2*Math.PI*radius*(height+radius));&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;දැන් අපි ඉහත Cylinder class එක භාවිතා කිරීමට සරළ වැඩසටහනක් ලියමු.&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;EncapDemo.java&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;public class EncapDemo{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  Cylinder c1=new Cylinder(4.23,12.56);&lt;br /&gt;  //invoking accessor methods&lt;br /&gt;  double surf1=c1.getSurface();&lt;br /&gt;  double vol1=c1.getVolume();&lt;br /&gt;  System.out.println("Volume of c1  : " + vol1 );&lt;br /&gt;  System.out.println("Surface of c1 : " + surf1 );&lt;br /&gt;  &lt;br /&gt;  //invoking mutator methods&lt;br /&gt;  System.out.println("Modifying the cylinder object..");&lt;br /&gt;  c1.setRadius(23.11);&lt;br /&gt;  c1.setHeight(5.46);&lt;br /&gt;  double surf2=c1.getSurface();&lt;br /&gt;  double vol2=c1.getVolume();  &lt;br /&gt;  System.out.println("Volume of c1  : " + vol2 );&lt;br /&gt;  System.out.println("Surface of c1 : " + surf2 );  &lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Output :&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zymieio832M/TAezaGi-ORI/AAAAAAAAAxI/oy6Ijg-FkFQ/s1600/encapDemo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_zymieio832M/TAezaGi-ORI/AAAAAAAAAxI/oy6Ijg-FkFQ/s320/encapDemo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Cylinder &lt;/span&gt;class එකෙහි data members සියල්ලම private ලෙසද පිටතින් invoke කරන methods සියල්ලම public ලෙසටද යොදා ඇත. එනිසා මෙහිදි Cylinder object එකක internal data භාහිරින් access(ප්‍රවේශනය) කල නොහැක. තවද අදාල දත්ත මෙහෙයවීම සඳහා accessor සහ mutator methods යොදා ඇත. එමනිසා මෙම Cylinder class එක encapsulate කරන ලද ඒකකයකි.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-6382158402249992198?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/6382158402249992198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=6382158402249992198&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/6382158402249992198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/6382158402249992198'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/06/v-data-encapsulation-data-hiding.html' title='ජාවා වස්තු පාදක ක්‍රමලේඛනය V (Data Encapsulation/ Data Hiding)'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_zymieio832M/TAe1mi9l0SI/AAAAAAAAAxQ/gEi-QrdPfos/s72-c/capsule.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-1901564270001983978</id><published>2010-05-25T17:46:00.003+05:30</published><updated>2010-12-16T11:04:18.955+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Basics Of Java'/><title type='text'>ජාවා වැඩසටහනකට Command Line Arguments ලබාගන්නා ආකාරය.</title><content type='html'>&lt;div style="font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;ජාවා වැඩසටහනක් ක්‍රියාත්මක කරවන(Execute) අවස්ථාවේම එයට යම් දත්තයක් හෝ කිහිපයක් ලබාදීමට Command Line Arguments භාවිතා කල හැක. උදාහ‍රණයක් ලෙස copy file1 file2 යන විධානයේ file1 හා file2 ලෙසට අපිවිසින් දත්තයන් දෙකක් ලබාදී ඇත copy utility එක සඳහා එම file1 file2 command line argument 2කි. එම විධානය ක්‍රියාත්මක කල විට copy utility එක විසින් අදාල arguments 2 වැඩසටහන තුලට ලබාගෙන අදාල කාර්‍යය ඉටුක‍රනු ලබයි. අපි දැන් බලමු ජාවා වැඩසටහනකින් කොහොමද මෙවැනි හැකියාවක් ලබාදෙන්නේ කියලා.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: inherit;"&gt;අපි ජාවා වැඩසටහන ආරම්භයේදී ලබා දෙන arguments තැන්පත් වී තිබෙන්නේ&amp;nbsp; &lt;/span&gt;&lt;b style="font-family: inherit;"&gt;public static void main(String args[])&lt;/b&gt;&lt;span style="font-family: inherit;"&gt; හි සඳහන් කරන ලද &lt;/span&gt;&lt;i style="font-family: inherit;"&gt;&lt;b&gt;args[]&lt;/b&gt;&lt;/i&gt; නම් array එක තුලයි. එනම් main method එකෙන් parameter එකක් ලෙස ලබාදුන් array එක තුලයි. මෙය args ලෙසින්ම නම් වීම අත්‍යාවශ්‍ය නොවේ. නමුත් එය String type එකෙන් තිබීම අනිවාර්‍ය වේ. ඔබට arrays ගැන ගැටලුවක් ඇත්නම් &lt;a href="http://javaxclass.blogspot.com/search/label/Basics%20Of%20Java" style="font-family: inherit;" target="_blank"&gt;arrays සම්බන්ද පාඩම&lt;/a&gt;&lt;span style="font-family: inherit;"&gt; බලන්න.&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt; example01:&lt;/span&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;class CommandLineDemo{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  String argument1=args[0];&lt;br /&gt;  String argument2=args[1];&lt;br /&gt;  String argument3=args[2];&lt;br /&gt;  System.out.println("Argument 1 : "+argument1);&lt;br /&gt;  System.out.println("Argument 2 : "+argument2);&lt;br /&gt;  System.out.println("Argument 3 : "+argument3);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Output:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zymieio832M/S_uyAX3e08I/AAAAAAAAAvs/wtI3w_M3ySg/s1600/cla01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="97" src="http://1.bp.blogspot.com/_zymieio832M/S_uyAX3e08I/AAAAAAAAAvs/wtI3w_M3ySg/s400/cla01.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අපි මෙහිදී Java C++ C# Perl ලෙසින් argument 4ක් දී තිබුනද console එකෙහි පෙන්වා ඇත්තේ Java C++ C# arguments 3 පමණි. අපි access ක‍ර ඇත්තේ &lt;b&gt;&lt;i&gt;args[]&lt;/i&gt;&lt;/b&gt; හි 0,1,2 යන elements 3 පමණි.&lt;/span&gt; &lt;span style="font-size: large;"&gt;යම්හෙයකින් අපි args හි අඩංගු නැති element එකක් access කලහොත් &lt;b&gt;&lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ArrayIndexOutOfBoundsException.html" target="_blank"&gt;ArrayIndexOutOfBoundsException&lt;/a&gt; &lt;/b&gt;එකක් ලැබෙනු ඇත. එනම් program එකෙහි run time error එකක් ඇතිවනු ඇත. Error Control ගැන කෙරෙන පාඩමේදී අපි &lt;b&gt;Exception &lt;/b&gt;ගැන විස්ත‍රාත්මකව ඉගෙන ගනිමු.&lt;/span&gt; &lt;span style="font-size: large;"&gt;අපි ඉහත වැඩසටහනේ එවැනි error එකක් ලැබෙන අවස්ථාවක් ගැන බලමු.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zymieio832M/S_u0MOI6WPI/AAAAAAAAAv0/9azVEdmjYns/s1600/cla01err.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="45" src="http://4.bp.blogspot.com/_zymieio832M/S_u0MOI6WPI/AAAAAAAAAv0/9azVEdmjYns/s400/cla01err.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අපි arguments ලෙස ලබා දී ඇත්තේ Java හා C++ පමණි නමුත් අප වැඩසටහන තුලදී args[] හි 3වන element එකද access කෙරේ(2nd index). එමනිසා මෙහිදී ඉහත සඳහන් කල ආකාරයේ exception එකක් (මෙහිදී නම් run time error) ලැබේ.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;අපි දැන් ඉහත ආකාරයේ දෝශ මගහැරවීමට සුදුසු පියව‍රක් යොදා එම වැඩසටහනම වැඩිදියුණු (modify) ක‍රමු.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;example02:&lt;/span&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;class CommandLineDemo{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  try{&lt;br /&gt;   String argument1=args[0];&lt;br /&gt;   String argument2=args[1];&lt;br /&gt;   String argument3=args[2];&lt;br /&gt;   System.out.println("Argument 1 : "+argument1);&lt;br /&gt;   System.out.println("Argument 2 : "+argument2);&lt;br /&gt;   System.out.println("Argument 3 : "+argument3);&lt;br /&gt;  }catch(ArrayIndexOutOfBoundsException ex){&lt;br /&gt;   System.out.println("Incorect usage!");&lt;br /&gt;   System.out.println("You must provide minimum of 3 numbers!");&lt;br /&gt;   System.out.println("Invalid index =  " + ex.getMessage());&lt;br /&gt;   &lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zymieio832M/S_u3GpoiOTI/AAAAAAAAAv8/n_gujwER3MY/s1600/cla01modified.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_zymieio832M/S_u3GpoiOTI/AAAAAAAAAv8/n_gujwER3MY/s320/cla01modified.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: inherit; font-size: large;"&gt;Exception handle කිරීම ගැන අපි ඉදිරි පාඩමකින් විස්ත‍රාත්මකව සාකච්ඡා ක‍රමු. මෙම පාඩමේ මූලික අරමුණ Command Line Arguments භාවිතා ක‍රන ආකාරය හැදෑරීමයි. මෙහිදී මතක තබාගත යුතු කාරණාව වන්නේ args[] array එක String type එකෙන් ඇති බවයි එමනිසා අපි ගණිතමය දත්තයන් arguments ලෙස ගන්නා විට ඒවා සුදුසු types වලට convert කිරීමට සිදුවනවා.&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt; &lt;br /&gt;අපි දැන් ප්‍රායෝගික උදාහරණ කිරිපයක් බලමු.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Example03:&lt;/span&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;class CLADemo1{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  try{&lt;br /&gt;   String name=args[0];&lt;br /&gt;   float price=Float.parseFloat(args[1]);&lt;br /&gt;   float VAT=Float.parseFloat(args[2]);&lt;br /&gt;   float Total=price+VAT;&lt;br /&gt;   System.out.println(name +" :  " + Total);&lt;br /&gt;  }catch(ArrayIndexOutOfBoundsException e){&lt;br /&gt;   System.out.println("Incorrect usage!");&lt;br /&gt;  }catch(NumberFormatException e){&lt;br /&gt;   System.out.println("Invalid number " + e.getMessage());&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;Output 01:&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zymieio832M/S_u7hDBYTRI/AAAAAAAAAwE/74ZMVjaTWCo/s1600/claex2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="62" src="http://2.bp.blogspot.com/_zymieio832M/S_u7hDBYTRI/AAAAAAAAAwE/74ZMVjaTWCo/s400/claex2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;මෙහිදී numbers convert ක‍රන විට ලබාදී ඇති number format එක දෝශ සහගත නම් එයද handle කිරීමට &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NumberFormatException.html" target="_blank"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;NumberFormatExcption&lt;/span&gt;&lt;/b&gt;&lt;/a&gt; එකක්ද program එක තුලදී &lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;catch &lt;/b&gt;ක‍ර ඇත. පහත රූපයෙන් එවැනි exception එකක් මතුවූ විට අප විසින් පෙන්වන දෝශ පණිවුඩය දැක්වේ.&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zymieio832M/S_u8pAhj_MI/AAAAAAAAAwM/6UnJ0KFBei4/s1600/claex2errH.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="55" src="http://1.bp.blogspot.com/_zymieio832M/S_u8pAhj_MI/AAAAAAAAAwM/6UnJ0KFBei4/s400/claex2errH.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;මෙම පාඩමේ උදාහරණ download කරගැනීමට පහත Link එක භාවිතා කරන්න&lt;/span&gt;.&lt;br /&gt;&lt;a href="http://sites.google.com/site/sliitprogramming/sourcecodeforblogs/CLA.zip"&gt;&lt;img src="http://i1004.photobucket.com/albums/af166/kdkanishka/blogRes/download.png" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-1901564270001983978?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/1901564270001983978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=1901564270001983978&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/1901564270001983978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/1901564270001983978'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/05/command-line-arguments.html' title='ජාවා වැඩසටහනකට Command Line Arguments ලබාගන්නා ආකාරය.'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_zymieio832M/S_uyAX3e08I/AAAAAAAAAvs/wtI3w_M3ySg/s72-c/cla01.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-7592314166084289995</id><published>2010-05-23T12:16:00.000+05:30</published><updated>2010-10-07T11:20:49.476+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>OOP සඳහා අභ්‍යාස II කොටස</title><content type='html'>&lt;span style="font-size: large;"&gt;අපි කලින් පාඩමෙන් ස‍රල OOP සඳහා උදාහ‍රණ දෙකක් සාකච්ඡා කලා. අපි මේ පාඩමේදී බලමු මදක් සංකීර්ණ OOP examples කිහිපයක්. අපි මෙතෙක් උගත් Object Oriented සංකල්ප වලින් පමණක් උදාහ‍රණ සපයා ඇති ඇතිබව සලකන්න. අපි ඉදිරියේදී ජාවාහි තවත් වැදගත් Object Oriented සංකල්ප සාකච්ඡා ක‍රමු. එහිදී ඒවාට අදාල උදාහ‍රණ සුදුසු ප‍රිදි ඉදිරිපත් කෙරෙනු ඇත.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;අපි මෙහිදී objects අත‍ර සම්බන්දතාවයක් පෙන්විය හැකි උදාහ‍රණයක් සලකා බලමු. objects ලෙස Point හා Line (ලක්ෂ්‍යයක් හා සරල රේඛාවක්) ගනිමු. මෙහිදී අපි එක එකක් class සඳහා වෙන වෙනම java file ලියා තිබෙනවා. පාඩම අවසානයේ එම මූලාශ්‍ර කේත අමුණා තිබෙනවා.&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #351c75; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Point.java&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;pre class="java" name="code"&gt;/**&lt;br /&gt; *Class Name : Point&lt;br /&gt; *Author     : Kanishka Dilshan&lt;br /&gt; *Bolg       : http://javaxclass.blogspot.com&lt;br /&gt; *Purpose    : Demonstrate relationships between objects&lt;br /&gt; */&lt;br /&gt;public class Point {&lt;br /&gt; private int x,y;&lt;br /&gt; &lt;br /&gt; public Point(int x,int y){&lt;br /&gt;  this.x=x;&lt;br /&gt;  this.y=y;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void setX(int x){&lt;br /&gt;  this.x=x;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void setY(int y){&lt;br /&gt;  this.y=y;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public int getX(){&lt;br /&gt;  return x;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public int getY(){&lt;br /&gt;  return y;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public double distance(){&lt;br /&gt;  //calculate and return distance from the origin&lt;br /&gt;  double dis=Math.sqrt(Math.sqrt(Math.pow(x,2)+Math.pow(y,2)));&lt;br /&gt;  return dis;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;දැන් ඔබට Point class එකේ ජාවා කේතය කියවා අවබෝධ ක‍රගැනීමට හැකිවිය යුතුය. ගැටලුවක් ඇත්නම් &lt;a href="http://javaxclass.blogspot.com/search/label/OOP" target="_blank"&gt;පෙර OOP පාඩම්&lt;/a&gt; නැවත කියවා බලන්න.&lt;i&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Math.pow()&lt;/span&gt;&lt;/b&gt;&lt;/i&gt; හා &lt;i&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Math.sqrt()&lt;/b&gt;&lt;/i&gt; යනු ජාවාහි inbuilt methods ය. &lt;i&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;pow()&lt;/span&gt;&lt;/b&gt;&lt;/i&gt; method එක මගින් යම් සංඛ්‍යාවක බලයක්ද &lt;i&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sqrt()&lt;/b&gt;&lt;/i&gt; method එක මගින් යම් සංඛ්‍යාවක වර්ගමූලයද ලබාදේ.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;දැන් අපි අපි ඉහත ලියන ලද Point class එක සම්බන්ද ක‍රගෙන Line (ස‍රල රේඛාවක්) සඳහා class එකක් ලියමු. source code එක කියවීමේදී statements වලට අදාලව යොදා ඇති comments ද කියවන්න. එමගින්ද අදාල කොටස ගැන හොඳ අවබෝධයක් ලබාගත හැකිවේවි.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b style="color: #351c75;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Line.java &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;/**&lt;br /&gt; *Class Name : Line&lt;br /&gt; *Author     : Kanishka Dilshan&lt;br /&gt; *Bolg       : http://javaxclass.blogspot.com&lt;br /&gt; *Purpose    : Demonstrate relationships between objects&lt;br /&gt; */&lt;br /&gt;public class Line {&lt;br /&gt; private Point p1,p2;&lt;br /&gt; /**&lt;br /&gt;  *p1 and p2 are Point objects&lt;br /&gt;  *we have already created the Point class&lt;br /&gt;  */&lt;br /&gt;  public Line(Point p1,Point p2){&lt;br /&gt;  this.p1=p1;&lt;br /&gt;  this.p2=p2;&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  public double getLength(){&lt;br /&gt;  int x1=p1.getX();&lt;br /&gt;  int x2=p2.getX();&lt;br /&gt;  int y1=p1.getY();&lt;br /&gt;  int y2=p2.getY();&lt;br /&gt;  double len=Math.sqrt(Math.pow((x1-x2),2)+Math.pow((y1-y2),2));&lt;br /&gt;  return len;&lt;br /&gt;  }&lt;br /&gt;  &lt;br /&gt;  public void showDetails(){&lt;br /&gt;  System.out.println("x1 : " + p1.getX() + " y1 : " + p1.getY());&lt;br /&gt;  System.out.println("x2 : " + p2.getX() + " y2 : " + p2.getY());&lt;br /&gt;  System.out.println("----------------------------------------");&lt;br /&gt;  }&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;ඔබ දකින්නට ඇති Line class එකේ 8 වන පේලියේදී අපි p1 හා p2 ලෙසින් &lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Point&lt;/b&gt; object 2ක් සාදාගෙන තිබෙනවා. එම &lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Point&lt;/b&gt; &lt;/span&gt;&lt;span style="font-size: large;"&gt;type එක වනුයේ අපි ඉහතින් සකස්ක‍ර ගත් &lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Point&lt;/b&gt; &lt;/span&gt;&lt;span style="font-size: large;"&gt;class එකයි.&lt;br /&gt;අපි Line class එකේ constructor එකේදී (13පේලිය) &lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Point&lt;/b&gt; &lt;/span&gt;&lt;span style="font-size: large;"&gt; parameters 2ක් ගෙන තිබෙනවා.අපි දැන් ඉහත class 2ම යෙදෙන ප‍රිදි ජාවා වැඩසටහනක් ලියමු.&lt;/span&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;/**&lt;br /&gt; *Class Name : Line&lt;br /&gt; *Author     : Kanishka Dilshan&lt;br /&gt; *Bolg       : http://javaxclass.blogspot.com&lt;br /&gt; *Purpose    : Demonstrate howto use above classes&lt;br /&gt; */&lt;br /&gt;public class OOPDemo {&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  //create 2 Point objects (p1 and p2)&lt;br /&gt;  Point pnt1=new Point(3,4);&lt;br /&gt;  Point pnt2=new Point(-2,7);&lt;br /&gt;  System.out.println("x position of p1    : " + pnt1.getX());&lt;br /&gt;  System.out.println("y position of p1    : " + pnt1.getY());&lt;br /&gt;  System.out.println("distance frm Origin : " + pnt1.distance());&lt;br /&gt;  System.out.println("----------------------------------------");&lt;br /&gt;  &lt;br /&gt;  //creating a Line object;&lt;br /&gt;  Line ln1=new Line(pnt1,pnt2);&lt;br /&gt;  //show details of ln1&lt;br /&gt;  System.out.println("Details of the line object");&lt;br /&gt;  ln1.showDetails();&lt;br /&gt;  double lineLen=ln1.getLength();&lt;br /&gt;  System.out.println("length of line : " + lineLen);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;Output :&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zymieio832M/S_g9-OieEmI/AAAAAAAAAuU/5f852Cs6F2o/s1600/oopexrecise02demo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zymieio832M/S_g9-OieEmI/AAAAAAAAAuU/5f852Cs6F2o/s320/oopexrecise02demo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;අපි ඉහත වැඩසටහනේ main method එකේදී සිදුක‍ර ඇත්තේ අප විසින් ලියූ Point class එක සහ Line class එක භාවිතා ක‍ර objects සෑදීමයි. pnt1 හා pnt2 ලෙසින් Point object 2ක් සාදා ඉන් pnt1 එකෙහි details console එකෙහි print ක‍ර එම pnt1 හා pnt2 objects arguments ලෙස භාවිතා ක‍රමින් Line object එක සාදා තිබෙන බව ඔබට වැටහෙනවා ඇති.&lt;br /&gt;ඉහත Point හා Line class 2 යොදාගනිමින් සාදා ඇති පහත ඇප්ලටය භාවිතා ක‍රමින් එම objects වල හැසිරීම ප‍රීක්ෂා ක‍ර බලන්න. එම Java Applet එකෙහි source code එකද මම පහත ඉදිරිපත් ක‍ර ඇති link එකෙන් download ක‍රගන්න පුලුවන්.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;ජාවා ඇප්ලට් ගැන අපි ඉදිරි පාඩම් පෙලකින් දීර්ඝව සාකච්ඡා ක‍රමු. මෙහිදී අප උගත් දෑ ආදර්ශනය කිරීමට පමණක් පහත ජාවා applet එක ලියා ඇති බව සලකන්න&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;object&gt; &lt;applet code="MyOOPExDemo.class" archive="OOPDemoEx2.jar" codebase="http://sites.google.com/site/ansisliit/Home/" width="470" height="430" &gt; &lt;/applet&gt; &lt;/object&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;මෙම පාඩමේ ඉදිරිපත් ක‍ර ඇති මූලාශ්‍ර කේත භාගත ක‍රගැනීමට පහත link එක භාවිතා ක‍රන්න.&lt;/span&gt;&lt;br /&gt;&lt;a href="http://sites.google.com/site/sliitprogramming/sourcecodeforblogs/OOPExercise2.zip"&gt;&lt;img src="http://i1004.photobucket.com/albums/af166/kdkanishka/blogRes/download.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;ඉහත Java Applet එකෙහි source code එක download ක‍රගැනීමට පහත link එක භාවිතා ක‍රන්න.&lt;/span&gt;&lt;br /&gt;&lt;a href="http://sites.google.com/site/sliitprogramming/sourcecodeforblogs/OOPDemoEx2Applet.zip"&gt;&lt;img src="http://i1004.photobucket.com/albums/af166/kdkanishka/blogRes/download.png" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-7592314166084289995?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/7592314166084289995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=7592314166084289995&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/7592314166084289995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/7592314166084289995'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/05/oop-ii.html' title='OOP සඳහා අභ්‍යාස II කොටස'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_zymieio832M/S_g9-OieEmI/AAAAAAAAAuU/5f852Cs6F2o/s72-c/oopexrecise02demo.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-1662885138993112152</id><published>2010-05-22T18:15:00.000+05:30</published><updated>2010-10-07T11:20:49.477+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>OOP සඳහා අභ්‍යාස I</title><content type='html'>&lt;span style="font-size: large;"&gt;අපි මීට පෙර පාඩම් වලදී ඉගෙනගත් Java OOP සංකල්ප තවත් හොඳින් අවබෝධ කරගැනීම සඳහා අපි අභ්‍යාස කිහිපයක් සාකච්ඡා කරමු. මෙහිදී මම හැකිතාක් ප්‍රායෝගික උදාහරණ ඉදිරිපත් කිරීමට බලාපොරොත්තු වනවා. අභ්‍යාසයේ යෙදෙන තරමට අපිට ජාවා වල සංකල්ප අවබෝධ කරගැනීමට පහසුයි.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;අපි මුලින්ම ස‍රල උදාහ‍රණයකින් පටන්ගනිමු. මෙහිදී ඉදිරිපත් ක‍ර ඇති කේතයන් ඔබ ඉගෙනගත් OOP concept සමග ගලපමින් අවබෝධ ක‍රගැනීමට උත්සාහ ක‍රන්න.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Exercise1 &lt;/span&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;/**&lt;br /&gt; *Author : Kanishka Dilshan&lt;br /&gt; *Blog   : http://javaxclass.blogspot.com&lt;br /&gt; *Purpose: Demonstrate some applications of OOP&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;class Car {&lt;br /&gt; private String model,color;&lt;br /&gt; private int enginePower,speed;&lt;br /&gt; &lt;br /&gt; public Car(String model,String color,int enginePower){&lt;br /&gt;  this.model=model;&lt;br /&gt;  this.color=color;&lt;br /&gt;  this.enginePower=enginePower;&lt;br /&gt;  speed=0;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public void accelerate(){&lt;br /&gt;  //let's assume the maximum speed is 320&lt;br /&gt;  if(speed &amp;lt; 320){&lt;br /&gt;   speed+=10; //increment speed by 10&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; public void applyBreaks(){&lt;br /&gt;  if(speed &amp;gt; 10){&lt;br /&gt;   speed-=10; //decrement speed by 10&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; public void changeColor(String NewColor){&lt;br /&gt;  this.color=NewColor;&lt;br /&gt; }&lt;br /&gt; public void showDetails(){&lt;br /&gt;  System.out.println("----------------------------------");&lt;br /&gt;  System.out.println("Car Model    : " + model);&lt;br /&gt;  System.out.println("Engine Power : " + enginePower);&lt;br /&gt;  System.out.println("Color        : " + color);&lt;br /&gt;  System.out.println("Current Speed: " + speed);&lt;br /&gt;  System.out.println("----------------------------------");&lt;br /&gt; }&lt;br /&gt; public String getModel(){&lt;br /&gt;  return model;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class Exercise1{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  //create a new Car object&lt;br /&gt;  Car c1=new Car("Audi A4","Blue",2000);&lt;br /&gt;  //accelerate the car&lt;br /&gt;  for(int i=0;i &amp;lt; 120;i++){&lt;br /&gt;   c1.accelerate();&lt;br /&gt;  }&lt;br /&gt;  //show details of the car&lt;br /&gt;  c1.showDetails();&lt;br /&gt;  //apply breaks on the car(3 times)&lt;br /&gt;  c1.applyBreaks();&lt;br /&gt;  c1.applyBreaks();&lt;br /&gt;  c1.applyBreaks();&lt;br /&gt;  //change color &lt;br /&gt;  c1.changeColor("Black");&lt;br /&gt;  //show details of the car again&lt;br /&gt;  c1.showDetails();&lt;br /&gt;  &lt;br /&gt;  //create another car object&lt;br /&gt;  Car c2=new Car("Mazda 3 Sedan","Red",1800);&lt;br /&gt;  //.......................&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;Output :&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zymieio832M/S_fC7pcwNBI/AAAAAAAAAuM/yEqgk1A_e20/s1600/OOPExercise01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_zymieio832M/S_fC7pcwNBI/AAAAAAAAAuM/yEqgk1A_e20/s320/OOPExercise01.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;දැන් අපි ඉහත ලියන ලද ජාවා වැඩසටහන විස්ත‍රාත්මක වශයෙන් සාකච්ඡා ක‍රමු.&lt;br /&gt;&lt;br /&gt;Line 07 මගින් Car class එකේ ආරම්භය සනිටුහන් කෙරෙනවා. එහි සියලුම class variables වලට යොදා ඇත්තේ private modifier එක බව ඔබට පෙනෙනවා ඇති.(line 8,line 9). අපි access modifiers ගැන සාකච්ඡා ක‍රද්දී ඔබට මතක ඇති මම එහිදී සඳහන් කලා instance variables,private ලෙසත් methods , public ලෙසත් යෙදීම හොඳ වස්තු පාදක ක්‍රමලේඛනයක ලක්ෂණයක් බව.&lt;br /&gt;&lt;br /&gt;ඉන්පසුව ඇත්තේ constructor එකයි (line 11) එහිදී අපි speed එක 0 ලෙසත් අනෙකුත් class variables සඳහා constructor එකෙන් ලබාගන්නා parameters ද ආදේශ ක‍ර තිබෙනවා. මෙහිදී constructor එකේ parameter එකක් ලෙස speed එක ගෙන නැහැ. නමුත් constructor එක තුලදී speed variable එක සුදුසු value එකක් යොදා initialize ක‍ර තිබෙනවා.&lt;br /&gt;&lt;br /&gt;ඉන්පසු ඇත්තේ methods ය. අපි methods පාඩමේදී ලබාගත් දැණුම භාවිතයෙන් ඔබට මෙය පහසුවෙන් අවබෝධ ක‍රගත හැකිවිය යුතුය.&lt;br /&gt;&lt;br /&gt;Car class එක ලියා අවසන්වූ පසු main method එක අයත් Exercise1 class එක ආරම්භවේ. මෙහිදී අප සකස්ක‍රගත් Car class එක භාවිතා ක‍ර object සාදා ඒවා භාවිතා කිරීම සිදු කෙරේ. ජාවා වැඩසටහන තුල යොදා ඇති comments වලින්ද එහිදී සිදුවන්නේ කුමක්ද යන්න තේරුම් ගැනීමට හැක.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Exercise2&lt;/span&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;/**&lt;br /&gt; *Class Name : Excerice2java&lt;br /&gt; *Author     : Kanishka Dilshan&lt;br /&gt; *Blog       : http://javaxclass.blogspot.com&lt;br /&gt; *Purpose    : Demonstrate some applications of OOP&lt;br /&gt; */&lt;br /&gt;class Line {&lt;br /&gt; private int x1,y1,x2,y2;&lt;br /&gt; &lt;br /&gt; public Line(int x1,int y1,int x2,int y2){&lt;br /&gt;  this.x1=x1;&lt;br /&gt;  this.y1=y1;&lt;br /&gt;  this.x2=x2;&lt;br /&gt;  this.y2=y2;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; public double getLength(){&lt;br /&gt;  double length=Math.sqrt(Math.pow((x1-x2),2)+Math.pow((y1-y2),2));&lt;br /&gt;  return length;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class Exercise2{&lt;br /&gt; public static void main(String args[]){&lt;br /&gt;  Line line1=new Line(-3,6,10,8);&lt;br /&gt;  double len=line1.getLength();&lt;br /&gt;  System.out.println(len);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;අපි ඊලඟ පාඩමෙන් මීට වඩා සංකීර්ණ උදාහ‍රණ කිහිපයක් බලමු.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;මෙම පාඩමේ ඉදිරිපත් ක‍ර ඇති මූලාශ්‍ර කේත භාගත ක‍රගැනීමට පහත link එක භාවිතා ක‍රන්න.&lt;/span&gt;&lt;br /&gt;&lt;a href="http://sites.google.com/site/sliitprogramming/sourcecodeforblogs/OOPExercise1.zip"&gt;&lt;img src="http://i1004.photobucket.com/albums/af166/kdkanishka/blogRes/download.png" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5285645949711521110-1662885138993112152?l=javaxclass.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaxclass.blogspot.com/feeds/1662885138993112152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5285645949711521110&amp;postID=1662885138993112152&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/1662885138993112152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5285645949711521110/posts/default/1662885138993112152'/><link rel='alternate' type='text/html' href='http://javaxclass.blogspot.com/2010/05/oop-i.html' title='OOP සඳහා අභ්‍යාස I'/><author><name>Kanishka Dilshan</name><uri>https://profiles.google.com/100600608047402604611</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-rhvnMNpZpwU/AAAAAAAAAAI/AAAAAAAAB4c/Di7zqcQvL34/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_zymieio832M/S_fC7pcwNBI/AAAAAAAAAuM/yEqgk1A_e20/s72-c/OOPExercise01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5285645949711521110.post-6660185201200422236</id><published>2010-05-22T02:15:00.002+05:30</published><updated>2011-11-08T00:43:32.674+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='OOP'/><title type='text'>ජාවා වස්තු පාදක ක්‍රමලේඛනය IV (Access Modifiers)</title><content type='html'>&lt;span style="font-size: large;"&gt;මීට පෙර පාඩමෙන් අපි සාකච්ඡා කලේ &lt;a href="http://javaxclass.blogspot.com/2010/05/iii-methods.html" target="_blank"&gt;methods&lt;/a&gt; ගැනයි. අපි එහිදී access modifiers සඳහා සුලු හැඳින්වීමක් දුන්නා. අපි මෙම පාඩමෙන් modifiers ගැන විස්ත‍ර සහිතව අධ්‍යයනය කරමු. Inheritance , Encapsulation වැනි OOP Concept ක්‍රියාවට නැංවීම &lt;/span&gt;&lt;span style="font-size: large;"&gt;(implement) &lt;/span&gt;&lt;span style="font-size: large;"&gt;සඳහා access modifiers ඉතා වැදගත් මෙහෙව‍රක් ඉටුක‍රනවා. අපි පහත වගුව තුලින් access modifiers ගැන අධ්‍යයනයක යෙදෙමු.&lt;/span&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;     &lt;th scope="col" style="background-color: #d9ead3;" width="36%"&gt;Access modifier &lt;/th&gt;     &lt;th scope="col" style="background-color: #d9ead3;" width="9%"&gt;this(class)&lt;/th&gt;     &lt;th scope="col" style="background-color: #d9ead3;" width="14%"&gt;subclass&lt;/th&gt;     &lt;th scope="col" style="background-color: #d9ead3;" width="18%"&gt;package&lt;/th&gt;     &lt;th scope="col" style="background-color: #d9ead3;" width="23%"&gt;general&lt;/th&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="background-color: #fff2cc; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;public&lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&lt;div align="center"&gt;●&lt;/div&gt;&lt;/td&gt;     &lt;td&gt;&lt;div align="center"&gt;●&lt;/div&gt;&lt;/td&gt;     &lt;td&gt;&lt;div align="center"&gt;●&lt;/div&gt;&lt;/td&gt;     &lt;td&gt;&lt;div align="center"&gt;●&lt;/div&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="background-color: #fff2cc; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;protected&lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&lt;div align="center"&gt;●&lt;/div&gt;&lt;/td&gt;     &lt;td&gt;&lt;div align="center"&gt;●&lt;/div&gt;&lt;/td&gt;     &lt;td&gt;&lt;div align="center"&gt;X&lt;/div&gt;&lt;/td&gt;     &lt;td&gt;&lt;div align="center"&gt;X&lt;/div&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="background-color: #fff2cc; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;default&lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&lt;div align="center"&gt;●&lt;/div&gt;&lt;/td&gt;     &lt;td&gt;&lt;div align="center"&gt;X&lt;/div&gt;&lt;/td&gt;     &lt;td&gt;&lt;div align="center"&gt;●&lt;/div&gt;&lt;/td&gt;     &lt;td&gt;&lt;div align="center"&gt;X&lt;/div&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;tr&gt;     &lt;td style="background-color: #fff2cc; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;private&lt;/span&gt;&lt;/td&gt;     &lt;td&gt;&lt;div align="center"&gt;●&lt;/div&gt;&lt;/td&gt;     &lt;td&gt;&lt;div align="center"&gt;X&lt;/div&gt;&lt;/td&gt;     &lt;td&gt;&lt;div align="center"&gt;X&lt;/div&gt;&lt;/td&gt;     &lt;td&gt;&lt;div align="center"&gt;X&lt;/div&gt;&lt;/td&gt;   &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;දැන් අපි මේ පිලිබඳව විස්ත‍රාත්මකව බලමු.&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;■ public&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: inherit;"&gt;මෙලෙස declare ක‍රන ලද members සඳහා ජාවා වැඩසටහන තුල එය අයත් object එක refer ක‍රන ඕනෑම තැනකදී ලඟා විය හැක.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;■ protected&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: large;"&gt;මේ අයුරින් declare ක‍රන ලද methods හා variables භාවිතා කල හැක්කේ එම class එකෙහි sub class / child class වලට පමණි. මෙය Inheritance පාඩමේදී වඩාත් පැහැදිලි වනු ඇත.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;■ default&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; font-size: large;"&gt;යම් member කෙනෙක් සඳහා කිසිඳු modifier එකක් යොදා නොමැති විට එයට යෙදෙනුයේ default modifier එකයි.default members භාවිතා කල හැක්කේ එම class එක තුලදී සහ එම class එක අයත් package එක තුලදී පමණි.&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;■ private&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; font-size: large;"&gt;සියලු private members access කල හැක්කේ එය අයත් class එක තුලදීම පමණි.&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;div style="color: #990000;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;සැයු: සාමාන්‍යයෙන් Object Oriented ක්‍රමලේඛනයක් ලිවීමේදී අනුගමනය කරන දෙයක් තමයි data නොහොත් instance variables, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;private&lt;/span&gt; ලෙස declare කිරීම සහ methods , &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;public &lt;/span&gt;ලෙස declare කිරීම.public data භාවිතා කිරීම හොඳ වස්තු පාදක ක්‍රමලේඛනයක ලක්ෂණයක් නොවේ!.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: large;"&gt; &lt;span style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;දැන් අපි &lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;private &lt;/span&gt;&lt;/b&gt;සහ &lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;public &lt;/span&gt;&lt;/b&gt;modifiers ගැන අධ්‍යයනය කිරීම සඳහා ස‍රල ජාවා වැඩසටහනක් ලියමු.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;මේ සඳහා අපි Employee කෙනෙකු උදාහ‍රණයට ගනිමු.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Employee.java&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;pre class="java" name="code"&gt;class Employee {&lt;br /&gt; //instance variables&lt;br /&gt; public String Name; // Name is a public member&lt;br /&gt; private float HourlyRate; //private member&lt;br /&gt; private float HoursWorked; //private member&lt;br /&gt; &lt;br /&gt; //constructor&lt;br /&gt; public Employee(String name,float hr,float hw){&lt;br /&gt;  Name=name;&lt;br /&gt;  HourlyRate=hr;&lt;br /&gt;  HoursWorked=hw;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; //public method&lt;br /&gt; public void setHourlyRate(float hr){&lt;br /&gt;  HourlyRate=hr;&lt;br /&gt; }&lt;br /&gt; //private method&lt;br /&gt; private float getTotalSal(){&lt;br /&gt;  return (HourlyRate*HoursWorked);&lt;br /&gt; }&lt;br /&gt; //public method&lt;br /&gt; public void showDetails(){&lt;br /&gt;  System.out.println("Employee Name : " + Name);&lt;br /&gt;  System.out.println("Total Salary  : " + getTotalSal() );&lt;br /&gt;  System.out.println("-----------------------------------------");&lt;br /&gt; }&lt;br /&gt;}//end of the Employee class&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-size: large;"&gt;■දැන් අපි Employee class එක යොදාගෙන පහත කේතය execute ක‍ර ලැබෙන ප්‍රතිඵලය කුමක්දැයි බලමු.&lt;/span&gt;&lt;br /&gt;&lt;pre class="java" name="code"&gt;Employee emp1=new Employee("Prasanna",2300.75f,40.0f);&lt;br /&gt;  emp1.showDetails();&lt;br /&gt;  emp1.Name="Nimal"; //access the public variable of emp1&lt;br /&gt;  emp1.showD
