Apex Methods হলো Apex ক্লাসের গুরুত্বপূর্ণ উপাদান, যা কোডের একটি ব্লক হিসেবে কাজ করে এবং নির্দিষ্ট কার্যক্রম সম্পাদন করে। Apex-এ মেথডস তৈরি করা হয় কোডের পুনঃব্যবহারযোগ্যতা নিশ্চিত করতে এবং নির্দিষ্ট কার্যক্রমকে সহজে পরিচালনা করতে। মেথডস ব্যবহার করে ক্লাসের প্রোপার্টি মানানো, গাণিতিক কাজ সম্পন্ন করা, ডেটা প্রসেসিং, এবং অন্যান্য কার্যক্রম সম্পন্ন করা যায়।
Apex মেথডে সাধারণত অ্যাক্সেস মডিফায়ার, রিটার্ন টাইপ, মেথডের নাম, এবং প্রয়োজনীয় প্যারামিটার থাকে। একটি মেথড ডিক্লার করার জন্য public
, private
, বা protected
অ্যাক্সেস মডিফায়ার ব্যবহার করা হয়। মেথডটি কি ধরনের মান রিটার্ন করবে সেটাও রিটার্ন টাইপ দ্বারা নির্ধারণ করা হয়।
Syntax:
accessModifier ReturnType methodName(parameters) {
// মেথডের কাজের কোড
}
উদাহরণ:
public class MathOperations {
// Sum মেথড যা দুটি সংখ্যার যোগফল রিটার্ন করে
public Integer sum(Integer a, Integer b) {
return a + b;
}
// Greet মেথড যা একটি বার্তা প্রদর্শন করে
public void greet(String name) {
System.debug('Hello, ' + name + '!');
}
}
এখানে MathOperations
নামে একটি ক্লাসে দুটি মেথড আছে: sum()
এবং greet()
। sum()
মেথড দুটি সংখ্যার যোগফল রিটার্ন করে এবং greet()
মেথড একটি নাম নিয়ে স্বাগত বার্তা প্রদর্শন করে।
অ্যাক্সেস মডিফায়ার: মেথডটি কে বা কোন ক্লাস থেকে অ্যাক্সেস করা যাবে তা নির্ধারণ করতে public
, private
, এবং protected
মডিফায়ার ব্যবহার করা হয়।
রিটার্ন টাইপ: মেথডের রিটার্ন টাইপ নির্ধারণ করে মেথডটি কি ধরনের মান রিটার্ন করবে। যদি মেথড কিছু রিটার্ন না করে, তাহলে void
রিটার্ন টাইপ ব্যবহার করা হয়।
প্যারামিটারস: মেথডে প্যারামিটার পাস করা যায়, যা মেথডের ভিতরে ব্যবহৃত হয় এবং কার্যক্রম নির্ধারণ করতে সহায়ক।
Overloading: একই নামে একাধিক মেথড তৈরি করা যায় যা বিভিন্ন প্যারামিটার ব্যবহার করে। একে মেথড ওভারলোডিং বলে।
Standard মেথড: সাধারণ মেথড যা নির্দিষ্ট কাজ সম্পন্ন করে এবং প্রয়োজন অনুযায়ী মান রিটার্ন করে।
উদাহরণ:
public Integer multiply(Integer a, Integer b) {
return a * b;
}
Static মেথড: Static মেথড ক্লাসের সরাসরি অংশ হিসেবে থাকে, এবং এই মেথড কল করার জন্য ক্লাসের অবজেক্ট তৈরি করতে হয় না। Static মেথড সাধারণত ক্লাসের সাধারণ কার্যক্রম সম্পন্ন করতে ব্যবহৃত হয়।
উদাহরণ:
public class MathUtils {
public static Integer add(Integer a, Integer b) {
return a + b;
}
}
// কল করার সময়
Integer result = MathUtils.add(5, 10);
Getter এবং Setter মেথড: Getter এবং Setter মেথড সাধারণত ক্লাসের প্রোপার্টির মান পাওয়া এবং সেট করার জন্য ব্যবহৃত হয়। Getter মেথডে সাধারণত প্রোপার্টির মান রিটার্ন করা হয়, এবং Setter মেথডে প্রোপার্টির মান পরিবর্তন করা হয়।
উদাহরণ:
এখানে getColor()
এবং setColor()
মেথডগুলো color
প্রোপার্টির মান গ্রহণ এবং সেট করতে ব্যবহৃত হয়।
public class Car {
private String color;
// Getter মেথড
public String getColor() {
return color;
}
// Setter মেথড
public void setColor(String color) {
this.color = color;
}
}
Void মেথড: Void মেথডে কোনো রিটার্ন টাইপ থাকে না এবং এটি সাধারণত কার্যক্রম সম্পন্ন করার জন্য ব্যবহৃত হয়।
উদাহরণ:
public void displayMessage(String message) {
System.debug(message);
}
public class Calculator {
// Addition মেথড
public Integer add(Integer a, Integer b) {
return a + b;
}
// Subtraction মেথড
public Integer subtract(Integer a, Integer b) {
return a - b;
}
// Display মেথড (Void মেথড)
public void displayResult(Integer result) {
System.debug('Result: ' + result);
}
}
// মেথড কল করার সময়
Calculator calc = new Calculator();
Integer sum = calc.add(10, 5);
calc.displayResult(sum);
উপরে Calculator
ক্লাসে তিনটি মেথড আছে: add()
, subtract()
, এবং displayResult()
। add()
মেথড দুটি মানের যোগফল রিটার্ন করে, subtract()
মেথড বিয়োগফল রিটার্ন করে, এবং displayResult()
মেথড একটি বার্তা প্রদর্শন করে।
Apex মেথডস ব্যবহার করে কোডের কার্যক্রম আরও মডুলার এবং পুনঃব্যবহারযোগ্য করা যায়, যা প্রোগ্রামিং লজিক এবং কাঠামোকে সুসংগঠিত করতে সহায়ক।
মেথড হলো প্রোগ্রামিংয়ে একটি কার্যকরী কোড ব্লক, যা নির্দিষ্ট কাজ সম্পাদন করতে ব্যবহৃত হয়। মেথড ডিক্লারেশন এবং ডেফিনিশন প্রোগ্রামের বিভিন্ন অংশে কোডকে সংগঠিত ও পুনরায় ব্যবহারযোগ্য করতে সাহায্য করে।
মেথড ডিক্লারেশন (Method Declaration): মেথড ডিক্লারেশন বলতে মেথডের নাম, এর রিটার্ন টাইপ, এবং প্যারামিটারগুলোর ডেটা টাইপ নির্ধারণ করা বোঝায়। এটি মূলত মেথডের অবকাঠামো তৈরি করে।
মেথড ডেফিনিশন (Method Definition): মেথড ডেফিনিশন বলতে মেথডের জন্য কার্যকরী কোড ব্লক বা বডি তৈরি করা বোঝায়, যেখানে মেথড কী কাজ করবে তা নির্ধারণ করা হয়।
Apex-এ মেথড ডিক্লারেশন এবং ডেফিনিশনের সাধারণ গঠন নিচে দেখানো হলো:
// মেথড ডিক্লারেশন এবং ডেফিনিশন
public returnType methodName(parameters) {
// মেথডের কার্যকরী অংশ বা বডি
}
public
, private
, protected
, global
)।void
ব্যবহার করা হয়।নিচে মেথড ডিক্লারেশন এবং ডেফিনিশনের কয়েকটি উদাহরণ দেয়া হলো:
void
টাইপের মেথড যা কিছু রিটার্ন করে নাpublic void greetUser() {
System.debug('Hello, User!');
}
public
, তাই এটি বাইরে থেকে অ্যাক্সেস করা যাবে।void
, কারণ এটি কোনো মান রিটার্ন করছে না।greetUser
Integer
টাইপের মান রিটার্ন করেpublic Integer addNumbers(Integer a, Integer b) {
Integer sum = a + b;
return sum;
}
Integer
, কারণ এটি একটি পূর্ণসংখ্যা রিটার্ন করছে।Integer a
, Integer b
a
এবং b
যোগফল হিসেবে sum
ভেরিয়েবলে সংরক্ষণ করে এবং সেটি রিটার্ন করে।public String welcomeMessage(String name) {
return 'Welcome, ' + name + '!';
}
String
, কারণ এটি একটি স্ট্রিং মান রিটার্ন করছে।String name
name
ইনপুট নিয়ে একটি স্বাগতম মেসেজ রিটার্ন করছে।Apex এ মেথড ডিক্লারেশন এবং ডেফিনিশন সাধারণত কোডকে পুনরায় ব্যবহারযোগ্য এবং সুনির্দিষ্ট কাজ সম্পাদনে সহায়ক করে। নিচের উদাহরণে দেখানো হয়েছে কিভাবে একটি ক্লাসে মেথড ডিক্লার করা এবং ডেফাইন করা হয় এবং সেটি ব্যবহার করা হয়:
public class Calculator {
// মেথড যা দুইটি সংখ্যা যোগ করে
public Integer add(Integer a, Integer b) {
return a + b;
}
// মেথড যা দুইটি সংখ্যা বিয়োগ করে
public Integer subtract(Integer a, Integer b) {
return a - b;
}
// মেথড যা দুইটি সংখ্যা গুণ করে
public Integer multiply(Integer a, Integer b) {
return a * b;
}
// মেথড যা দুইটি সংখ্যার ভাগফল প্রদান করে
public Double divide(Double a, Double b) {
if (b != 0) {
return a / b;
} else {
System.debug('Division by zero is not allowed');
return null;
}
}
}
এই উদাহরণে:
divide
মেথডে শূন্য দিয়ে ভাগ করার ক্ষেত্রে একটি শর্ত যোগ করা হয়েছে, যাতে কোনো ত্রুটি না হয়।এই পদ্ধতিতে Apex এ মেথড তৈরি ও ব্যবহারের মাধ্যমে কোডকে আরও সুসংগঠিত এবং কার্যকরী করা যায়।
Method Overloading এবং Return Types Apex-এ মেথডের কার্যক্ষমতা এবং বহুমুখীতা বাড়ায়। Method Overloading একটি ক্লাসে একই নামে একাধিক মেথড তৈরি করার সুযোগ দেয়, যেখানে বিভিন্ন সংখ্যক বা প্রকারের প্যারামিটার ব্যবহার করা হয়। Return Types মেথডটি যে ধরনের মান রিটার্ন করবে তা নির্দেশ করে।
Method Overloading হলো একই ক্লাসে একই নামে একাধিক মেথড ডিক্লার করার একটি প্রক্রিয়া, যেখানে প্রত্যেক মেথডের প্যারামিটার সংখ্যা বা প্রকার ভিন্ন হতে হবে। এর মাধ্যমে ডেভেলপাররা কোডের পুনঃব্যবহারযোগ্যতা বাড়াতে পারেন, কারণ একই মেথড নাম ব্যবহার করে বিভিন্ন ধরণের কাজ সম্পাদন করা যায়।
Syntax:
public class MathOperations {
// প্রথম মেথড: দুইটি পূর্ণসংখ্যার যোগফল প্রদান করে
public Integer add(Integer a, Integer b) {
return a + b;
}
// ওভারলোড মেথড: তিনটি পূর্ণসংখ্যার যোগফল প্রদান করে
public Integer add(Integer a, Integer b, Integer c) {
return a + b + c;
}
}
ব্যবহার:
MathOperations math = new MathOperations();
Integer sum1 = math.add(10, 20); // দুইটি প্যারামিটার
Integer sum2 = math.add(10, 20, 30); // তিনটি প্যারামিটার
উপরের উদাহরণে, add()
মেথড দুটি ভিন্ন সংস্করণে ডিক্লার করা হয়েছে। একটিতে দুইটি প্যারামিটার গ্রহণ করা হয়েছে, অন্যটিতে তিনটি প্যারামিটার। এটি Method Overloading-এর একটি সাধারণ উদাহরণ।
Return Type হলো মেথডটি যে ধরনের মান রিটার্ন করবে তার নির্দেশনা। Return Type মেথডের প্রধান অংশ এবং এটি মেথডের কাজ নির্ধারণ করতে সহায়ক।
Apex-এ বিভিন্ন ধরনের Return Type ব্যবহার করা যায়, যেমন:
Integer
, Double
, Boolean
, String
ইত্যাদি প্রিমিটিভ টাইপ রিটার্ন করা যায়।List
, Set
, এবং Map
টাইপ রিটার্ন করা যায়।void
ব্যবহার করা হয়।Syntax:
public ReturnType methodName(parameters) {
// Method code
return value;
}
উদাহরণ:
public class MathOperations {
// Integer রিটার্ন টাইপ
public Integer add(Integer a, Integer b) {
return a + b;
}
// String রিটার্ন টাইপ
public String getGreeting(String name) {
return 'Hello, ' + name;
}
// void রিটার্ন টাইপ
public void displayMessage(String message) {
System.debug(message);
}
}
উপরের উদাহরণে, add()
মেথডটি Integer
রিটার্ন করে, getGreeting()
মেথডটি String
রিটার্ন করে, এবং displayMessage()
মেথডটি কিছু রিটার্ন না করে void
রিটার্ন টাইপ ব্যবহার করেছে।
বৈশিষ্ট্য | Method Overloading | Return Types |
---|---|---|
কাজের ধরন | একই নামে ভিন্ন প্যারামিটার নিয়ে মেথড তৈরি করা | মেথডটি কি ধরনের মান রিটার্ন করবে তা নির্ধারণ করে |
কোডের পুনঃব্যবহার | কোডের পুনঃব্যবহার বাড়ায় | মেথডের মান ব্যবহারের ধরন নির্ধারণ করে |
উদাহরণ | add(Integer a, Integer b) এবং add(Integer a, Integer b, Integer c) | Integer , String , List , void ইত্যাদি |
Method Overloading এবং Return Types ব্যবহার করে Apex-এ কার্যকরী ও পুনঃব্যবহারযোগ্য কোড তৈরি করা যায়, যা প্রোগ্রামিংয়ের গুণগত মান বৃদ্ধি করে।
Apex-এ Static এবং Non-static Methods প্রোগ্রামিংয়ে গুরুত্বপূর্ণ ভূমিকা পালন করে। এই মেথডগুলো একটি ক্লাসের মধ্যে বিভিন্নভাবে ব্যবহার করা হয় এবং তাদের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে। নিচে Static এবং Non-static Methods নিয়ে বিস্তারিত আলোচনা করা হলো।
Static Method হলো এমন একটি মেথড, যা ক্লাসের ইনস্ট্যান্স বা অবজেক্ট তৈরি না করেই সরাসরি ক্লাসের মাধ্যমে অ্যাক্সেস করা যায়। Static মেথডের জন্য static
কিওয়ার্ড ব্যবহার করতে হয়।
public class MathOperations {
// Static method
public static Integer add(Integer a, Integer b) {
return a + b;
}
}
// Static method কল করা
Integer sum = MathOperations.add(5, 10);
System.debug('Sum: ' + sum); // Output: Sum: 15
add
মেথডটি Static, তাই এটি MathOperations
ক্লাসের ইনস্ট্যান্স তৈরি না করেই সরাসরি ক্লাসের মাধ্যমে কল করা হয়েছে।Non-static Method হলো এমন একটি মেথড, যা ক্লাসের অবজেক্ট তৈরি করে তারপর কল করতে হয়। Non-static মেথডের জন্য static
কিওয়ার্ড ব্যবহার করতে হয় না।
public class MathOperations {
// Non-static method
public Integer multiply(Integer a, Integer b) {
return a * b;
}
}
// Non-static method কল করা
MathOperations mathOp = new MathOperations();
Integer product = mathOp.multiply(5, 10);
System.debug('Product: ' + product); // Output: Product: 50
multiply
মেথডটি Non-static, তাই এটি কল করতে MathOperations
ক্লাসের একটি অবজেক্ট mathOp
তৈরি করা হয়েছে।বৈশিষ্ট্য | Static Method | Non-static Method |
---|---|---|
অ্যাক্সেস পদ্ধতি | সরাসরি ক্লাসের মাধ্যমে কল করা যায় | অবজেক্ট তৈরি করে কল করতে হয় |
শেয়ারিং | ক্লাসের সব ইনস্ট্যান্সে শেয়ার করা হয় | প্রতিটি ইনস্ট্যান্সে আলাদা |
অ্যাক্সেস | Static ভেরিয়েবল এবং Static মেথড অ্যাক্সেস করতে পারে | Non-static ভেরিয়েবল এবং মেথড অ্যাক্সেস করতে পারে |
প্রয়োজনীয়তা | সাধারণত যেখানে অবজেক্টের প্রয়োজন হয় না | যেখানে অবজেক্টের নির্দিষ্ট ডেটার প্রয়োজন |
নিচের উদাহরণে MathOperations
ক্লাসে একটি Static মেথড এবং একটি Non-static মেথড সংযুক্ত করা হয়েছে, যেখানে বিভিন্ন গণিত অপারেশন সম্পন্ন করা হয়েছে।
public class MathOperations {
// Static method
public static Integer add(Integer a, Integer b) {
return a + b;
}
// Non-static method
public Integer subtract(Integer a, Integer b) {
return a - b;
}
}
// Static method কল করা
Integer sum = MathOperations.add(20, 10); // সরাসরি কল করা হয়েছে
System.debug('Sum: ' + sum); // Output: Sum: 30
// Non-static method কল করা
MathOperations mathOp = new MathOperations();
Integer difference = mathOp.subtract(20, 10); // অবজেক্ট তৈরি করে কল করা হয়েছে
System.debug('Difference: ' + difference); // Output: Difference: 10
add
: ক্লাসের নামের মাধ্যমে সরাসরি কল করা হয়েছে।subtract
: অবজেক্ট mathOp
তৈরি করে কল করা হয়েছে।Static Method ব্যবহার করবেন যখন:
add
, multiply
, ইত্যাদি।Non-static Method ব্যবহার করবেন যখন:
displayInfo
, calculateTotal
ইত্যাদি।সংক্ষেপে:
এইভাবে, Apex-এ Static এবং Non-static Method ব্যবহার করে কার্যকরী ও সুসংগঠিত কোডিং করা সম্ভব।
Recursive Methods হলো এমন মেথড যা নিজেকে পুনরায় কল করে। এটি সাধারণত এমন সমস্যাগুলি সমাধান করতে ব্যবহৃত হয়, যা একই ধরনের উপ-সমস্যায় ভাগ করা যায়। Recursive মেথড সাধারণত কিছু নির্দিষ্ট শর্ত পূরণ না হওয়া পর্যন্ত পুনরায় নিজেকে কল করে।
Recursive মেথডের কিছু সাধারণ ব্যবহার হলো ফ্যাক্টোরিয়াল, ফিবোনাচি সিরিজ এবং অন্যান্য সমস্যা, যা উপ-সমস্যায় ভাগ করে সমাধান করা যায়।
ফ্যাক্টোরিয়াল হলো একটি সংখ্যা এবং তার পূর্ববর্তী সমস্ত সংখ্যার গুণফল। যেমন, ৫ এর ফ্যাক্টোরিয়াল (5!) হলো 5 x 4 x 3 x 2 x 1 = 120।
Recursive মেথড দিয়ে ফ্যাক্টোরিয়াল নির্ণয়:
public class FactorialCalculator {
public Integer factorial(Integer n) {
// বেস কেস: n যদি 1 হয়, তাহলে 1 রিটার্ন করবে
if (n <= 1) {
return 1;
}
// Recursive Call: n * factorial(n - 1)
return n * factorial(n - 1);
}
}
// ব্যবহার
FactorialCalculator calc = new FactorialCalculator();
Integer result = calc.factorial(5); // result = 120
System.debug('Factorial of 5: ' + result);
এখানে factorial()
মেথড নিজেকে পুনরায় কল করে যতক্ষণ না n
1 বা এর কম হয়। যখন n
1 হয়, মেথডটি 1 রিটার্ন করে এবং Recursive কল শেষ হয়।
ফিবোনাচি সিরিজ হলো এমন একটি সংখ্যার সিরিজ যেখানে প্রতিটি সংখ্যা তার আগের দুটি সংখ্যার যোগফল। যেমন: 0, 1, 1, 2, 3, 5, 8,...
Recursive মেথড দিয়ে ফিবোনাচি সিরিজের নির্দিষ্ট স্থান নির্ণয়:
public class FibonacciCalculator {
public Integer fibonacci(Integer n) {
// বেস কেস: n যদি 0 বা 1 হয়
if (n == 0) {
return 0;
} else if (n == 1) {
return 1;
}
// Recursive Call: fibonacci(n - 1) + fibonacci(n - 2)
return fibonacci(n - 1) + fibonacci(n - 2);
}
}
// ব্যবহার
FibonacciCalculator fibCalc = new FibonacciCalculator();
Integer fibResult = fibCalc.fibonacci(6); // result = 8
System.debug('6th Fibonacci number: ' + fibResult);
এখানে fibonacci()
মেথড নিজেকে পুনরায় কল করে এবং আগের দুটি সংখ্যার যোগফল রিটার্ন করে। যখন n
0 বা 1 হয়, তখন Recursive কল বন্ধ হয় এবং বেস কেস অনুযায়ী রিটার্ন করা হয়।
Recursive Methods ব্যবহার করে কার্যকরী ও পুনঃব্যবহারযোগ্য কোড তৈরি করা যায়, যা জটিল সমস্যাগুলোর সমাধান সহজ করে।
common.read_more