Java Beans এবং সাধারণ Java ক্লাসগুলিতে প্রপার্টি অ্যাক্সেস করার জন্য getter এবং setter মেথড ব্যবহৃত হয়। Getter মেথড সাধারণত প্রপার্টি (field) এর মান রিটার্ন করে এবং Setter মেথড সেই প্রপার্টিতে নতুন মান সেট করতে ব্যবহৃত হয়। এই মেথডগুলি ডেটা এনক্যাপসুলেশন নিশ্চিত করতে সহায়ক, যাতে প্রপার্টি সরাসরি অ্যাক্সেস করা না হয়ে getter এবং setter মেথডের মাধ্যমে ডেটা পরিচালনা করা যায়।
Getter এবং Setter এর ভূমিকা:
- Getter মেথড:
- এটি একটি প্রপার্টি বা ফিল্ডের মান রিটার্ন করে।
- নামের প্রথম অক্ষর সাধারণত
getদিয়ে শুরু হয় (যেমনgetName(),getAge()), তবে বুলিয়ান প্রপার্টির জন্য এটিisদিয়েও শুরু হতে পারে (যেমনisActive())
- Setter মেথড:
- এটি একটি প্রপার্টি বা ফিল্ডে নতুন মান সেট করে।
- নামের প্রথম অক্ষর সাধারণত
setদিয়ে শুরু হয় (যেমনsetName(),setAge())
এটি একটি Encapsulation কৌশল, যেখানে প্রপার্টি সরাসরি অ্যাক্সেস না করে, শুধুমাত্র এই getter/setter মেথডের মাধ্যমে ডেটা অ্যাক্সেস এবং ম্যানিপুলেশন করা হয়।
Getter এবং Setter মেথডের উদাহরণ:
public class Person {
private String name;
private int age;
// Getter for name
public String getName() {
return name;
}
// Setter for name
public void setName(String name) {
this.name = name;
}
// Getter for age
public int getAge() {
return age;
}
// Setter for age
public void setAge(int age) {
this.age = age;
}
}ব্যাখ্যা:
Personক্লাসের দুটি প্রপার্টি রয়েছে:nameএবংage।- Getter এবং Setter মেথড ব্যবহার করে এই প্রপার্টিগুলির মান অ্যাক্সেস এবং পরিবর্তন করা হয়।
Getter এবং Setter মেথড ব্যবহার:
public class Main {
public static void main(String[] args) {
// Create a new Person object
Person person = new Person();
// Using setter methods to set properties
person.setName("John");
person.setAge(30);
// Using getter methods to get properties
System.out.println("Name: " + person.getName()); // Output: John
System.out.println("Age: " + person.getAge()); // Output: 30
}
}ব্যাখ্যা:
setName("John")এবংsetAge(30)মেথড ব্যবহার করেPersonঅবজেক্টের প্রপার্টি সেট করা হয়েছে।getName()এবংgetAge()মেথড ব্যবহার করে সেই প্রপার্টির মান রিটার্ন করা হয়েছে।
Getter এবং Setter এর সুবিধা:
- ডেটা এনক্যাপসুলেশন (Data Encapsulation):
- প্রপার্টির অ্যাক্সেস সীমাবদ্ধ করা হয়, যাতে আপনি সরাসরি প্রপার্টি অ্যাক্সেস না করে মেথডের মাধ্যমে সেটি পরিচালনা করতে পারেন।
- কন্ট্রোলড ডেটা অ্যাক্সেস (Controlled Data Access):
- আপনি setter মেথডে বৈধতা চেক করতে পারেন, যাতে ভুল ডেটা সেট না হয়।
- getter মেথডে আপনি প্রপার্টির মান পরিবর্তন করতে পারেন, যেমন, একটি ফর্ম্যাটিং বা ক্যালকুলেশন।
- ভাল পারফরম্যান্স (Better Performance):
- Getter এবং Setter ব্যবহার করে কোডের ভাল পারফরম্যান্স নিশ্চিত করা যায়, বিশেষত যখন আপনি প্রপার্টি কপি, ট্র্যাক বা লোগিং করতে চান।
Nested Properties (নেস্টেড প্রপার্টি)
Nested Properties হল একটি প্রপার্টি যার মান আরেকটি অবজেক্ট হতে পারে। অর্থাৎ, একটি Java Bean এর মধ্যে অন্য একটি Java Bean থাকতে পারে, এবং এর প্রপার্টিগুলি সরাসরি অ্যাক্সেস করা সম্ভব নয়। তবে getter এবং setter মেথড ব্যবহার করে আপনি এই nested properties-এর মান অ্যাক্সেস বা পরিবর্তন করতে পারবেন।
উদাহরণ: Nested Property Access
public class Address {
private String street;
private String city;
// Constructor, getters, and setters
public Address(String street, String city) {
this.street = street;
this.city = city;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}
public class Person {
private String name;
private Address address;
// Constructor, getters, and setters
public Person(String name, Address address) {
this.name = name;
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}Nested Property Access Example:
public class Main {
public static void main(String[] args) {
// Create a new Address object
Address address = new Address("Street 123", "City A");
// Create a new Person object with the Address object
Person person = new Person("John", address);
// Accessing nested properties
System.out.println("Name: " + person.getName()); // Output: John
System.out.println("Street: " + person.getAddress().getStreet()); // Output: Street 123
System.out.println("City: " + person.getAddress().getCity()); // Output: City A
}
}ব্যাখ্যা:
Personক্লাসে একটিAddressঅবজেক্ট রয়েছে।- Nested properties অ্যাক্সেস করতে
person.getAddress().getStreet()এবংperson.getAddress().getCity()ব্যবহার করা হয়েছে।
Indexed Properties (ইন্ডেক্সড প্রপার্টি)
Indexed Properties হল এমন প্রপার্টি যা array বা list টাইপের হতে পারে। এটি getter এবং setter মেথডের মাধ্যমে ইন্ডেক্স ব্যবহার করে অ্যাক্সেস করা যায়।
উদাহরণ: Indexed Property Access
public class Team {
private String[] members;
// Constructor, getter, and setter
public Team() {
members = new String[5]; // Assume the team can have 5 members
}
public String getMember(int index) {
return members[index];
}
public void setMember(int index, String name) {
members[index] = name;
}
}Indexed Property Access Example:
public class Main {
public static void main(String[] args) {
// Create a new Team object
Team team = new Team();
// Set members using indexed setter
team.setMember(0, "Alice");
team.setMember(1, "Bob");
// Get members using indexed getter
System.out.println("Member 1: " + team.getMember(0)); // Output: Alice
System.out.println("Member 2: " + team.getMember(1)); // Output: Bob
}
}ব্যাখ্যা:
Teamক্লাসে একটি String array ব্যবহার করা হয়েছে যা সদস্যদের নাম ধারণ করে।- Indexed properties অ্যাক্সেস করতে
getMember()এবংsetMember()মেথড ব্যবহার করা হয়েছে।
সারাংশ
- Getter এবং Setter মেথড ব্যবহার করে Java Beans বা সাধারণ Java ক্লাসগুলিতে প্রপার্টি অ্যাক্সেস এবং ম্যানিপুলেশন করা হয়। এটি Encapsulation পদ্ধতির অংশ, যা ডেটা নিরাপত্তা এবং কোড পরিস্কার রাখে।
- Nested Properties অন্য একটি Bean এর মধ্যে প্রপার্টি অ্যাক্সেস করতে সাহায্য করে, যা Java Beans এ সাধারিত।
- Indexed Properties array বা list ধরনের প্রপার্টি অ্যাক্সেস করার জন্য ব্যবহৃত হয়, যেখানে প্রপার্টির মান ইন্ডেক্সের মাধ্যমে অ্যাক্সেস করা যায়।
Read more