Lesson ৬ মিনিট পড়া

মেথড (Methods)

একবার লিখুন, সব জায়গায় ব্যবহার করুন

মেথড কী? (What's a Method?)

মেথডকে (Method) একটি রেসিপির কার্ডের (recipe card) মতো ভাবতে পারেন। প্রতিবার কুকিজ বা বিস্কুট কীভাবে বানাতে হবে তা বিস্তারিত বলার বদলে, আপনি রেসিপিটি একবার লিখে রাখেন এবং শুধু বলেন "কুকিজের রেসিপিটা অনুসরণ করো।" জাভাতে মেথড আপনাকে কোডের একটি অংশকে একসাথে গুছিয়ে রাখতে, এর একটি নাম দিতে এবং যখনই প্রয়োজন পড়বে তখনই তাকে ডাকতে বা কল (call) করতে সাহায্য করে।

জাভার প্রতিটি মেথডের কয়েকটি অংশ থাকে:

  • রিটার্ন টাইপ (Return type) — মেথডটি কাজ শেষে কী ফেরত দেয়? (যেমন int, String, অথবা কিছু ফেরত না দিলে void)
  • নাম (Name) — আপনি মেথডটিকে কী নামে ডাকবেন (যেমন calculateTax, greet)
  • প্যারামিটার (Parameters) — কাজ করার জন্য এর কী কী উপাদান বা ইনপুট প্রয়োজন
  • বডি (Body){ } এর ভেতরে থাকা আসল নির্দেশাবলী বা কোড

আপাতত আমরা static মেথড নিয়ে কাজ করব, যাতে এগুলোকে সরাসরি main() মেথড থেকে কল করা যায়। আমরা যখন ক্লাস (classes) নিয়ে আলোচনা করব, তখন আপনি নন-স্ট্যাটিক (non-static) মেথড সম্পর্কেও জানতে পারবেন।

আপনার প্রথম মেথড (Your First Methods)

public class Main {
// void method — does something but returns nothing
static void greet(String name) {
System.out.println("Hey, " + name + "! Welcome aboard.");
}
// Method that returns a value
static int add(int a, int b) {
return a + b;
}
// Method with a boolean return
static boolean isEven(int number) {
return number % 2 == 0;
}
// Method with multiple lines of logic
static String getLetterGrade(int score) {
if (score >= 90) return "A";
if (score >= 80) return "B";
if (score >= 70) return "C";
if (score >= 60) return "D";
return "F";
}
public static void main(String[] args) {
greet("Asif");
greet("Sam");
int sum = add(15, 27);
System.out.println("15 + 27 = " + sum);
System.out.println("Is 4 even? " + isEven(4));
System.out.println("Is 7 even? " + isEven(7));
System.out.println("Score 85 = " + getLetterGrade(85));
}
}
Output
Hey, Asif! Welcome aboard.
Hey, Sam! Welcome aboard.
15 + 27 = 42
Is 4 even? true
Is 7 even? false
Score 85 = B

মেথড ওভারলোডিং — একই নাম, ভিন্ন উপাদান (Method Overloading — Same Name, Different Ingredients)

জাভা আপনাকে একই নামের একাধিক মেথড রাখার সুযোগ দেয়, যতক্ষণ না তারা ভিন্ন ভিন্ন প্যারামিটার গ্রহণ করে। এই চমৎকার সুবিধাটিকে বলা হয় ওভারলোডিং (overloading)। এটি অনেকটা "চা বানানোর" রেসিপির মতো — একটি রেসিপি দিয়ে রং চা (কোনো প্যারামিটার নেই) বানানো যায়, আরেকটি দিয়ে দুধ চা (দুধের প্যারামিটার) এবং অন্যটি দিয়ে মশলা চা (দুধ + মশলার প্যারামিটার) তৈরি করা যায়৷

আপনি কোন উপাদান বা আর্গুমেন্ট (argument) পাঠাচ্ছেন, তার ওপর ভিত্তি করে জাভা নিজে থেকেই বুঝে নেয় যে কোন মেথডটিকে কল করতে হবে। এটি মূলত আর্গুমেন্টগুলোর সংখ্যা এবং টাইপের (type) ওপর নজর রাখে।

মেথড ওভারলোডিংয়ের ব্যবহার (Method Overloading in Action)

public class Main {
// Version 1: multiply two ints
static int multiply(int a, int b) {
return a * b;
}
// Version 2: multiply three ints
static int multiply(int a, int b, int c) {
return a * b * c;
}
// Version 3: multiply two doubles
static double multiply(double a, double b) {
return a * b;
}
// Overloaded print helpers
static void printInfo(String name) {
System.out.println("Name: " + name);
}
static void printInfo(String name, int age) {
System.out.println("Name: " + name + ", Age: " + age);
}
public static void main(String[] args) {
System.out.println("2 * 3 = " + multiply(2, 3));
System.out.println("2 * 3 * 4 = " + multiply(2, 3, 4));
System.out.println("2.5 * 3.5 = " + multiply(2.5, 3.5));
printInfo("Laboni");
printInfo("Laboni", 12);
}
}
Output
2 * 3 = 6
2 * 3 * 4 = 24
2.5 * 3.5 = 8.75
Name: Laboni
Name: Laboni, Age: 12
Note: মেথড হলো DRY (Don't Repeat Yourself) বা নিজের পুনরাবৃত্তি করবেন না, এই নীতির মূল ভিত্তি। আপনি যদি কখনো খেয়াল করেন যে আপনি একই কোড বারবার কপি এবং পেস্ট করছেন, তবে এটি একটি সুস্পষ্ট সংকেত যে আপনার ওই কোডটুকুকে একটি মেথডের ভেতর রাখা উচিত। বাড়তি সুবিধা: আপনার যদি কখনো কোনো বাগ (bug) বা ত্রুটি ঠিক করতে হয়, তবে সব জায়গায় খুঁজতে হবে না, বরং কেবল একটি জায়গাতেই পরিবর্তন করলেই চলবে।
চ্যালেঞ্জ

ছোট কুইজ

রিটার্ন টাইপ হিসেবে 'void' এর অর্থ কী?
ArraysClasses & Objects