Anonymous Class এর বিকল্প হিসাবে Lambda ব্যবহার

Lambda Expressions - জাভা ফাংশনাল প্রোগ্রামিং (Java Functional Programming) - Java Technologies

293

Java Functional Programming (FP) হল একটি প্রোগ্রামিং পারাদাইম যা মূলত immutable data, first-class functions, এবং higher-order functions এর উপর ভিত্তি করে কাজ করে। Java 8 থেকে Lambda Expressions এবং Streams API চালু করা হয়, যা Functional Programming ধারণাকে Java তে বাস্তবায়ন করার জন্য গুরুত্বপূর্ণ টুল। এই ফিচারটি অনেক জায়গায় Anonymous Classes এর পরিবর্তে ব্যবহার করা যায়, যার ফলে কোড আরও সংক্ষিপ্ত এবং ক্লিন হয়।

Lambda Expressions মূলত Functional Interfaces এর মাধ্যমে কাজ করে এবং Anonymous Classes এর চেয়ে সহজ এবং বেশি কার্যকরী হয়ে থাকে।


1. Anonymous Class এবং Lambda Expressions এর তুলনা:

Anonymous Class:

  • Anonymous Classes হল একটি ক্লাস যা inline ভাবে ঘোষণা করা হয় এবং তারপরে method implementation প্রদান করা হয়। এটি সাধারণত interfaces বা abstract classes এর জন্য ব্যবহৃত হয়।
  • Anonymous Class এ কোড লেখার জন্য অনেকটাই boilerplate কোড প্রয়োজন হয় এবং এটি দীর্ঘ হতে পারে।

Lambda Expressions:

  • Lambda Expressions হল একটি সংক্ষিপ্ত এবং কার্যকরী উপায় ফাংশনাল প্রোগ্রামিং স্টাইলের anonymous function তৈরি করার জন্য। এটি functional interface এর মধ্যে একটি সিঙ্কল ফাংশন (single method) বাস্তবায়ন করতে ব্যবহৃত হয়।
  • Lambda Expression কোডকে সংক্ষিপ্ত করে, এবং readability এবং maintainability উন্নত করতে সহায়তা করে।

উদাহরণ:

ধরা যাক, আমাদের একটি Button Click Listener তৈরি করতে হবে। নিচে Anonymous Class এবং Lambda Expression এর ব্যবহারের মাধ্যমে এটি কিভাবে করা যায় তা দেখানো হয়েছে।


2. Anonymous Class ব্যবহার করে উদাহরণ:

import javax.swing.JButton;

public class AnonymousClassExample {
    public static void main(String[] args) {
        JButton button = new JButton("Click Me");
        
        // Anonymous Class for ActionListener
        button.addActionListener(new java.awt.event.ActionListener() {
            @Override
            public void actionPerformed(java.awt.event.ActionEvent e) {
                System.out.println("Button Clicked!");
            }
        });
    }
}

ব্যাখ্যা:

  • এখানে, একটি Anonymous Class তৈরি করা হয়েছে যা ActionListener ইন্টারফেসের actionPerformed() মেথডকে অটোমেটিক্যালি ইমপ্লিমেন্ট করছে।
  • এটি একটি boilerplate code এবং readability কিছুটা কম হতে পারে।

3. Lambda Expression ব্যবহার করে উদাহরণ:

import javax.swing.JButton;

public class LambdaExample {
    public static void main(String[] args) {
        JButton button = new JButton("Click Me");
        
        // Lambda Expression for ActionListener
        button.addActionListener(e -> System.out.println("Button Clicked!"));
    }
}

ব্যাখ্যা:

  • এখানে, Lambda Expression ব্যবহার করা হয়েছে যা ActionListener এর actionPerformed() মেথডের একটি শর্টকাট।
  • Lambda Expression কোডের পরিমাণ অনেক কমায় এবং এটি readability এবং maintainability উন্নত করে।

4. Lambda Expression এর Syntax:

Lambda Expressions এর সাধারণ syntax হল:

(parameters) -> expression

উদাহরণ:

(x, y) -> x + y

