Public এবং Private Functions এর ব্যবহার
Public এবং Private ফাংশনগুলো encapsulation এর ধারণার সাথে সম্পর্কিত, যা অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং এবং ফাংশনাল প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ বৈশিষ্ট্য। এগুলি প্রোগ্রামারকে একটি নির্দিষ্ট ফাংশন বা মেথডকে বাইরের কোডের জন্য অ্যাক্সেসযোগ্য বা সীমাবদ্ধ করার অনুমতি দেয়। F# এ public এবং private অ্যাক্সেস মডিফায়ার ব্যবহার করা হয় ফাংশন বা মেথডের দৃশ্যমানতা (visibility) নির্ধারণ করতে।
১. Public Functions (পাবলিক ফাংশন)
Public Functions হল এমন ফাংশন যা ক্লাস, মডিউল বা অবজেক্টের বাইরে থেকেও অ্যাক্সেস করা যায়। যখন আপনি একটি ফাংশন বা মেথড পাবলিক ডিক্লেয়ার করেন, এটি অন্য যেকোনো কোড থেকে ব্যবহারযোগ্য হয়ে ওঠে।
Public Functions এর বৈশিষ্ট্য:
- এই ফাংশনগুলিকে অন্য কোডের অংশ থেকে ব্যবহার করা যেতে পারে।
- সাধারণত ইন্টারফেস বা পাবলিক API এর অংশ হিসেবে ব্যবহৃত হয়।
- একটি ক্লাস বা মডিউলের বাইরের কোডও পাবলিক ফাংশনগুলিকে ব্যবহার করতে পারে।
উদাহরণ:
// Public function in a module
module MathFunctions =
let add x y = x + y // Public function
// Using the public function
let result = MathFunctions.add 3 4
printfn "Result: %d" result // আউটপুট: Result: 7ব্যাখ্যা:
addফাংশনটি একটি পাবলিক ফাংশন, যাMathFunctionsমডিউলের বাইরে থেকে ব্যবহারযোগ্য।MathFunctions.add 3 4কলের মাধ্যমে ফাংশনটি ব্যবহার করা হচ্ছে।
২. Private Functions (প্রাইভেট ফাংশন)
Private Functions হল এমন ফাংশন যা শুধুমাত্র তার ডিক্লেয়ার করা স্কোপ বা ব্লকের ভিতরে ব্যবহৃত হতে পারে। এই ফাংশনগুলিকে বাইরের কোড থেকে অ্যাক্সেস করা যায় না। এগুলি সাধারণত ডেটা এনক্যাপসুলেশন এবং আড়াল করার (hiding) জন্য ব্যবহৃত হয়।
Private Functions এর বৈশিষ্ট্য:
- এগুলি শুধুমাত্র ক্লাস, মডিউল বা অবজেক্টের ভিতরে ব্যবহার করা যায়।
- বাইরের কোড থেকে এই ফাংশনগুলি সরাসরি অ্যাক্সেস করা সম্ভব নয়।
- ক্লাস বা মডিউলের অভ্যন্তরীণ লজিক প্রোটেক্ট করতে ব্যবহৃত হয়।
উদাহরণ:
// Private function in a module
module MathFunctions =
let private subtract x y = x - y // Private function
let publicAdd x y = x + y // Public function that uses private function
let calculateDifference x y = subtract x y // Calling the private function inside module
// Using the public function
let result = MathFunctions.publicAdd 5 3
let difference = MathFunctions.calculateDifference 5 3
printfn "Sum: %d, Difference: %d" result difference // আউটপুট: Sum: 8, Difference: 2ব্যাখ্যা:
subtractফাংশনটি private হিসেবে ডিক্লেয়ার করা হয়েছে, তাই এটি শুধুমাত্রMathFunctionsমডিউলের ভিতরে ব্যবহার করা যেতে পারে।publicAddএবংcalculateDifferenceফাংশন দুটি public, এবং তারাsubtractফাংশনটিকে ব্যবহার করতে পারে, তবে বাইরের কোড সরাসরিsubtractফাংশনটি ব্যবহার করতে পারবে না।
৩. Encapsulation with Public and Private Functions
Public এবং private functions ডেটার encapsulation নিশ্চিত করতে সহায়ক। Encapsulation হল একটি ধারণা যেখানে অভ্যন্তরীণ ডেটা এবং কাজগুলো (ফাংশনগুলি) বাইরের কোড থেকে আড়াল রাখা হয় এবং শুধুমাত্র নির্দিষ্ট ইন্টারফেসের মাধ্যমে সেগুলির অ্যাক্সেস দেওয়া হয়।
উদাহরণ: ক্লাসে Public এবং Private Methods
type BankAccount(balance: float) =
// Private method
let mutable currentBalance = balance
// Public method to deposit money
member this.Deposit(amount: float) =
if amount > 0.0 then
currentBalance <- currentBalance + amount
printfn "Deposited: %f" amount
else
printfn "Invalid deposit amount"
// Public method to withdraw money
member this.Withdraw(amount: float) =
if amount > 0.0 && amount <= currentBalance then
currentBalance <- currentBalance - amount
printfn "Withdrawn: %f" amount
else
printfn "Invalid withdrawal amount or insufficient funds"
// Public method to check balance
member this.GetBalance() = currentBalance
// Using the BankAccount class
let account = BankAccount(1000.0)
account.Deposit(500.0)
account.Withdraw(200.0)
printfn "Balance: %f" (account.GetBalance()) // আউটপুট: Balance: 1300.000000ব্যাখ্যা:
BankAccountক্লাসের ভিতরেcurrentBalanceএকটি private ভ্যারিয়েবল, যা বাইরের কোডের অ্যাক্সেসযোগ্য নয়।Deposit,Withdraw, এবংGetBalanceফাংশনগুলি public এবং তারাcurrentBalanceএর মান পরিবর্তন এবং রিটার্ন করতে পারে।
৪. Access Control with Public and Private Functions
F# এ public এবং private অ্যাক্সেস মডিফায়ার ব্যবহারের মাধ্যমে আপনি আপনার কোডের অংশগুলিকে অভ্যন্তরীণ বা বাহ্যিকভাবে অ্যাক্সেসযোগ্য করতে পারেন, যা কোডের modularity এবং maintainability উন্নত করে।
- Public Functions: বাইরের কোডের কাছে অ্যাক্সেসযোগ্য। সাধারণত এই ফাংশনগুলি API এর অংশ বা ক্লাসের ইন্টারফেস হিসেবে কাজ করে।
- Private Functions: শুধুমাত্র ক্লাস বা মডিউলের অভ্যন্তরীণ কাজের জন্য ব্যবহৃত হয়। এগুলি কোডের গোপনীয়তা বজায় রাখতে সহায়তা করে এবং বাইরের কোড থেকে সরাসরি অ্যাক্সেস করা যায় না।
উপসংহার
F# এ public এবং private ফাংশনগুলি কোডের ভিতরের এবং বাইরের অংশের মধ্যে সঠিক সীমারেখা তৈরি করতে সাহায্য করে।
- Public functions বাইরের কোডের জন্য উপলব্ধ, যা ক্লাস বা মডিউল ব্যবহারকারীকে নির্দিষ্ট কার্যকলাপ করতে দেয়।
- Private functions ক্লাস বা মডিউলের অভ্যন্তরীণ কাজের জন্য ব্যবহৃত হয় এবং বাইরের কোড থেকে সেগুলি অ্যাক্সেস করা যায় না।
এই অ্যাক্সেস কন্ট্রোলের মাধ্যমে আপনি আপনার কোডকে আরো সুসংগঠিত, নিরাপদ এবং রক্ষণাবেক্ষণযোগ্য করতে পারেন।
Read more