ஆப்ஜெக்ட் ஒரியண்டட் நிரலாக்கத்தில் மொத்தம் நான்கு கருத்துக்கள் உள்ளன.
அவையாவன:
1. என்கேப்சுலேசன்
2. அப்ஸ்ட்ராக்சன்
3. பாலிமார்பிசம்
4. இன்ஹெரிடன்ஸ்
இவற்றில் இந்த கட்டுரையில் என்கேப்சுலேசன் எவ்வாறு ஜாவாவில் பயன்படுகின்றது என்று பார்க்க இருக்கின்றோம்.
என்கேப்சுலேசன் என்றால் என்ன?
என்கேப்சுலேசன் என்பது டேட்டா மெம்பர்களை(வேரியபிள்,மெத்தட்கள்) ஹைட் செய்தல் அல்லது டேட்டாவையும் மெத்தட்களையும் wrap செய்து ஒற்றை யுனிட் ஆக எழுதுதல் ஆகும்.
டேட்டா ஹைடிங்க் vs என்கேப்சுலேசன்.
என்கேப்சுலேசன் இம்ப்ளிமென்ட் செய்யுப் பொழுது ஒரு கிளாசிற்க்குள் இருக்கின்ற வேரியபிள்களை அந்த கிளாசில் மட்டுமே ஆக்சஸ் செய்ய முடியும்.என்வே இது டேட்டா ஹைடிங்க் எனப்படுகின்றது. ஆனால் உண்மையில் இரண்டும் வெவ்வேறு ஆகும்.
டேட்டா ஹைடிங்க் என்பது வேரியபிள்களை இல்லீகல் ஆக்சஸ் செய்யாமல் தடுக்கின்றது.
என்கேப்சுலேசன் ஆட்டோமேட்டிக் ஆக வேரியபிள்களை privateஆக எடுத்துக் கொளவதன் மூலம் நடத்தப்படுகின்றது.
\சான்று நிரல்.
package Encapsulation;
//Use of POJO (Plain Old Java Object) class
public class Employee {
//Member Variables
String name;
int age;
String address;
void code() {}
void role() {}
void employer() {}
}
இங்கே ஒரு எம்ப்ளாயின் காமன் பெஹேவியர் மற்றும் கேரக்டரிடிஸ்க் ஒற்றை யுனிட் ஆக என்கேப்சுலேட் செய்யப்பட்டுள்ளது.
ஒரு எம்ப்ளாயி ஆப்ஜெக்ட் இவற்றை வெளியுலக்கிற்கு காட்டுகின்றது.
Employee emp = new Employee();
emp.name = "Aman";
emp.role();
இதே போல் இன்டெர்ஃபேஸ் உபயோகப்படுத்தியும் என்கேப்சுலேட் செய்யலாம்.
package Encapsulation;
interface Employee {
void code();
void role();
void employer();
}
என்கேப்சுலேசனை அடைவது எப்படி?
ஜாவாவில் என்கேப்சுலேசன் ஆனது இன்டெர்ஃபேஸ், கிளாஸ், ஆக்சஸ்மாடிஃபையர்ஸ், கெட்டெர்ஸ் மற்றும் செட்டர்ஸ் மூலம் அடையப்படுகின்றது.
இன்டெர்ஃபேசும் கிளாசும் ஒரு ஆப்ஜெக்டின் தேவையான முக்கிய தகவல்களை என்கேப்சுலேட் செய்கின்றது.
ஆக்சஸ் மாடிஃபையர்ஸ் ஆன public, private & protected ஆகியவை டேட்டா மெம்பர்களை வெவ்வேறு லெவல்களில் ஆக்சஸ்செய்யப்படுவதை தடுக்கின்றது.
கெட்டெர்ஸ் மற்றும் செட்டெர்ஸ் மெத்தட் டேட்டா மெம்பர்களை தவறுதலுக்கான பயன்பாட்டிற்க்கு பயன்படுத்துவதை தடுக்கின்றது.
ஜாவாவில் என்கேப்சுலேசன் ஆனது வேரியபிள்களை பிரைவேட் செய்வதன் மூலம் தடுக்கப்படுகின்றது.அவற்றை கிளாசிற்க்கு வெளியே ஆக்சஸ் செய்ய இயலாது. கெட்டர்ஸ் மற்றும் செட்டெர்ஸ் மெத்தட் மூலமே அனுக முடியும்.
இப்பொழு எம்ப்ளாயி கிளாசை பின் வருவது போல மாற்றுவோம்.
package Encapsulation;
//Use of POJO (Plain Old Java Object) class
public class Employee {
private String name;
private int age;
private String address;
}
இப்பொழுது name, age, address ஆகியவற்றை Employee கிளாஸிற்கு வெளியே ஆக்சஸ் செய்ய முடியாது.
அப்படி ஆக்சஸ் செய்ய முடிந்தால் பிழை சுட்டப்படும்
சான்று
Employee emp = new Employee();
emp.name = "Aman" ; //Compile Time Error
ஆனால் டேட்டாவை பாதுகாப்புடன் அனுக மற்றும் எடிட் செய்ய கெட்டெர்ஸ் மற்றும் செட்டெர்ஸ் மெத்தட்களை பயன்படுத்தலாம்.
public void setAge(int age) {
if (age < 18 || age > 58) {
throw new IllegalArgumentException("Age must belong to 18 to 58 only");
}
this.age = age;
}
மேலே உள்ள சான்றி ஏஜ் டேட்டாவை ஒரு குறிப்பிட்ட ரேஞ்சிற்க்குள் மட்டுமே அசைன் செய்ய முடியும்.
public void setName(String name) {
if (name.equals(null)) {
throw new IllegalArgumentException("name cannot be null");
}
this.name = name;
}
மேலே உள்ள நிரலில் நேம் ஆனது நல் ஆக இருக்க முடியாது.அவ்வாறு இருந்தால் பிழை சுட்டப்படும்.
இது தேவையற்ற அனுகுதலில் இருந்து டேட்டாவை பாதுகாக்கின்றது.
Employee emp = new Employee();
emp.setName("");//IllegalArgumentException will be thrown
emp.setName("Aman");//Correct form
இது வரை என்கேப்சுலேசன் என்றால் என்ன என்று பார்த்தோம். இப்பொழுது என்கேப்சுலேசனை எவ்வாறு அடைவது என்று பார்ப்போம்.
அதற்கு முன்னால் கெட்டர், செட்டெர் பற்றி பார்ப்போம்.
இதற்கு ஒரு கிளாசில் உள்ள வேரியபிளை பிரைவேட் என அறிவிக்க வேண்டும்.அவற்றை அந்த கிளாசில் மட்டுமே ஆக்சஸ் செய்ய முடியும்.
package Encapsulation;
class Employee {
private String name;
private int age;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
if (name.equals(null)) {
throw new IllegalArgumentException("name cannot be null");
}
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if (age < 18 || age > 58) {
throw new IllegalArgumentException("Age must belong to 18 to 58 only");
}
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
if (address.equals(null)) {
throw new IllegalArgumentException("Address cannot be null");
}
this.address = address;
}
// if not done will result in returning hashcode of the object
@Override
public String toString() {
return "Employee [name=" + name + ", age=" + age + ", address=" + address + "]";
}
}
public class employeeSet {
public static void main(String[] args) {
Employee emp = new Employee();
emp.setName("Aman");
emp.setAge(22);
emp.setAddress("Meerut");
//to print object details
System.out.println(emp);
}
}
OUTPUT
Employee [name=Aman, age=22, address=Meerut]
மேலே உள்ள நிரலில் வேரியபிள்கள் பிரைவேட் ஆகவும் மெத்தட்கள் பப்ளிக் ஆகவும் அறிவிக்கப்பட்டுள்ளதை கவனிக்கவும்.
என்கேப்சுலேசன் ஏன் தேவை.
இதன் மூலம் ரியுசபிளிட்டி, கோட் ஃப்ளெக்ஸ்பிளிடி ஆகியவற்றிற்காக பயன்படுகின்றது.
ஆப்ஜெக்ட் டேட்டாவயும் இம்ப்லிமென்டேசையும் என்கேப்சுலேட்செய்கின்றது.
ஒரு நிரலின் செயற்பாடு ஒரு இடத்தில் டிஃபைன் செய்யப்பட்டுள்ளது.
ஆப்ஜெட்டிற்குள் உள்ள டேட்டாவை எதிர்பாராத விதமாய் மாறுதல் செய்யாமல் இருக்கின்றது.
நன்றி.
முத்து கார்த்திகேயன்,மதுரை.
No comments:
Post a Comment