এখানে:

  • parameters হল Lambda Expression এর ইনপুট প্যারামিটার, যা সন্নিবেশ করা হয়।
  • -> হল Lambda operator, যা ইনপুট প্যারামিটার থেকে কোড ব্লকের মধ্যে সংযোগ তৈরি করে।
  • expression হল Lambda Expression এর কাজ বা ফলাফল।

5. Lambda Expressions এর ব্যবহার:

Lambda Expressions সাধারণত Functional Interfaces এর মাধ্যমে কাজ করে। একটি Functional Interface হল এমন একটি ইন্টারফেস যার শুধুমাত্র একটি abstract method থাকে। উদাহরণস্বরূপ, Java 8 তে java.util.function প্যাকেজে অনেক ধরনের ফাংশনাল ইন্টারফেস রয়েছে, যেমন:

  • Runnable: যা কোন thread বা task চালাতে ব্যবহৃত হয়।
  • Comparator: যা দুটি অবজেক্টের তুলনা করতে ব্যবহৃত হয়।
  • Consumer, Supplier, Function, Predicate: এগুলি Java 8 থেকে উপলব্ধ কিছু গুরুত্বপূর্ণ ফাংশনাল ইন্টারফেস।

Runnable Example using Lambda:

public class LambdaRunnableExample {
    public static void main(String[] args) {
        // Using Lambda Expression to implement Runnable
        Runnable task = () -> System.out.println("Task is running!");
        
        // Running the task
        new Thread(task).start();
    }
}

ব্যাখ্যা:

  • এখানে, Runnable ইন্টারফেসের run() মেথডকে Lambda Expression দিয়ে ইমপ্লিমেন্ট করা হয়েছে।
  • Lambda Expression কোডকে আরও সোজা এবং সংক্ষিপ্ত করেছে।

6. Lambda Expressions এর সুবিধা:

  1. Conciseness: Lambda Expression কোডের পরিমাণ অনেক কমিয়ে দেয়, বিশেষ করে যখন একটি একক ফাংশন বা মেথডের মধ্যে কিছু কার্যক্রম করতে হয়।
  2. Readability: কোড কম হওয়ায় readability উন্নত হয়, এবং এটি ক্লাস বা মেথডের মধ্যে অনেক স্পষ্ট করে দেয়।
  3. Function as Parameter: Lambda Expression ফাংশনকে প্যারামিটার হিসেবে নেওয়ার সুবিধা দেয়, যা higher-order functions তৈরি করতে সহায়তা করে।
  4. Parallelism and Streams: Java 8 তে Lambda Expression Streams API এর সাথে ব্যবহার করে ডেটা প্রোসেসিং সহজ এবং parallel execution সম্ভব করে।

7. Lambda Expressions এবং Anonymous Class এর পার্থক্য:

বৈশিষ্ট্যAnonymous ClassLambda Expression
সিনট্যাক্সঅনেক বেশি কোড এবং Boilerplate কোড থাকতে পারেসংক্ষিপ্ত এবং সহজ পাঠযোগ্য
কোডের পরিমাণঅনেক কোড এবং অকার্যকর অংশ থাকতে পারেকোড কম এবং সরল
প্রথম শ্রেণির ফাংশনসমর্থিত নয়প্রথম শ্রেণির ফাংশন সমর্থিত
পারফরম্যান্সকম পারফরম্যান্স (কারণ অধিক অবজেক্ট তৈরি হয়)দ্রুত এবং অধিক কার্যকরী
সংজ্ঞায়ন এবং ব্যবহারে সহজতাকিছুটা জটিলসহজ এবং দ্রুত প্রয়োগযোগ্য

সারাংশ:

  • Anonymous Classes এবং Lambda Expressions উভয়ই Java 8 তে ব্যবহৃত হয় তবে তাদের মধ্যে পার্থক্য হল Lambda Expressions সংক্ষিপ্ত এবং কার্যকরী।
  • Lambda Expressions Functional Programming স্টাইলকে Java তে কার্যকরীভাবে বাস্তবায়ন করার জন্য গুরুত্বপূর্ণ।
  • Lambda Expression Anonymous Class এর বিকল্প হিসেবে কাজ করে, এবং এটি কোডকে কম্প্যাক্ট, রিডেবল, এবং পারফরম্যান্সে উন্নত করে।
Content added By
Promotion

Are you sure to start over?

Loading...