"ஹலோ, அமிகோ! எங்களிடம் ஒரு கவர்ச்சியான புதிய தலைப்பு உள்ளது."
"இன்று கவர்ச்சிகரமான தலைப்புகளின் நாள்!"
"ஏன் உங்களுக்கு நன்றி!"
"நீங்கள் வரவேற்கப்படுகிறீர்கள்."
" சதுரங்கக் காய்களுக்கான அனைத்து வகுப்புகளையும் எளிமையாக்குவதற்காக, செஸ் ஐட்டம் அடிப்படை வகுப்பை நாங்கள் அறிமுகப்படுத்தியது நினைவிருக்கிறதா ?"
"ஆம்."
"ஒவ்வொரு துண்டுக்கும் திரையில் துண்டை வழங்குவதைக் கையாளும் ஒரு முறை உள்ளது என்று இப்போது கற்பனை செய்து பாருங்கள். நீங்கள் அந்த முறையை அழைக்கிறீர்கள் மற்றும் துண்டு அதன் தற்போதைய ஒருங்கிணைப்புகளில் தன்னை ஈர்க்கிறது. இந்த முறையை அடிப்படை வகுப்பிற்கு நகர்த்துவது உதவியாக இருக்குமா?"
"ஆம்." பாலிமார்பிஸத்தைப் பற்றி நான் கற்றுக்கொண்ட பிறகு, எல்லா துண்டுகளுக்கும் அவற்றின் வகையைப் பொருட்படுத்தாமல், ரெண்டர் முறையை என்னால் அழைக்க முடியும். இந்த மாதிரி ஏதாவது:"
class ChessBoard
{
public void drawAllChessItems()
{
//draw them regardless of their type.
ArrayList <ChessItem> items = new ArrayList<ChessItem>();
items.add(new King());
items.add(new Queen());
items.add(new Bishop());
//draw them regardless of their type.
for (ChessItem item: items)
{
item.draw();
}
}
}
"நல்லது. சரியாக. செஸ் ஐட்டம் வகுப்பின் டிரா முறையால் என்ன செய்யப்படும்?"
"எனக்குத் தெரியாது. சதுரங்கத்தில் அப்படி ஒரு துண்டு இல்லை. அது காட்சிப் பிரதிநிதித்துவம் இல்லை என்று அர்த்தம்."
"துல்லியமாக. மேலும் ஒரு செஸ் ஐட்டம் பொருளை உருவாக்குவது அர்த்தமற்றது. அத்தகைய சதுரங்கப் துணுக்கு எதுவும் இல்லை. இது ஒரு சுருக்கம் மட்டுமே - வசதிக்காக நாங்கள் உருவாக்கிய வகுப்பு. OOP இல் சுருக்கம் எவ்வாறு செயல்படுகிறது: நாங்கள் முக்கியமான அனைத்தையும் நகர்த்தினோம் (பகிரப்பட்டது அனைத்து துண்டுகள் மூலம்) தரவு மற்றும் முறைகள் ஒரு அடிப்படை வகுப்பில் , ஆனால் குறிப்பிட்ட சதுரங்க காய்களுடன் தொடர்புடைய வகுப்புகளில் அவற்றின் வேறுபாடுகளை நாங்கள் வைத்திருந்தோம்."
ஜாவாவிற்கு ஒரு சிறப்பு வகுப்பு வகை உள்ளது: சுருக்க வகுப்பு . சுருக்க வகுப்புகள் பற்றி நினைவில் கொள்ள வேண்டிய மூன்று விஷயங்கள் இங்கே.
1) ஒரு சுருக்க வகுப்பு அவற்றை செயல்படுத்தாமல் முறைகளை அறிவிக்க முடியும். அத்தகைய முறை ஒரு சுருக்க முறை என்று அழைக்கப்படுகிறது.
public abstract class ChessItem
{
public int x, y; //coordinates
private int value; //the piece's "value"
public int getValue() //an ordinary method, returns value
{
return value;
}
public abstract void draw(); //abstract method. There is no implementation.
}
2) ஒரு சுருக்க முறை சுருக்கம் என்ற முக்கிய வார்த்தையுடன் குறிக்கப்பட்டுள்ளது .
ஒரு வகுப்பில் ஒரு சுருக்க முறை இருந்தால், அந்த வகுப்பும் சுருக்கமாக குறிக்கப்படும் .
3) நீங்கள் ஒரு சுருக்க வகுப்பின் பொருட்களை உருவாக்க முடியாது. அவ்வாறு செய்ய முயற்சிக்கும் குறியீடு தொகுக்கப்படாது.
ஜாவா குறியீடு | விளக்கம் |
---|---|
|
இந்தக் குறியீடு தொகுக்கப்படாது. |
|
ஆனால் நீங்கள் இதைச் செய்யலாம். |
4) உங்கள் வகுப்பு ஒரு சுருக்க வகுப்பைப் பெற்றிருந்தால், நீங்கள் அனைத்து மரபுசார்ந்த சுருக்க முறைகளையும் மேலெழுத வேண்டும், அதாவது நீங்கள் அவற்றைச் செயல்படுத்த வேண்டும். இல்லையெனில், உங்கள் வகுப்பையும் சுருக்கமாக அறிவிக்க வேண்டும். வகுப்பில் நேரடியாக அறிவிக்கப்பட்ட அல்லது பெற்றோர் வகுப்பிலிருந்து பெறப்பட்ட நடைமுறைப்படுத்தப்படாத ஒரு முறை கூட இருந்தால், வகுப்பு சுருக்கமாகக் கருதப்படுகிறது.
"ஆனால் இதெல்லாம் ஏன் அவசியம்? நமக்கு ஏன் சுருக்க வகுப்புகள் தேவை? அதற்கு பதிலாக சாதாரண வகுப்புகளைப் பயன்படுத்த முடியாது? மற்றும் சுருக்க முறைகளுக்குப் பதிலாக, சுருள் அடைப்புக்குறிகளைத் திறந்து மூடுவதைக் கொண்ட வெற்று செயலாக்கங்களை உருவாக்க முடியாதா?"
"உங்களால் முடியும். ஆனால் இந்த கட்டுப்பாடுகள் மாற்றியமைப்பாளரைப் போன்றது private
. தரவுக்கான நேரடி அணுகலை வேண்டுமென்றே தடுக்க நாங்கள் private
மாற்றியமைப்பைப் பயன்படுத்துகிறோம், இதனால் மற்ற புரோகிராமர்கள் மற்றும் அவர்களின் வகுப்புகள் எங்கள் public
முறைகளைப் பயன்படுத்துகின்றன."
ஒரு சுருக்க வகுப்பிற்கும் இது பொருந்தும். வகுப்பை எழுதியவர், வகுப்பின் நிகழ்வுகளை யாரும் உருவாக்குவதை விரும்பவில்லை. மாறாக, ஆசிரியர் தனது சுருக்க வகுப்பின் சுருக்க முறைகள் மரபுவழி மற்றும் மேலெழுதப்பட வேண்டும் என்று எதிர்பார்க்கிறார்.
"எங்கள் வாழ்க்கையை ஏன் இந்த வழியில் சிக்கலாக்க விரும்புகிறோம் என்று எனக்கு இன்னும் புரியவில்லை."
"இந்த அம்சத்தின் நன்மை பெரிய திட்டங்களில் தெளிவாகத் தெரியும். உங்களிடம் அதிகமான வகுப்புகள் இருந்தால், அவர்களின் பாத்திரங்களை இன்னும் தெளிவாக வரையறுக்க வேண்டும். இதைச் செய்வதன் நன்மையை நீங்கள் காண்பீர்கள், விரைவில். அனைவரும் இதைச் செய்ய வேண்டும்."
GO TO FULL VERSION