# நிரலி வடிவமைப்பியல்

## மாதிரி நிகழ்வு, அத்தியாயம் 2

### எழுத்துக் கோர்வையை சரிபார்த்தல் மற்றும் இணைப்புக் குறியிடுதல்

ஒரு ஆவணத்தின் உட்பொருட்களை வார்த்தைகள் மூலமாக பகுப்பாய்வு செய்யும் ஆவணத் தொகுப்புக் கருவியின் திறனாகும். பல வகையான பகுப்பாய்வுகள் செய்யக் கூடியவையாக இருந்தாலும், எழுத்துக் கோர்வை சரி பார்த்தல் மற்றும் இணைப்புக் குறி வடிவமைத்தல் ஆகியவை தான் முக்கியமானவையாகும்.  
**பிரச்சனைகள் மற்றும் இடர்பாடுகள்**  
1. எழுத்துக் கோர்வை சரி பார்க்க மற்றும் இணைப்புக் குறியிடக்கூடிய இடங்களைக் கண்டறிய பல வழிகளை அனுமதிக்க வேண்டும்.
1. மேலும் பகுப்பாய்வுகள் நடத்த அனுமதிக்க வேண்டும் (உதாரணமாக, எழுத்து எண்ணிக்கை, இலக்கணம் சரிபார்த்தல்)
1. ஒரு பாடத்தின் உட்பொருட்களை அதன் வடிவத்தை அனுகாமல் பல செயல்கள் ஆற்றக்கூடிய வகையில் இருத்தல் (உதாரணமாக, வரிசை, தொடர்புப்படுத்தப்பட்ட பட்டியல், சரம்).
1. ஆவணத்தில் எப்படி வேண்டுமானாலும் பயணிக்க அனுமதி (தொடக்கத்தில் இருந்து முடிவு வரை, எழுத்து வரிசைப்படி, போன்றவை)  
**தீர்வு மற்றும் முறை**  
அடிப்படை மூலகத்தில் இருந்து முழு எண்-சார்ந்த உள்ளடகத்தை எடுப்பது, வேறு ஒரு மறு செய்கை இடமுகப்பை செயல்படுத்த அனுமதிக்கிறது. பயணித்தல் மற்றும் பொருட்களை திரும்பப் பெறுதல் ஆகியவற்றிற்கு இதற்கென கூடுதல் முறைகள் தேவைப்படும். இந்த முறைகள் ஒரு சுருக்கமான <code>Iterator</code> இடமுகப்பில் போடப்படுகிறது. ஒவ்வொரு மூலகமும் இந்த <code>Iterator</code>லிருந்து எடுக்கப்பட்ட ஒன்றை செயல்படுத்துகிறது (<code>ArrayIterator</code>, <code>LinkListIterator</code>, மற்றும் பல).  
பயணித்தல் மற்றும் திரும்பப் பெறுதல் ஆகிய செயல்பாடுகள் சுருக்கமான மறுசெய்கை இடமுகப்பில் போடப்படுகிறது. பயணிக்கக் கூடிய வரிசை மற்றும் தொடர்பு படுத்தபட்ட பட்டியல் போன்ற பட்டியல் வகைகளில் இருந்து வருங்கால மறுசெய்கைகள் எடுக்கப்படக் கூடும். ஆக, மூலகத்தின் செயல்பாடு எந்த வகையான உள்ளடக்க முறையை உபயோகித்தாலும், அதற்கு தகுந்த மறு செய்கைகள் இருக்கும்.  
இது மறுசெய்கை முறையின் செயல்படுத்துதல் ஆகும். உபயோகிப்பவர் எந்த பொருள் சேர்க்கையையும் அதன் உட்பொருள்களை அணுகாமல் அல்லது சேர்க்கை முறை உபயோகிக்கும் பட்டியலின் வகையைப் பற்றி கவலைப்படாமல் நேரடியாக பயணிக்க அனுமதிக்கிறது.  
பயணித்தல் என்பது கையாளப்பட்டுவிட்ட நிலையில், மூலகத்தின் அனைப்பை பகுப்பாய்வது சாத்தியமாகிறது. மூலக அமைப்பிலேயே ஒவ்வொரு வகையான பகுப்பாய்வையும் நடத்துவது சாத்தியம் அல்ல; ஒவ்வொரு மூலகத்திற்கும் குறியிடப்பட வேண்டும் மற்றும் ஒரே மாதிரியான மூலகங்களுக்கு பெரும்பாலான குறியீடுகள் ஒரே மாதிரியாக இருக்கும்.  
இதற்கு பதிலாக, ஒரு பொதுவான <code>CheckMe</code> என்ற முறை மூலகத்தின் சுருக்கப் பிரிவில் உருவாக்கப்படுகிறது. ஒவ்வொரு மறு செய்கையும் ஒரு குறிப்பிட்ட நெறிமுறையோடு குறிப்பிடப்படுகிறது (எழுத்துக் கோர்வை சரிபார்த்தல், இலக்கணம் சரி பார்த்தல் போன்றவை). பல செயல் கருவி அதன் சேர்க்கைகளில் பல செயல்களை செய்யும் போது குறிப்பொட்ட நெறிமுறைகளில் பயணித்து ஒவ்வொரு மூலகத்தின் <code>CheckMe</code> கட்டளையை அழைக்கும். <code>CheckMe</code> பின்னர் தேவைப்படும் நெறிமுறைக்கு அதன் மூலகத்திற்கு மறுபடியும் குறிப்புகளை பகுப்பாய்வுக்காக அனுப்பிவைக்கும்.  
ஆக, எழுத்துக் கோர்வை பரிசோதிக்க, ஒரு தொடக்கத்தில் இருந்து இறுதி வரை செல்லும் பல செயலாற்றல் கருவிக்கு <code>SpellCheck</code> பொருளின் குறிப்பு அளிக்கப்படும். பல செயலாற்றல் கருவி பின்னர் ஒவ்வொரு மூலகமாக அனுகி அதன் <code>CheckMe</code> முறையை <code>SpellCheck</code> சுட்டளவோடு செயல்படுத்தும். ஒவ்வொரு <code>CheckMe</code> பின்னர் <code>SpellCheck</code> அழைத்து அதற்கேற்ற மூலகத்துக்கு குறிப்பு அளிக்கும்.  
இந்த முறையில், வலிமையான குறியீடுகள் ஒன்றோடொன்று இணையாமல் எந்த ஒரு நெறிமுறையும் எந்த ஒரு பயண முறையோடு உபயோகிக்கலாம். உதாரணமாக, கண்டுபிடி என்பது “அடுத்ததை கண்டுபிடி” அல்லது "முந்தையதை கண்டுபிடி" என்று உபயோகிக்கலாம். இது “முன்செல்லும்” பல செயலாற்றல் கருவி அல்லது “பின் செல்லும்” பல செயலாற்றல் கருவி உபயோகிப்பதை சார்ந்து அமையும்.  
கூடுதலாக, பல்வேறு மூலகங்களை கையாள நெறிமுறைகளே கூட பொறுப்பாகலாம். உதாரணமாக, <code>SpellCheck</code>க்கிற்கு செல்லாத வகையில் ஒவ்வொரு <code>Graphic</code> மூலம் எடுக்கப்பட்ட மூலகத்திற்கும் நிரல் எழுதப்படுவதற்கு பதிலாக ஒரு <code>SpellCheck</code> நெறிமுறை <code>Graphic</code> மூலகத்தைத் தவிர்த்துவிடும்.  
இது பார்வையாளர் முறையின் செயல்படுத்துதல் ஆகும்.