BREAKING NEWS
🚀 Kaweesha launched the new AI Tech Blog! 💻 Python & Java Tutorials are now live. 🎮 Game Development Guide: Building 2D Games with Godot. 🌐 Web Hosting secrets revealed - Check the latest post!

Java Sinhala - Part 07: කෝඩ් එක ලස්සන කරන මැජික් කෑලි! (Methods & Functions) 🛠️✨

Java Methods and Functions deep explanation Sinhala Tutorial Part 07

Software Engineer කෙනෙක් විදියට වැඩ කරද්දි අපිට අහන්න ලැබෙන ලොකුම නීතියක් තමයි DRY (Don't Repeat Yourself) කියන්නේ. ඒ කියන්නේ "කළ දේම ආයේ ආයේ කරන්න එපා" කියන එකයි.

හිතන්න ඔයාට ගේම් එකක "Player ගේ ලකුණු පෙන්නන" කෝඩ් එක පේළි 10ක් තියෙනවා කියලා. ඔයා ඒක ගේම් එක ඇතුලේ තැන් 50කදී පෙන්නන්න ඕනේ නම්, පේළි 500ක් ලියනවද? පිස්සුනේ! 🤯 අන්න ඒ වගේ තැන්වලදී අපි කරන්නේ අර පේළි 10 එක පෙට්ටියකට දාලා, ඒ පෙට්ටියට නමක් දෙනවා. ඊට පස්සේ අපිට ඕන තැනක ඒ නම විතරක් කිව්වම අර පේළි 10ම වැඩ කරනවා.

මේ පෙට්ටියට තමයි අපි Methods (හෝ Functions) කියලා කියන්නේ. අද අපි බලමු Java වල මේ Methods පාවිච්චි කරලා කෝඩ් එක කොහොමද ලස්සනට සහ පිළිවෙලට ලියන්නේ කියලා. 👇

1. Method එකක හැඩරුව (Anatomy of a Method) 🧬

Java වල Method එකක් හදද්දි අනිවාර්යයෙන්ම තියෙන්න ඕන කොටස් කිහිපයක් තියෙනවා. අපි මුලින්ම ඒකේ Syntax එක බලමු.

Method Syntax එක:
[Access Modifier] [Non-Access Modifier] [Return Type] [Method Name] (Parameters) { // Code Body }

අපි මේක එකින් එක ගලවලා බලමු:

  • 1. Access Modifier (public): මේ Method එක වෙන Class වල අයට පාවිච්චි කරන්න දෙනවද නැද්ද කියලා තීරණය කරන්නේ මෙයා (public, private වගේ දේවල්).
  • 2. Non-Access Modifier (static): අපි දැනට මේක දානවා. static දැම්මම අපිට Class එකෙන් Object එකක් (OOP වල එන දෙයක්) හදන්නේ නැතුව කෙලින්ම Method එක Run කරන්න පුළුවන්.
  • 3. Return Type (void හෝ int/String): මේ Method එක වැඩේ කරලා ඉවර වෙලා අපිට මොනවහරි දත්තයක් ආපහු දෙනවද (Return), නැත්නම් නිකන්ම වැඩේ කරලා නිකන් ඉන්නවද (void) කියන එක.
  • 4. Method Name (calculateTotal): මේක තමයි අපි දාන නම. නම දාද්දි අනිවාර්යයෙන්ම ක්‍රියාවක් (Action එකක්) හැඟවෙන විදියට camelCase ක්‍රමයට දාන්න ඕනේ.
  • 5. Parameters (int a, int b): Method එකට වැඩේ කරන්න එළියෙන් බඩු (දත්ත) ඕන නම්, ඒවා දෙන්නේ මේ වරහන් ඇතුලෙන්.

2. මගේ පළමු Method එක හදමු! 🛠️

අපි මුලින්ම කිසිම දෙයක් එළියෙන් ගන්නේ නැති, මුකුත් ආපහු දෙන්නෙත් නැති සරල Method එකක් හදමු.

public class Main {

    // මේ තියෙන්නේ අපේ අලුත් Method එක (Main Method එකෙන් එළියේ තමයි මේක ලියන්නේ)
    public static void sayWelcome() {
        System.out.println("🎉 KP Tech Gear එකට සාදරයෙන් පිළිගනිමු!");
        System.out.println("අපි Java ඉගෙන ගමු.");
    }

    public static void main(String[] args) {
        // Method එක කතා කිරීම (Calling the Method)
        sayWelcome();
        sayWelcome(); // ඕන තරම් පාරක් කතා කරන්න පුළුවන්!
    }
}
⚠️ ගොඩක් අය වරද්දගන්න තැනක්:
Method එකක් හැදුවට විතරක් ඒක වැඩ කරන්නේ නෑ. අනිවාර්යයෙන්ම ඒක main method එක ඇතුලෙන් Call (කතා කරන්න) කරන්නම ඕනේ. නැත්නම් ඒක නිකන්ම නිකන් ලියපු කෝඩ් කෑල්ලක් විතරයි.

3. Parameters සහ Arguments (එළියෙන් බඩු දෙන හැටි) 🚚

හිතන්න ඔයා ජූස් හදන මැෂින් එකක් (Blender එකක්) ගෙනාවා කියලා. මැෂින් එක තිබ්බට වැඩක් නෑ, ඒකට පළතුරු දාන්න ඕනෙනේ. Method එකකටත් වැඩේ කරන්න එළියෙන් Data දෙන්න පුළුවන්. ඒවට කියන්නේ Parameters කියලා.

public class Main {

    // මෙතන (String name) කියන්නේ Parameter එකක් (මෙයා බලාගෙන ඉන්නවා නමක් එනකම්)
    public static void greetUser(String name, int age) {
        System.out.println("Hello " + name + "! ඔයාට වයස " + age + " යි නේද?");
    }

    public static void main(String[] args) {
        // මෙතන අපි දෙන "Kamal" සහ 25 ට කියන්නේ Arguments කියලා
        greetUser("Kamal", 25);
        greetUser("Nimal", 30);
    }
}
💡 Parameter vs Argument වෙනස:
  • Parameter: අපි Method එක හදද්දි වරහන් ඇතුලේ ලියන Variable වලට (උදා: String name).
  • Argument: අපි Method එක Call කරද්දි ඇත්තටම පාස් කරන අගයට (උදා: "Kamal").

4. Return Keyword එක (ආපහු බඩු ගැනීම) 🎁

මෙච්චර කල් අපි හැදුවේ void methods. ඒ කියන්නේ ඒක ඇතුලෙම Print කරලා නිකන් ඉන්නවා. හැබැයි සමහර වෙලාවට අපිට ඕනේ Method එකෙන් ගණනක් හදලා, ඒ උත්තරේ ආපහු අපිට ගන්න (Return).

එතකොට අපි void වෙනුවට අපි බලාපොරොත්තු වෙන Data Type එක (int, double, String) ලියන්න ඕනේ.

public class Main {

    // මෙතන void වෙනුවට int දැම්මා. ඒ කියන්නේ අනිවාර්යයෙන්ම int එකක් return කරන්න ඕනේ.
    public static int addNumbers(int a, int b) {
        int answer = a + b;
        return answer; // උත්තරේ ආපහු දෙනවා
    }

    public static void main(String[] args) {
        // ආපහු දෙන උත්තරේ අපි Variable එකකට අල්ලගන්නවා
        int total = addNumbers(10, 20);
        System.out.println("එකතුව: " + total); // Output: 30
    }
}

5. Method Overloading (නම එකයි, වැඩ ගොඩයි) 🔄

Java වල තියෙන පිස්සු හැදෙන Feature එකක් තමයි මේක. අපිට එකම නම තියෙන Methods කිහිපයක් හදන්න පුළුවන්, හැබැයි ඒවට දෙන Parameters වෙනස් වෙන්න ඕනේ.

උදාහරණයක් විදියට ඔයාට ඉලක්කම් 2ක් එකතු කරන්න ඕනේ නම් add(int a, int b) කියලත්, 3ක් එකතු කරන්න ඕනේ නම් add(int a, int b, int c) කියලත් හදන්න පුළුවන්. Java ඉබේම තේරුම් ගන්නවා ඔයා කීයක් දුන්නද කියලා බලලා අදාල එක Run කරන්න.

public class Calculator {

    // Method 1: ඉලක්කම් 2ක් එකතු කරන්න
    public static int add(int a, int b) {
        return a + b;
    }

    // Method 2: ඉලක්කම් 3ක් එකතු කරන්න (නම ඒකමයි!)
    public static int add(int a, int b, int c) {
        return a + b + c;
    }

    public static double add(double a, double b) {
        return a + b;
    }
}
🧠 Under the Hood (Memory Call Stack):
ඔයා Method එකක් Call කරද්දි Computer එකේ RAM එක ඇතුලේ "Call Stack" කියලා එකක් හැදෙනවා. ඒක හරියට පොත් ගොඩක් ගැහුවා වගේ. Main method එක උඩින් අලුත් Method එක තියෙනවා. අලුත් එක වැඩේ කරලා ඉවර වුනාම ඒක Stack එකෙන් අයින් (Pop) වෙලා ආයේ Main method එකටම එනවා.

Mega Project: Smart ATM System 🏧💳

අපි මෙච්චර කල් ඉගෙන ගත්ත If/Else, Loops, Variables සහ අද ඉගෙන ගත්ත Methods ඔක්කොම එකතු කරලා සරල ATM System එකක් හදමු. මේකෙදි මුළු කෝඩ් එකම Main එකේ ලියන්නේ නැතුව, වැඩ ටික ලස්සනට Methods වලට කඩලා තියෙන්නේ බලන්න.

💻 The Smart ATM Code

import java.util.Scanner;

public class SmartATM {

    // මුළු පන්තියටම (Class) පාවිච්චි කරන්න පුළුවන් Global Variable එකක්
    static double balance = 5000.00; // ආරම්භක මුදල

    // 1. මෙනු එක පෙන්වන Method එක
    public static void showMenu() {
        System.out.println("\n=== KP Tech ATM ===");
        System.out.println("1. Check Balance");
        System.out.println("2. Deposit Money");
        System.out.println("3. Withdraw Money");
        System.out.println("4. Exit");
        System.out.print("Choose an option: ");
    }

    // 2. සල්ලි බලන Method එක
    public static void checkBalance() {
        System.out.println("💰 Your Balance is: Rs." + balance);
    }

    // 3. සල්ලි දාන Method එක (Parameter එකක් ගන්නවා)
    public static void deposit(double amount) {
        if (amount > 0) {
            balance += amount;
            System.out.println("✅ Deposit Successful! New Balance: Rs." + balance);
        } else {
            System.out.println("❌ Invalid Amount!");
        }
    }

    // 4. සල්ලි ගන්න Method එක
    public static void withdraw(double amount) {
        if (amount > balance) {
            System.out.println("❌ Insufficient Funds! (සල්ලි මදි)");
        } else if (amount <= 0) {
            System.out.println("❌ Invalid Amount!");
        } else {
            balance -= amount;
            System.out.println("💸 Withdraw Successful! Remaining: Rs." + balance);
        }
    }

    // --- Main Method එක (මේක තමයි පාලන මැදිරිය) ---
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        boolean isRunning = true;

        while (isRunning) {
            showMenu(); // මෙනු එක කතා කරනවා
            int choice = sc.nextInt();

            switch (choice) {
                case 1:
                    checkBalance();
                    break;
                case 2:
                    System.out.print("Enter amount to deposit: ");
                    double depAmount = sc.nextDouble();
                    deposit(depAmount); // Argument එක පාස් කරනවා
                    break;
                case 3:
                    System.out.print("Enter amount to withdraw: ");
                    double withAmount = sc.nextDouble();
                    withdraw(withAmount);
                    break;
                case 4:
                    System.out.println("Thank you for using KP Tech ATM! 🙏");
                    isRunning = false;
                    break;
                default:
                    System.out.println("❌ Invalid Choice!");
            }
        }
        sc.close();
    }
}

අවසාන වශයෙන්... 🏁

Methods කියන්නේ Java වල "පිරිසිදුකම" රකින ප්‍රධානම ආයුධය. Main Method එක ඇතුලේ ලොකු කෝඩ් ගොඩවල් ලියන්නේ නැතුව, හැමදේම මේ වගේ වෙන වෙනම Methods වලට කඩන්න පුරුදු වෙන්න. ඒක තමයි Professional Programmer කෙනෙක්ගේ ලක්ෂණය.

ඊළඟ කොටසින්: Software Engineering වල රහස - Object Oriented Programming (OOP) සහ Classes 🏭🚗
දිගටම KP Tech Gear සමඟ රැඳී සිටින්න! 👇

Author

About

Tech enthusiast, Python/Java Developer, and Gamer. Sharing knowledge about coding and modern technology.

Discussion

Kaweesha AI ×
Hello Kaweesha! I am ready to help with Python, Java, or Hosting queries. 🤖