Kotlin-এ Encapsulation – ব্রেইন-ফ্রেন্ডলি ব্যাখ্যা!

 

🧠 Kotlin-এ Encapsulation – ব্রেইন-ফ্রেন্ডলি ব্যাখ্যা!

🎯 Encapsulation মানে কি?

Encapsulation হলো "ঢেকে রাখা" – অর্থাৎ অবজেক্টের ডাটা এবং তার ফাংশনগুলো একসাথে বাঁধাই (bundled) করে রাখা, যাতে বাইরের কেউ সরাসরি ডাটা পরিবর্তন করতে না পারে!

🚀 বাস্তব জীবনের উদাহরণ:

🔐 আপনার মোবাইলের ব্যাটারি

  • আপনার ফোনের ব্যাটারির ভিতরে কিভাবে চার্জ জমা হয়, সেটা নিয়ে আপনাকে চিন্তা করতে হয় না!
  • কিন্তু আপনি পাওয়ার বাটন চাপলে ফোন চালু হয় বা চার্জার লাগালে চার্জ হয়!
  • এখানে ব্যাটারির পুরো প্রসেস "ঢেকে রাখা" হয়েছে – এটিই Encapsulation!

🛠️ Encapsulation কিভাবে কাজ করে?

📌 Encapsulation মূলত দুইভাবে কাজ করে:
1️⃣ ডাটা (properties/variables) প্রাইভেট রাখা, যাতে বাইরের কেউ সরাসরি এক্সেস করতে না পারে।
2️⃣ Getter এবং Setter মেথড ব্যবহার করে নির্দিষ্ট নিয়মে ডাটা এক্সেস ও পরিবর্তন করা।


🔹 1️⃣ Encapsulation Without Getter/Setter – (ভুল পদ্ধতি)

class Person {
    var age: Int = 0  // ❌ Public variable, যে কেউ চাইলেই পরিবর্তন করতে পারবে!
}

fun main() {
    val person = Person()
    person.age = -10  // 😱 অসম্ভব বয়স সেট করা হলো!
    println("Person's Age: ${person.age}")  // Output: Person's Age: -10
}

📌 এখানে সমস্যা:

  • age ভ্যারিয়েবলটি public, তাই যেকোনো মান সেট করা যাচ্ছে (যেমন -10, যা অস্বাভাবিক)!
  • এটি Encapsulation না, কারণ এখানে ডাটা সুরক্ষিত নয়!

🔹 2️⃣ Encapsulation With Private Variable & Getter/Setter – (সঠিক পদ্ধতি)

class Person {
    private var age: Int = 0  // 🔐 এখন age প্রাইভেট, বাইরের কেউ সরাসরি এক্সেস করতে পারবে না!

    fun setAge(value: Int) {
        if (value >= 0) {  // ✅ শুধুমাত্র পজিটিভ বয়স সেট করা যাবে!
            age = value
        } else {
            println("Invalid age!")
        }
    }

    fun getAge(): Int {
        return age
    }
}

fun main() {
    val person = Person()
    person.setAge(25)  // ✅ Valid Age
    println("Person's Age: ${person.getAge()}")  // Output: Person's Age: 25

    person.setAge(-10)  // ❌ Invalid Age!
}

📌 এখানে কী হলো?

  • age প্রাইভেট করা হয়েছে (private var age), তাই বাইরে থেকে সরাসরি এক্সেস করা যায় না।
  • setAge() মেথডের মাধ্যমে বয়স পরিবর্তন করা যায়, কিন্তু সেটার মধ্যে "নিয়ম" দেওয়া হয়েছে।
  • getAge() মেথডের মাধ্যমে শুধুমাত্র বয়স পড়া (read) যায়।
  • এখন কেউ ভুলভাবে (-10) বয়স সেট করতে পারবে না!

🔥 Kotlin-এ Modern Encapsulation – Getter & Setter

👉 Kotlin-এ getter/setter তৈরি করা সহজ!

class Person {
    var age: Int = 0
        set(value) {
            if (value >= 0) field = value else println("Invalid Age!")
        }
        get() = field  // 👈 এটি age রিটার্ন করবে

}

fun main() {
    val person = Person()
    person.age = 30  // ✅ Valid Age
    println("Person's Age: ${person.age}")  // Output: Person's Age: 30

    person.age = -5  // ❌ Invalid Age!
}

📌 এখানে:

  • set(value) চেক করে যে বয়স 0 বা তার বেশি কিনা, নাহলে সেট করবে না!
  • get() বয়স রিটার্ন করে।

🚀 Encapsulation-এর সুবিধা কী?

🔐 Data হাইড করা যায় (Data Hiding) – বাইরের কেউ সরাসরি পরিবর্তন করতে পারবে না।
🎯 Controlled Access – কিভাবে ডাটা পরিবর্তন হবে, তা আমরা নির্ধারণ করতে পারি।
⚡ Code Maintainability & Security বাড়ে – ভুল এন্ট্রি আটকানো যায়!


🎯 সংক্ষেপে:

✔️ Encapsulation হলো বাইরের দুনিয়া থেকে ডাটা লুকিয়ে রাখা এবং getter/setter এর মাধ্যমে নিয়ন্ত্রিত এক্সেস দেওয়া।
✔️ private variables ব্যবহার করলে ডাটা প্রাইভেট থাকে।
✔️ Getter & Setter মেথড দিয়ে ডাটা নিয়ন্ত্রণ করা যায়।
✔️ Kotlin-এর get()set(value) সহজ ও শক্তিশালী।


🎉 এখন আপনি Kotlin-এ Encapsulation একদম বুঝে গেছেন! 🚀🔥

💡 এবার নিজে প্র্যাকটিস করুন! 😎

Comments

Popular posts from this blog

AI (Artificial Intelligence) সহজভাবে বোঝার জন্য একদম মস্তিষ্ক-বান্ধব ব্যাখ্যা 🧠🤖

🧠 Regex কী?

Kotlin-এ ভেরিয়েবল ঘোষণা করার দুই উপায়