Saturday, January 7, 2012

Java Fundementals

මම අද කතා කරන්නේ ජාවා වල මූලිකම දේවල් ගැන.ඒ යටතේ මම
1.OO concepts
2.class
3.packages
කියන ඒවා ගැන කියල දෙන්නම්.

1. OO (Object Orientation)[/color]
අපි මුලින්ම බලමු Object oriented program එකක් කියන්නේ මොකද්ද කියලා.ඉස්සර තිබ්බේ structured program ඒ කියන්නේ එ program execute වෙන්නේ පේලියෙන් පේලියට (line by line). පළවෙනි පේලිය execute උනාට පස්සේ ඊළඟ පේලිය execute වෙනවා.ඔය structure එක වෙනස් කරන්න මාරම ගේමක් දෙන්න උනා.
ඊට පස්සේ තමයි මේ OOP කියන concept එක ආවේ. ඒකෙදී සරලව කිව්වොත් වෙන්නේ අපේ program එක object ගනනාවක එකතුවක් විදියට තමයි වැඩ කරන්නේ. එක වෙන්නේ object අතර වෙන interaction වලින්.එක object එකක් තව object එකක තියන method එකක්  call කරනවා. ඒ object එක වෙන object එකක method එකක් call කරනවා.ඔන්න ඔහොම තමයි වැඩේ වෙන්නේ.
හැම object එකටම පොදු කරුණු 3ක් තියනවා
1. Identifier නමක් තියනවා අඳුර ගන්න - name of the object.
2. States ඌට අදාල ලක්ෂණ තියනවා - instance variables in that object.
3. Behaviors ඌට කරන්න පුලුවන් වැඩ තියනවා - methods of that object.
OOP වල තියන මූලිකම කරුණු තමයි
1. Abstraction[/color] - මේ කියන්නේ අපි පාවිච්චි කරන කෙනාට/එකාට පෙන්වන්නේ අවශ‍යම දේවල් විතරයි. අපි ඌට සංකීරණ දේවල් කියන්න යන් නෑ. (Abstraction means to show only the necessary details to the client of the object.)
 2. Encapsulation - මේකෙන් කියන්නේ හංඟනවා වගේ දෙයක්.අපි මොකක් හරි හෙනම පට්ට algorithm එකක් ලිව්වා කියලා හිතපන් කෝ. මේක හැමොටම පාවිච්චි කරන්න ඔනේ. හබැයි අපි කැමති නැ අනික් උන් අපි මේක හදලා තියෙන්නේ කොහොමද කියලා දැන ගන්නවාට. එතකොට අපි කරන්නේ අපේ මේ algorithm එක ලියලා ඒක use කරන්න විදියක් දෙනවා. හැබැයි ඒක වෙන්නේ කොහොමද කියලා අනික් අයට දන ගන්න විදියක් නෑ. මේක ගොඩක් වෙලාවට කරන්නේ private variables හා getters and setters වලින් තමයි.
3. Inheritance - මේකනම් කට්ටියට තේරෙනවා ඇති. අම්මාගේ තාත්තගේ ලක්ෂණ ළමයින්ට ලැබෙනවා. ඒවගේ තමයි super class වල attributes, sub class වලට ලැබෙනවා
4. Polymorphism - එකම දේ ක්‍රම ගණනාවකින් තියෙන්න පුලුවන්. මේක යටතේ method overloading, overriding, dynamic method binding කියන ඒවා තියනවා.

2. class
object එකක් කියලා කියන්නේ class එකකින් අපි හදන instance එකක්. එතකොට කට්ටියට එන ප්‍රශ්නේ තමයි මොකද්ද යකෝ class එකක් කියන්නේ කියලා.class එකක් කියන්නේ සරලවම කිවුවොත් හරියට අච්චුවක් වගේ.
අපි බ්ලොක්ගලක් object එකක් කියලා සැලකුවොත් බ්ලොක්ගල් හදන machine එක තමයි අපේ class එක වෙන්නේ. ඒ අච්චුවෙන් අපිට ඕනේ තරම් බ්ලොක්ගල් හදන්න පුලුවන්.හැබැයි ඒ හැම එකක්ම එකම වගේ.
class එකක structure එක තියෙන්නේ මෙහෙමයි.PIC
P - package declaration - මේ file එක තියෙන්නේ මොන folder එකේද
I - import statements - අපේ program එක run කරන්න ඕනේ වෙන අනික් class, methods තියෙන්නේ කොහෙද කියන එක
C - 'class' keyword + class body.
package test; // MyFileReader කියන class එක තියෙන්නේ test කියන folder එක ඇතුලේ
import java.io.BufferedReader; 
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
//BufferedReader,File,FileReader, etc..class තියෙන්නේ IO කියන package එක ඇතුලේ

class MyFileReader {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new FileReader(new File("abc.txt")));
        while (reader.ready()) {
            System.out.println(reader.readLine());
        }
        reader.close();
    }
}
interface එකක් කියනේ class එකකට වඩා ටිකක් වෙනස් දෙයක්. එකකින් අපි බලාපොරොත්තු වෙන්නේ යම්කිසි දෙයකට අනිවාර්යෙන්ම තියෙන්න ඕනේ මොනවාද කියන එක enforce කරනවා.කට්ටියට එහෙම කිවුවාම තේරුණාද මන්දා... හ්ම්........... අපි මෙහෙම හිතමුකෝ.
කුරුල්ලෝ වර්ග ගොඩක් ඉන්නවා. ඒ හැම කුරුල්ලාටම කෑගහන්න පුලුවන්. හබැයි එක එක කුරුල්ලා කෑගහන විදිය වෙනස්. ඒ කියන්නේ අපි කුරුල්ලෝ කෑගහන්නේ makeSound() කියන methos එකෙන් නම් ඒ method එකේ implementation එක කුරුල්ලා අනුව වෙනස් වෙන්න ඕනේ.හැබැයි හැම එකාටම මොකක් හරි කෑගහන්න විදියක් තියෙන්න ඔනේ.ඒ කියන්නේ හැම එකාටම makeSound() කියන method එක තියෙන්න ඔනේ. අන්න ඒ වගේ වෙලාවක අපිට interface එකක් පාවිච්චි කරන්න පුලුවන්.
interface BirdSound{
  public void makeSound();
}
class Kaputa implements BirdSound{
  public void makeSound(){
    System.out.println("Kaak kaak");
  }
}
class Kowula implements BirdSound{
  public void makeSound(){
    System.out.println("Koho koho");
  }
}

No comments:

Post a Comment