Public এবং Private Functions এর ব্যবহার

Computer Programming - এফ শার্প প্রোগ্রামিং (F# Programming) - Modules এবং Namespaces (মডিউল এবং নেমস্পেস)
161

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 ক্লাস বা মডিউলের অভ্যন্তরীণ কাজের জন্য ব্যবহৃত হয় এবং বাইরের কোড থেকে সেগুলি অ্যাক্সেস করা যায় না।

এই অ্যাক্সেস কন্ট্রোলের মাধ্যমে আপনি আপনার কোডকে আরো সুসংগঠিত, নিরাপদ এবং রক্ষণাবেক্ষণযোগ্য করতে পারেন।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...