ফাংশন
কম্পোজিশন (Function
Composition)
অবজেক্ট
ওরিয়েন্টেড প্রোগ্রামিংয়ে
একটি অবজেক্টের সঙ্গে এক বা
একাধিক অবজেক্ট যুক্ত করে
(অ্যাসোসিয়েশন
বা ইনহেরিটেন্সের মাধ্যমে)
নতুন
অবজেক্ট তৈরি করা যায়। একইভাবে
জাভাতে java.util.function.Function
ফাংশনাল
ইন্টারফেস একাধিক ফাংশন
কম্বাইন করে নতুন পুনঃব্যবহারযোগ্য
(reusable)
ফাংশন
তৈরি করা যায়। একেই ফাংশন
কম্পোজিশন বলে।
ফাংশন
কম্পোজিশনের জন্য এই ফাংশন
ইন্টারফেসে দুটি ডিফল্ট মেথড
রয়েছে। এগুলো হলো -
compose() এবং
andThen()
এই
দুটি মেথড সম্পর্কে জানার
আগে আমারা গাণিতিক ফাংশন নিয়ে
একটু আলোচনা করা নেই।
ফাংশন
মূলত এক ধরণের ম্যাপিং। এটি
এক বা একাধিক ইনপুট নিয়ে অন্য
একটি ভ্যালু আউটপুট হিসেবে
দেয়। মনে করি একটি ফাংশন-
তাহলে
যে কোনো ইন্টিজার ইনপুটের
জন্য এর ম্যাপিং হবে -
এখন মনে করি আরেকটি ফাংশন -
যে
কোনো ইন্টিজার ইনপুটের
জন্য এর ম্যাপিং হবে -
এখন আমরা দুটি ফাংশনের ম্যাপিং জানি। এই দুটি ফাংশন কম্বাইন করে আমরা
একে আমরা এভাবে লিখতে পারি -
এটি
বের করার স্টেপগুলো নিচে
সহজভাবে দেওয়া হলো-
তাহলে
প্রথমে আমাদের g(1)
বের
করতে হবে। এটি আমরা উপরের
প্রথম ফাংশনের চার্ট থেকে
বের করতি পারি কিংবা অংক করেও
বের করতে পারি -
এখন
h(-3)
এর মান
আমরা দ্বিতীয় ফাংশনের চার্ট
থেকে বের করতে পারি কিংবা অংক
করেও বের করতে পারি। -
এভাবে
আমরা দুটি ফাংশন কম্বাইন করে
একটি ফলাফল পেলাম।
একইভাবে
এই দুটি ফাংশনকে যদি আমরা
ল্যমাডা এক্সপ্রেশন দিয়ে
প্রকাশ করি তাহলে হবে -
Functiong = x -> (int) (Math.pow(x, 2)) - 4; Function এই দুটি ফাংশনকে কম্বাইন করার জন্য আমরা ফাংশন ইন্টারফেসের ডিফল্ট মেথড compose() ব্যবহার করে আরেকটি নতুন ফাংশন তৈরি করতে পারি।h = y -> 3 * (int) (Math.pow(y - 1, 2)) - 5;
এখন
এই ফাংশনে যদি 1
ইনপুট
দেওয়া হয়,
তাহলে
আউটপুট আসবে 43।
System.out.println(result);
output :
43
এভাবে
আমরা গাণিতিক ফাংশনের মতো
জাভার ফাংশনাল ইন্টারফেস
Function
ব্যবহার
করতে পারি।
এই
ফাংশনে দুটি ডিফল্ট মেথডই এই
ফাংশনের কম্পোজিশনের জন্য
ব্যবহার করা হয়। তবে এদের কাজ
করার ক্রমের পার্থ্ক্য রয়েছে।
Function
উপরের
দুটি উদাহরণের মধ্যে প্রথমটিতে
compose()
মেথড
এবং দ্বিতীয়টিতে andThen()
ব্যবহার
করা হয়েছে। প্রথমটির ক্ষেত্রে
আগে g
ল্যামডা
এক্সপ্রেশনটি ইভ্যালুয়েট
হবে এবং এর আউটপুট h
এর
ল্যামডা এক্সপ্রেশনে আর্গুমেন্ট
হিসেবে দেওয়া হবে। দ্বিতীয়টির
ক্ষেত্রে প্রথমে h
এর
ল্যামডা এক্সপ্রেশনটি ইভ্যালুয়েট
হবে এবং এর আউটপুট g
এর
ল্যামডা এক্সপ্রেশনে আর্গুমেন্ট
হিসেবে যাবে।
No comments:
Post a Comment