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
Post a Comment