கேள்வி: நிரலி வடிவமைப்பியல் என்பது என்ன?
பதில்: ''வடிவ முறைகள்: மறுமுறை உபயோகிக்கக் கூடிய பொருள் சார் மென்பொருளின் உட்பொருட்கள்''  (ஐ.எஸ்.பி.என் 0-201-63361-2) என்பது மென்பொருள் வடிவமைப்பில் ஏற்படும் பொதுவான பிரச்சனைகளுக்கான தீர்வுகளை விவரிக்கும் ஒரு மென்பொருள் பொறியியல் புத்தகம். இந்த புத்தகத்தின் ஆசிரியர்கள் எரிக் காமா, ரிச்சர்டு ஹெல்ம், ரால்ஃப் ஜான்சன் மற்றும் ஜான் லிசைடஸ். இதற்கு கிரேடி ப்ரூச் முன்னுரை எழுதியுள்ளார். இவர்கள் ''கேங்க் ஆஃப் ஃபோர்''  அல்லது ''GoF''  [http://c2.com/cgi/wiki?GangOfFour கேங்க் ஆஃப் ஃபோர்], விக்கி ஃபார் பீபிள் பிராஜக்ட்ஸ் அண்ட் பேட்டர்ண்ஸ் இன் சாஃப்ட்வேர் டெவலப்மெண்ட் என்று பொதுவாக குறிப்பிடப்படுகின்றனர். புத்தகம் இரண்டு பாகங்களாகப் பிரிக்கப்பட்டுள்ளது, முதல் இரண்டு அத்தியாயங்கள் பொருள் சார் நிரலாக்கலின் பயன்கள் மற்றும் குறைபாடுகளைப் பற்றி கண்டறிகிறது மற்றும் மீதமுள்ள மற்ற அத்தியாங்கள் 23 பிரபல மென்பொருள் வடிவ முறைகள் பற்றி விவரிக்கின்றது. இந்த புத்தகத்தில் C++ மற்றும் ஸ்மால்டாக் ஆகியவற்றிலிருந்து உதாரணங்களும் கொடுக்கப்பட்டுள்ளது. இது ஒரு ஜோல்ட் உற்பத்தித் திறன் விருது மற்றும் மென்பொருள் உருவாக்கல் உற்பத்தித்திறன் விருது ஆகியவற்றை 1994ம் ஆண்டு பெற்றது.[http://ddj.com/joltawards/prev_bks.htm#1994 ஜால்ட் வின்னர்ஸ் 1994] , டாக்டர். டாப்ஸ் இந்த புத்தகத்தின் அசல் வெளியீட்டு தேதி அக்டோபர் 21, 1994. 1995ம் ஆண்டிற்கான காப்புரிமையோடு வெளியிடப்பட்டுள்ளது. ஏப்ரல் 2007ன் படி, இந்த புத்தகம் அதன் 36வது பதிப்பில் உள்ளது. அக்டோபர் 1994ம் ஆண்டு ஆரிகான், போர்ட்லாண்டில் நடந்த ஓ.ஓ.பீ.எஸ்.எல்.ஏ கூட்டத்தில் முதன் முறையாக இந்த புத்தகம் பொது மக்களுக்குக் கிடைக்கும் வகையில் செய்யப்பட்டது. மென்பொருள் பொறியியல் துறையில் இந்த புத்தகத்தின் தாக்கம் அதிகமாக இருப்பதாகவும் பொருள் சார் வடிவ கோட்பாடுகளுக்கும் பயிற்சிக்குமான மிகப் பெரிய முக்கியமான வளமாகவும் இந்த புத்தகம் கருதப்படுகிறது. ஆங்கிலம் மற்றும் 13 மற்ற மொழிகளில் 500,000க்கும் மேற்பட்ட பிரதிகள் விற்கப்பட்டுள்ளன.
கேள்வி: நிரலி வடிவமைப்பியல் - அறிமுகம், அத்தியாயம் 1 குறித்து விரிவாக சொல்லுங்கள்.
பதில்: அத்தியாயம் 1ல் ஆசிரியர்களின் அனுபவங்களின் அடிப்படையில் பொருள் சார் வடிவமைப்பு முறைகளைப் பற்றி ஆலோசிக்கப்பட்டுள்ளது. இதன் மூலம் ஒரு நல்ல பொருள் சார் மென்பொருள் வடிவம் உருவாகும் என்று அவர்கள் கருதினர். இதில் அடங்குபவை: * "இடமுகப்புக்கான நிரல், செயல்படுத்துதலுக்காக அல்ல." (கேங்க் ஆஃப் ஃபோர் 1995:18) * "'பிரிவு பெறல்’ என்பதை விட ‘பொருள் அமைப்பிற்கு’ சாதகமாக இருத்தல்." (கேங்க் ஆஃப் ஃபோர் 1995:20) செயல்படுத்துதலுக்குப் பதிலாக இடமுகப்புகளின் பயன்களாக கீழ்கண்டவற்றை ஆசிரியர்கள் கூறுகின்றனர்: * இடமுகப்புக்கு ஏற்றவாறு பொருட்கள் இருக்கும் வரையில் உபயோகிப்பவர்கள் தாங்கள் உபயோகிக்கும் குறிப்பிட்ட பிரிவுகள் பற்றி தெரியாமலேயே இருப்பர். * இந்த பொருட்களை செயல்படுத்தும் பிரிவுகள் குறித்து உபயோகிப்பவர்கள் தெரியாமலேயே இருப்பர்; இடமுகப்புகளை வரையறுக்கும் சுருக்கப் பிரிவுகளை மட்டுமே உபயோகிப்பவர்கள் அறிந்திருப்பர். இடமுகப்பின் உபயோகம் தீவிர இணைத்தல் மற்றும் பல்லுருவத் தோற்றம் ஆகியவற்றிற்கு வழி வகுக்கும். இவை பொருள் சார் நிரலாக்கலுக்கு மிகவும் முக்கியமானவர். பெறுதல் என்பதை ஆசியர்கள் ''ஒயிட்-பாக்ஸ் ரீயூஸ்'' என்று குறிப்பிடுகின்றனர். இதில் ஒயிட் பாக்ஸ் என்பது தெரியக் கூடிய வகையில் இருப்பதைக் குறிக்கிறது. ஏனெனில், துணை பிரிவுகளுக்கு, அதன் மூலப் பிரிவுகளின் உட்பொருட்கள் தெரியும் படி இருக்கும். மாறாக, பொருள் அமைப்பை (மற்ற பொருட்களிடம் இருந்து குறிப்புகளைப் பெறும் பொருட்கள் செயல்படுத்தப்படும் நேரத்தில், நன்றாக வரையறுக்கப்பட்ட இடமுகப்புகளைக் கொண்ட பொருட்களை உபயோகித்தல்) அவர்கள் ''பிளாக் பாக்ஸ் ரீயூஸ்'' என்று குறிப்பிடுகின்றனர். அமைக்கப்பட்ட பொருட்களின் உட்புற விவரங்கள் அவற்றை உபயோகிக்கும் குறியீடுகளில் தெரிய வேண்டிய அவசியம் இல்லை. பெறுதல் மற்றும் கூட்டடைவுக்கிடையேயான வித்தியாசங்களை ஆசிரியர்கள் ஆலோசிக்கின்றனர். பின்னர் அவர்களின் அனுபவத்தின் படி, வடிவமைப்பாளர்கள் பெறுதல் என்பதை அதிகமாக உபயோகிக்கின்றனர் எனக் கூறுகின்றனர் (கேங்க் ஆஃப் ஃபோர் 1995:20). இதன் அபாயம் கீழ்கண்டவாறு குறிப்பிடப்படுகிறது: :"மூலத்தின் செயல்பாட்டை துணைப் பிரிவுக்கும் பெறுதல் வெளிப்படுத்துவதால் பொதுவாக ‘பெறுதல் கூட்டடைப்பை உடைக்கிறது’ எனக் கூறப்படுகிறது”. (கேங்க் ஆஃப் ஃபோர் 1995:19) மூலத்தின் செயலபடுத்துதலில் செய்யும் மாற்றங்கள் அதன் உட்பிரிவுகளின் செயல்பாட்டிலும் மாற்றங்களை வலியுறுத்தும் படியாக துணை பிரிவுகளின் செயல்பாடு மூலத்தின் செயல்பாட்டோடு தீவிரமாக இணைந்து விடும் என்று அவர்கள் எச்சரிக்கை செய்கின்றனர். மேலும், இதனை தவிர்க்கும் ஒரு வழி முறை சுருக்கப் பிரிவுகளிடம் இருந்து பெறுவது மட்டும் தான் என்றும் கூறுகின்றனர் –ஆனால், இதில் மிகக் குறைந்த அளவு குறியீடுகளின் மறு உபயோகம் தான் உள்ளது என்றும் சுட்டிக் காட்டுகின்றனர். ஏற்கெனவே இருக்கும் உட்பொருட்களின் செயல்திறனைக் கூட்டுதல், அதிகமான பழைய குறியீடுகளை மறு உபயோகம் செய்தல் மற்றும் குறைந்த அளவு புது குறியீடுகளை சேர்த்தல் போன்றவற்றில் மட்டும் பெறுதலை உபயோகிக்கலாம் என்று பரிந்துரைக்கப்படுகிறது. ஆசிரியர்களின் படி, ‘பகிர்ந்தளித்தல்’ என்ற பொருள் அமைப்பின் தீவிர வடிவத்தை பெறுதலுக்கு பதிலாக உபயோகிக்கலாம். பகிர்ந்தளித்தலில் இரண்டு பொருட்கள் அடங்கி இருக்கும்: “ஒரு அனுப்புனர் தன்னைத் தானே பகிர்ந்தளிப்பதற்கு அனுப்பிக் கொண்டு அனுப்புனரை பகிர்ந்தளிப்பவர் குறிக்கும் படி செய்து விடும். ஆக, கணினியின் இரண்டு பாகங்களுக்கான தொடர்பு தொகுப்பு நேரத்தில் அல்லாமல் செயல்படுத்தப்படும் நேரத்தில் ஏற்படுத்தப் படுகிறது. திரும்ப அழைத்தல் என்ற கட்டுரையில் பகிர்ந்தளித்தல் பற்றிய மேலும் விவரங்கள் உள்ளன. ஜெனரிக்ஸ் (Ada, Eiffel, ஜாவா, C#, VB.NET) அல்லது வார்ப்புறுக்கள் (C++) என்றும் அழைக்கப்படும் சுட்டளவு வகைகளைப் பற்றியும் ஆசிரியர்கள் ஆலோசிக்கின்றனர். அது உபயோகிக்கும் மற்ற வகைகளைக் குறிப்பிடாமல் வேறு எந்த வகையையும் வரையறுக்க இவை அனுமதிக்கும் – குறிப்பிடப்படாத வகைகள் ‘சுட்டளவுகளாக’ உபயோகிக்கப்படும் நேரத்தில் அளிக்கப்படும். பகிர்ந்தளித்தல் மற்றும் சுட்டளவாக்குதல் ஆகியவை மிக வலிமையானவை என்று ஆசிரியர்கள் ஒத்துக் கொண்டாலும் ஒரு எச்சரிக்கயையும் கூறுகின்றனர்: :"நிலையான மென்பொருளை விட தீவிர, அதிகமாக சுட்டளவுள்ள மென்பொருள் புரிந்து கொள்ளவும், அமைக்கவும் மிகவும் கடினமானது”. (கேங்க் ஆஃப் ஃபோர் 1995:21) ஆசிரியர்கள் மேலும், ஒரு பொருளில் மற்ற பொருள் இருத்தல் அல்லது அதன் அங்கமாக மட்டும் இருத்தல் ஆகியவற்றைக் குறிக்கும் ‘ஒன்று சேர்த்தல்’, (ஒன்று சேர்க்கப்பட்ட பொருள் மற்றும் அதன் உரிமையாளரின் வாழ்காலம் ஒரே போன்று இருக்கும் என்பதை குறிக்கின்றது) என்பதற்கும் ஒரு பொருள் மற்ற பொருளை தெரிந்து மட்டுமே வைத்திருக்கும் அறிதல் என்பதற்கும் இடையேயான வேறுபாடுகளையும் ஆலோசிக்கின்றனர். சில சமயங்களில் அறிதல் என்பது ‘தொடர்பு கொள்ளுதல் அல்லது ‘உபயோகிக்கும்; உறவுமுறை என்றும் அழைக்கப்படுகிறது. அறிதல் பொருட்கள் மற்ற பொருட்களின் செயல்களைக் கேட்கலாம் ஆலாம் அவை ஒன்றுக்கொன்று பொறுப்பாகாது. அறிதல் என்பது ஒன்று சேர்த்தலை விட பலவீனமான உறவுமுறை. இது பொருட்களுக்கிடையே மேலும் வலிமையற்ற இணைப்பைக் குறிக்கிறது. இது ஒரு வடிவத்தின் அதிகப்படியான பராமரிப்புக்கு அதிகபட்சமாக தேவைப்படுவதாக இருக்கலாம். ஆசிரியர்கள் ‘கருவிப்பெட்டி என்ற வார்த்தையை உபயோகிக்கின்றனர். இதையே C# அல்லது ஜாவா போன்றவற்றில் உபயோகிப்பது போல தற்போது மற்றவர்கள் ‘பிரிவு நூலகம்’ என்பதை உபயோகிக்கின்றனர். இவற்றை ஒப்பிடும் போது, கருவிப்பெட்டிகள் என்பது துணை நடைமுறை நூலகங்களின் பொருள் சார் ஒப்பீடுகள். ‘கட்டமைப்புகள்’ என்பது ஒரு குறிப்பிட்ட மென்பொருள் பிரிவிற்கு மறுமுறை உபயோகிக்கக் கூடிய வடிவத்தை உருவாக்கும் ஒத்துழைக்கும் பிரிவுகளின் கூட்டு ஆகும். பயன்பாடுகள் வடிவமைக்கக் கடினமானவை, கருவிப்பெட்டிகள் அதை விட கடினமானது, கட்டமைப்புகள் வடிவமைக்க மிகவும் கடினமானது என அவர்கள் குறிப்பிடுகின்றனர்.
கேள்வி: நிரலி வடிவமைப்பியல் - மாதிரி நிகழ்வு, அத்தியாயம் 2 பற்றி தகவல் சொல்.
பதில்: "லெக்ஸி எனப்படும் ‘எதைப் பார்க்கிறீர்களோ-அதுவே கிடைக்கும்’(அல்லது 'WYSIWYG') என்ற வடிவத்தைக் கொண்ட ஆவண தொகுப்புக் கருவி பற்றிய படிப்படியான மாதிரி நிகழ்வு அத்தியாயம் 2ல் இருக்கும்." (ப33) லெக்ஸியை சரியான முறையில் வடிவமைக்க எதிர்கொள்ள வேண்டிய ஏழு பிரச்சனைகள் மற்றும் பின்பற்ற வேண்டிய இடர்பாடுகள் குறித்து இந்த அத்தியாயம் பேசுகின்றது. ஒவ்வொரு பிரச்சனையும் ஆழமாக பகுப்பாயப்பட்டு அதற்கான தீர்வுகளும் கூறப்பட்டுள்ளன. தேவையான இடத்தில் யூனிஃபைடு மாடலிங்க் மொழி மற்றும் மாற்றிக் குறியீடு உள்ளிட்ட தீர்வுகள் முழுமையாக விவரிக்கப்பட்டுள்ளன. கடைசியாக, ஒவ்வொரு தீர்வும் ஒன்று அல்லது அதற்கு மேற்பட்ட வடிவ முறைகளோடு தொடர்புப்படுத்தப்பட்டுள்ளது. ஒவ்வொரு தீர்வும் அந்த வடிவ முறையின் எந்த வகையில் நேரடி செயல்படுத்துதலாக உள்ளது என்பது சுட்டிக் காட்டப்பட்டுள்ளது. அந்த ஏழு பிரச்சனைகள் (இடர்பாடுகள் உட்பட) மற்றும் அவற்றிற்கான தீர்வுகள் (குறிக்கப்பட்டுள்ள வடிவங்கள் உட்பட) வருமாறு:
கேள்வி: நிரலி வடிவமைப்பியல் - ஆவண அமைப்பு பற்றி நீங்கள் என்ன அறிந்துள்ளீர்கள்?
பதில்: “ஒரு ஆவணத்தின் பொருளைப் பற்றிய மொத்த தகவலையும் அளிக்கக் கூடிய” எழுத்துகள், கோடுகள் மற்றும் மற்ற வடிவங்கள் போன்ற “அடிப்படை பல மூலகங்களின் அமைப்பு” ஆவணம் எனப்படும் (ப35). ஆவணத்தின் வடிவத்தில் இந்த பொருட்களின் தொகுப்பு இருக்கும் மற்றும் ஒவ்வொரு பொருளும் மற்ற பொருட்களின் துணைவடிவமாக இருக்கலாம். பிரச்சனைகள் மற்றும் இடர்பாடுகள் #எழுத்துகள் மற்றும் படங்கள் ஒரே போலத் தான் கையாளப்பட வேண்டும் (அதாவது படங்கள் எழுத்துகளில் இருந்தோ அல்லது எழுத்துகள் படங்களில் இருந்தோ எடுக்கப்படுபவை அல்ல) #செயல்படுத்தப்படும் போது கடினமான மற்றும் சுலபமான வடிவங்கள் ஒரே போல தான் கையாளப்பட வேண்டும். இரண்டுக்குமான வித்தியாசங்கள் அதற்குத் தெரிய வேண்டிய அவசியமில்லை. #சுருக்க மூலகங்களின் குறிப்பிட்ட வழிப்பொருட்கள் சிறப்பியல்புடைய பகுப்பு மூலகங்களைக் கொண்டிருக்க வேண்டும். தீர்வு மற்றும் முறை ஒரு ''மீள்சுருள் அமைப்பு'' என்பது “சுலபாமானவற்றில் இருந்து தீவிரமான மூலகங்களை உருவாக்கும்” மூலகங்கள் மரபுசார் அமைப்பாகும் (ப36). இந்த அமைப்பின் ஒவ்வொரு கணுவிற்கும் அதன் மூலம் மற்றும் அதிலிருந்து உருவானவை ஆகியவை தெரிந்திருக்கும். முழு அமைப்பில் ஒரு செயல் செய்யப்பட வேண்டுமெனில், ஒவ்வொரு கணுவும் அவற்றிலிருந்து உருவானவற்றை (மீள்சுருள்) அந்த செயலை செய்ய அழைக்கும். இது, பல கணுக்களின் தொகுப்பான கூட்டு முறையின் செயல்படுத்துதலைக் குறிக்கும். கணு என்பது சுருக்கமான அடித்தள பிரிவு மற்றும் அதன் வழிப்பொருட்கள் இலைகளாக இருக்கலாம் (ஒருமை) அல்லது மற்ற கணுக்களின் தொகுப்பாக இருக்கலாம் (இவையும் இலைகள் அல்லது சேகரிப்பு-கணுக்களைக் கொண்டிருக்கலாம்). மூலத்தில் ஒரு செயல் செய்யப்படும் போது மரபு வழியில் அந்த செயல் தொடர்ந்து அனுப்பிக் கொண்டு இருக்கப்படும்.
கேள்வி: நிரலி வடிவமைப்பியல் - பல வகை பார்த்து மற்றும் உணர் தரத்தை ஆதரித்தல் என்பது என்ன?
பதில்: பார்த்து மற்றும் உணர் என்பது மேடை-குறிப்பு UI மதிப்பீடுகளைக் குறிக்கிறது. இந்த மதிப்பீடுகள், “உபயோகிப்பவருக்கு பயன்பாடுகள் எப்படி காட்சி அளிக்கிறது மற்றும் செயல்படுகிறது என்பதற்கான வழிமுறைகளை வரையறுக்கிறது” (ப 47). பிரச்சனைகள் மற்றும் இடர்பாடுகள் #எடுத்துச் செல்லக் கூடிய வகையில் இருப்பதற்காக பல மேடைகளின் மதிப்பீடுகளை தொகுப்பாளர் செயல்படுத்த வேண்டும். #புதிய மற்றும் புதிதாக உருவாக்கப்படும் மதிப்பீடுகளுக்கு எளிதாக பொருந்தும் வகையில் இருக்க வேண்டும். #செயல்படுத்தும் நேரத்தில் பார்வை மற்றும் உணர்வை மாற்ற அனுமதிப்பதாக இருக்கும் (அதாவது கடினமான குறியீடுகள் இல்லாமல்) #மூலகங்களின் ஒவ்வொரு வகைக்கும் ஒரு சுருக்க மூலக துணைப் பிரிவுகள் தொகுப்பு இருக்க வேண்டும் (சுருள் பட்டி, பட்டன்கள் போன்றவை) #வித்தியாசமான பார்வை மற்றும் உணர்வு தரம் இருக்கக் கூடிய ஒவ்வொரு சுருக்க துணைப் பிரிவுக்கும் ஒரு வலிமையான துணைப்பிரிவுகளின் தொகுப்பு இருக்க வேண்டும். (மோடிஃப் சுருள்பட்டியுடன் கூடிய சுருள் பட்டி மற்றும் மோடிஃபுக்கான காட்சி அளிப்பு சுருள் பட்டி மற்றும் காட்சி அளிப்பு பார்வைகள் மற்றும் உணர்வுகள்). தீர்வு மற்றும் முறை செயல்படுத்தப்படும் நேரத்தில் பல வலிமையான பொருட்களின் பொருள் உருவாக்குதல் செய்ய முடியாத காரணத்தினால், பொருள் உருவாக்கும் செயல்முறை சுருக்கப்பட வேண்டும். UI மூலகங்கள் உருவாக்கும் பொறுப்பை ஏற்றுக்கொள்ளும் சுருக்க guiFactory மூலமாக இது செய்யப்படுகின்றது. சரியான வகையைச் சார்ந்த (MotifScrollBar) போன்ற வலிமையான மூலகங்களை உருவாக்கும் MotifFactory போன்ற வலிமையான செயல்படுத்துதல்களை இந்த சுருக்க guiFactory கொண்டுள்ளது. இதன் மூலமாக, நிரல் வெறும் சுருள் பட்டியை மட்டும் கேட்க வேண்டி இருக்கும், மேலும் செயல்படுத்தப்படும் நேரத்தில் சரியான வலிமையான மூலகம் அதற்கு கொடுக்கப்படும். இது ஒரு சுருக்க தொழிற்கருவி. ஒரு பொதுவான தொழிற்கருவி ஒரு வகையைச் சேர்ந்த பொருட்களை மட்டுமே உருவாக்கும். ஒரு சுருக்க தொழிற்கருவி, அந்த தொழிற்கருவியின் வலிமையான செயல்படுத்துதலைப் பொறுத்து பல வகையான வலிமையான பொருட்களை உருவாக்கும். வெறும் வலிமையான பொருட்களை மட்டுமே குறிக்கோளாக வைத்துக் கொள்ளாமல் மொத்த வலிமையான பொருட்களின் ''குடும்பங்களையே'' குறிக்கோளாகக் கொண்டிருக்கும் ஆற்றல் “ இதனை ஒரே ஒரு வகையான பொருளை மட்டுமே கொண்டிருக்கும் மற்ற உருவாக்கு முறைகளில் இருந்து வேறுபடுத்திக் காட்டுகின்றது” (ப51)
கேள்வி: நிரலி வடிவமைப்பியல் - உபயோகிப்பவர் செயல்பாடுகள் என்பது என்ன?
பதில்: வார்த்தைகளை சேர்த்தல், வடிவமைத்தலை மாற்றுதல், வெளியேறுதல், சேமித்தல் உள்ளிட்ட உபயோகிப்பவரால் ஆவணத்தில் செய்யக்கூடிய அனைத்து செயல்களும். பிரச்சனைகள் மற்றும் இடர்பாடுகள் #ஒரே கட்டளைக்கான விசைப்பலகை குறுக்கு வழி மற்றும் பட்டி தேர்வுகள் போன்ற வெவ்வேறு உள்ளீடுகள் மூலமாக செயல்பாடுகளை அணுக முடியும். #ஒவ்வொரு தேர்வுக்கும் மாற்றம் செய்யக் கூடிய ஒரு இடமுகப்பு இருக்கும். #பல விதமான பிரிவுகளின் செயல்பாடுகள் செயல்படுத்தப்படுகிறது. #இணைத்தலை தடுக்க, செயல்படுத்துதலுக்கும் உபயோகிப்பவர் இடமுகப்பு பிரிவுகளுக்கும் இடையே அதிகமான சார்புகள் இருக்கக்கூடாது. #செய்ததை விடுதல் மற்றும் திரும்பச் செய்தல் ஆகிய கட்டளைகள் அனைத்து ஆவணங்கள் மாற்றும் செயல்பாடுகளில் ஆதரிக்கப்பட வேண்டும். செய்ததை விடு கட்டளையை உபயோகிக்கும் எண்ணிக்கையில் எந்த எல்லையும் இருக்கக்கூடாது. #சுலபமாக செய்ததை விடுதல்/திரும்ப செய்தல் செய்ய முடியாததால், ஒரு நிலைக்கு சுலபமாக தொடர்புடையதாக இல்லாததால் மற்றும் விரிவாக்க அல்லது மறுமுறை உபயோகிக்கக் கடினமாக இருக்கும் காரணத்தால், செயல்பாடுகள் சாத்தியமானதாக இல்லை. #பட்டிகள் மரபுசார் வழியில் தொகுக்கப்பட்ட முறைகளாகக் கையாளப்பட வேண்டும். ஆக, ஒரு மெனு (பட்டி) என்பது ஒரு மெனு வகையாகும். இதில் மற்ற மெனு வகைகள் மற்றும் பலவற்றை கொண்டிருக்கும் மெனு வகைகள் இருக்கலாம். தீர்வு மற்றும் முறை ஒவ்வொரு பட்டியில் உள்ள பொருளும், சுட்டளவுகளாக அமைக்கப்படுவதற்குப் பதிலாக, ஒரு ''கட்டளை'' பொருளினால் செய்யப்படுகிறது. கட்டளை என்பது ஒரே ஒரு சுருக்க Execute() முறை கொண்ட ஒரு சுருக்கப் பொருளாகும். எடுக்கப்பட்ட பொருட்கள் Execute() முறையை சரியான வகையில் விரிவாக்குகின்றது. (அதாவது PasteCommand.Execute() உட்பொருளின் பிடிப்புப் பலகை இடையகத்தை உபயோகிக்கக் கூடியது). பட்டியில் உள்ள பொருட்களால் சுலபமாக உபயோகிக்கக் கூடியதைப் போலவே இந்த பொருட்களை நிரல் பலகைகள் அல்லது பட்டன்களினாலும் உபயோகிக்கப்படக்கூடும். செய்ததை விடு அல்லது திரும்பச் செய் கட்டளைகளை ஆதரிப்பதற்காக, Unexecute() மற்றும் Reversible() Commandகளும் கொடுக்கப்பட்டுள்ளது. எடுக்கப்பட்ட பிரிவுகளில், முதலாவதில் அந்த கட்டளையை திரும்பப் பெறும் குறியீடு உள்ளது மற்றும் இரண்டாவது ஒரு பூலியன் மதிப்பை வெளிப்பதுத்தி அந்த கட்டளை திரும்ப செய்யத்தக்கதா என்பதை வரையறுக்கும். Reversible() சில கட்டளைகளை திரும்பப் பெற முடியாதவையாகக் காட்டும். உதாரணமாக சேவ் என்ற கட்டளை. செயல்படுத்தப்பட்ட அனைத்து Commands ஒரு பட்டியலில் வைக்கப்பட்டிருக்கும். கடைசியாக செயல்படுத்தப்பட்ட கட்டளைக்கு அருகில் “பிரசண்ட்” என்ற குறி இருக்கும் முறை கையாளப்படும். செய்ததை விடு என்ற வேண்டுகோள் வரும் போது Command.Unexecute() என்பது “பிரசண்ட் என்ற குறி உள்ள கட்டளைக்கு முன் நேரடியாக அழைக்கப்படும். பின்னர் “பிரசண்ட்” குறியீடு ஒரு கட்டளை பின்னோக்கி தள்ளப்படும். மாறாக, Redo என்ற வேண்டுகோள் Command.Execute() என்பதை “பிரசண்ட்” என்பதற்குப் பின் அழைக்கப்படும் மற்றும் “பிரசண்ட்” குறியீட்டை ஒரு கட்டளை முன்னதாக தள்ளப்படும். இந்த Command வரலாறு கட்டளை முறையின் செயல்படுத்துதல் ஆகும். இது வேண்டுகோள்களை பொருட்களில் கூட்டடைவு செய்து அந்த வேண்டுகோள்களை அணுக ஒரு பொதுவான இடமுகப்பை உபயோகிக்கின்றது. ஆக, உபயோகிப்பவர் பல வேண்டுகோள்களை கையாள முடியும் மற்றும் பயன்பாடு முழுவதும் கட்டளைகள் பரப்பக் கூடும்.
கேள்வி: நிரலி வடிவமைப்பியல் - எழுத்துக் கோர்வையை சரிபார்த்தல் மற்றும் இணைப்புக் குறியிடுதல் குறித்து விரிவாக சொல்லுங்கள்.
பதில்: ஒரு ஆவணத்தின் உட்பொருட்களை வார்த்தைகள் மூலமாக பகுப்பாய்வு செய்யும் ஆவணத் தொகுப்புக் கருவியின் திறனாகும். பல வகையான பகுப்பாய்வுகள் செய்யக் கூடியவையாக இருந்தாலும், எழுத்துக் கோர்வை சரி பார்த்தல் மற்றும் இணைப்புக் குறி வடிவமைத்தல் ஆகியவை தான் முக்கியமானவையாகும். பிரச்சனைகள் மற்றும் இடர்பாடுகள் #எழுத்துக் கோர்வை சரி பார்க்க மற்றும் இணைப்புக் குறியிடக்கூடிய இடங்களைக் கண்டறிய பல வழிகளை அனுமதிக்க வேண்டும். #மேலும் பகுப்பாய்வுகள் நடத்த அனுமதிக்க வேண்டும் (உதாரணமாக, எழுத்து எண்ணிக்கை, இலக்கணம் சரிபார்த்தல்) #ஒரு பாடத்தின் உட்பொருட்களை அதன் வடிவத்தை அனுகாமல் பல செயல்கள் ஆற்றக்கூடிய வகையில் இருத்தல் (உதாரணமாக, வரிசை, தொடர்புப்படுத்தப்பட்ட பட்டியல், சரம்). #ஆவணத்தில் எப்படி வேண்டுமானாலும் பயணிக்க அனுமதி (தொடக்கத்தில் இருந்து முடிவு வரை, எழுத்து வரிசைப்படி, போன்றவை) தீர்வு மற்றும் முறை அடிப்படை மூலகத்தில் இருந்து முழு எண்-சார்ந்த உள்ளடகத்தை எடுப்பது, வேறு ஒரு மறு செய்கை இடமுகப்பை செயல்படுத்த அனுமதிக்கிறது. பயணித்தல் மற்றும் பொருட்களை திரும்பப் பெறுதல் ஆகியவற்றிற்கு இதற்கென கூடுதல் முறைகள் தேவைப்படும். இந்த முறைகள் ஒரு சுருக்கமான Iterator இடமுகப்பில் போடப்படுகிறது. ஒவ்வொரு மூலகமும் இந்த Iteratorலிருந்து எடுக்கப்பட்ட ஒன்றை செயல்படுத்துகிறது (ArrayIterator, LinkListIterator, மற்றும் பல). பயணித்தல் மற்றும் திரும்பப் பெறுதல் ஆகிய செயல்பாடுகள் சுருக்கமான மறுசெய்கை இடமுகப்பில் போடப்படுகிறது. பயணிக்கக் கூடிய வரிசை மற்றும் தொடர்பு படுத்தபட்ட பட்டியல் போன்ற பட்டியல் வகைகளில் இருந்து வருங்கால மறுசெய்கைகள் எடுக்கப்படக் கூடும். ஆக, மூலகத்தின் செயல்பாடு எந்த வகையான உள்ளடக்க முறையை உபயோகித்தாலும், அதற்கு தகுந்த மறு செய்கைகள் இருக்கும். இது மறுசெய்கை முறையின் செயல்படுத்துதல் ஆகும். உபயோகிப்பவர் எந்த பொருள் சேர்க்கையையும் அதன் உட்பொருள்களை அணுகாமல் அல்லது சேர்க்கை முறை உபயோகிக்கும் பட்டியலின் வகையைப் பற்றி கவலைப்படாமல் நேரடியாக பயணிக்க அனுமதிக்கிறது. பயணித்தல் என்பது கையாளப்பட்டுவிட்ட நிலையில், மூலகத்தின் அனைப்பை பகுப்பாய்வது சாத்தியமாகிறது. மூலக அமைப்பிலேயே ஒவ்வொரு வகையான பகுப்பாய்வையும் நடத்துவது சாத்தியம் அல்ல; ஒவ்வொரு மூலகத்திற்கும் குறியிடப்பட வேண்டும் மற்றும் ஒரே மாதிரியான மூலகங்களுக்கு பெரும்பாலான குறியீடுகள் ஒரே மாதிரியாக இருக்கும். இதற்குப் பதிலாக, ஒரு பொதுவான CheckMe() என்ற முறை மூலகத்தின் சுருக்கப் பிரிவில் உருவாக்கப்படுகிறது. ஒவ்வொரு மறு செய்கையும் ஒரு குறிப்பிட்ட நெறிமுறையோடு குறிப்பிடப்படுகிறது (எழுத்துக் கோர்வை சரிபார்த்தல், இலக்கணம் சரி பார்த்தல் போன்றவை). பல செயல் கருவி அதன் சேர்க்கைகளில் பல செயல்களை செய்யும் போது குறிப்பொட்ட நெறிமுறைகளில் பயணித்து ஒவ்வொரு மூலகத்தின் CheckMe கட்டளையை அழைக்கும். CheckMe பின்னர் தேவைப்படும் நெறிமுறைக்கு அதன் மூலகத்திற்கு மறுபடியும் குறிப்புகளை பகுப்பாய்வுக்காக அனுப்பிவைக்கும். ஆக, எழுத்துக் கோர்வை பரிசோதிக்க, ஒரு தொடக்கத்தில் இருந்து இறுதி வரை செல்லும் பல செயலாற்றல் கருவிக்கு SpellCheck பொருளின் குறிப்பு அளிக்கப்படும். பல செயலாற்றல் கருவி பின்னர் ஒவ்வொரு மூலகமாக அனுகி அதன் CheckMe() முறையை SpellCheck சுட்டளவோடு செயல்படுத்தும். ஒவ்வொரு CheckMe பின்னர் SpellCheck அழைத்து அதற்கேற்ற மூலகத்துக்கு குறிப்பு அளிக்கும். இந்த முறையில், வலிமையான குறியீடுகள் ஒன்றோடொன்று இணையாமல் எந்த ஒரு நெறிமுறையும் எந்த ஒரு பயண முறையோடு உபயோகிக்கலாம். உதாரணமாக, கண்டுபிடி என்பது “அடுத்ததை கண்டுபிடி” அல்லது "முந்தையதை கண்டுபிடி" என்று உபயோகிக்கலாம். இது “முன்செல்லும்” பல செயலாற்றல் கருவி அல்லது “பின் செல்லும்” பல செயலாற்றல் கருவி உபயோகிப்பதை சார்ந்து அமையும். கூடுதலாக, பல்வேறு மூலகங்களை கையாள நெறிமுறைகளே கூட பொறுப்பாகலாம். உதாரணமாக, SpellCheckக்கிற்கு செல்லாத வகையில் ஒவ்வொரு Graphic மூலம் எடுக்கப்பட்ட மூலகத்திற்கும் நிரல் எழுதப்படுவதற்கு பதிலாக ஒரு SpellCheck நெறிமுறை Graphic மூலகத்தைத் தவிர்த்துவிடும். இது பார்வையாளர் முறையின் செயல்படுத்துதல் ஆகும்.
கேள்வி: நிரலி வடிவமைப்பியல் - அமைப்பு முறைகள் பற்றி தகவல் சொல்.
பதில்: இவற்றில் பிரிவு மற்றும் பொருள் பொதிவுகள் இருக்கும். இவை இடமுகப்புகளை உருவாக்க பெறுதலை உபயோகிக்கிறது மற்றும் இவை புதிய செயல்பாடுகளைப் பெற பொருட்களை உருவாக்கும் வழிகளையும் வரையறுக்கிறது. * ஏற்கெனவே இருக்கும் பிரிவுகளின் மேல் தனது இடமுகப்பைப் போர்த்தி ஒத்துப்போகாத இடமுகப்புகள் கொண்ட பிரிவுகளை ஒன்றாக இணைந்து பணி புரிய ஏற்பி அனுமதிக்கிறது. * இரண்டுமே சுதந்திரமாக வேறுபடும் வகையில் சுருக்கமாக்குதல் மற்றும் அதன் செயல்படுத்துதலை பாலம் பிரிக்கின்றது. * தொகுப்பு பூஜ்யம் அல்லது அதற்கு மேலான ஒரே மாதிரியான பொருட்களை உருவாக்கி அவற்றை ஒரு பொருளாக மாற்றக் கூடிய வகையில் செய்யும். * அழகுபடுத்தும் கருவி ஒரு பொருளில் நடத்தையை கூடுதலாக்கவோ/கழிக்கவோ செய்கிறது. * முகப்பு ஒரு குறியீட்டின் பெரிய அளவிற்கு சுலபமாக்கப்பட்ட இடமுகப்பை அளிக்கிறது. * ஃபிளை வெயிட் அதிகப்படியான ஒரே மாதிரியான பொருட்களை உருவாக்க மற்றும் கையாளத் தேவைப்படும் செலவைக் குறைக்கின்றது. * பிராக்சி என்பது அனுகுதலை கட்டுப்படுத்த, செலவைக் குறைக்க, மற்றும் சிக்கலைத் தவிர்க்க வேறொரு பொருளுக்கு இடம் அளிக்கின்றது.
கேள்வி: நிரலி வடிவமைப்பியல் - நடத்தை முறைகள் பற்றி விளக்கவும்.
பதில்: இந்த வடிவ முறைகளில் பெரும்பாலானவை பொருள்களுக்கு இடையேயான தொடர்பிலேயே குறிப்பாக கவனம் செலுத்துகின்றன. * பொறுப்புகளின் வரிசை பதப்படுத்தும் பொருட்களின் ஒரு வரிசைக்கு கட்டளைகளை பகிர்ந்தளிக்கின்றது. * செயல்கள் மற்றும் சுட்டளவுகளின் கூட்டடைவு செய்யும் பொருட்களை கட்டளைகள் உருவாக்குகிறது. * மொழிபெயர்ப்புக் கருவி ஒரு மேம்பட்ட மொழியை செயல்படுத்துகின்றது. * பல செயலாற்றல் கருவி ஒரு பொருளின் மூலகங்களை ஒவ்வொன்றாக அதன் பிரதிநிதித்துவத்தை வெளிப்படுத்தாமல் அணுகுகிறது. * பிரிவுகளின் முறைகளைப் பற்றிய விவரமான அறிவாற்றல் இருப்பதன் மூலம் நடுநிலைக் கருவி பிரிவுகளுக்கிடையே மெலிதான இணைப்பை அனுமதிக்கின்றது. * மெமெண்டோ ஒரு பொருளை அதன் முந்தைய நிலைக்குத் (திரும்பச் செயதல்) திரும்ப தேவைப்படும் ஆற்றலை அளிக்கிறது. * பார்வையாளர் கருவி என்பது ஒரு வெளியீடு/பங்களிக்கும் முறை. இது பல பார்வைப் பொருட்களை ஒரு நிகழ்வை பார்வையிட அனுமதிக்கின்றது. * நிலை என்பது ஒரு பொருள் தனது உட்புற நிலை மாறும் போது தனது நடத்தையை மாற்றிக்கொள்ள அனுமதிக்கின்றது. * யுக்தி என்பது செயல்படுத்தப்படும் நேரத்தில் நெறிமுறைகளின் கூட்டில் இருந்து ஒன்றை மட்டும் தேர்ந்தெடுக்க அனுமதிக்கிறது. * வார்ப்புறு முறை ஒரு நெறிமுறையின் அமைப்பை ஒரு சுருக்கப் பிரிவாக வரையறுத்து அதன் துணைப்பிரிவுகள் வலிமையான நடத்தையைக் கொடுக்க அனுமதிக்கின்றது. * வருகைக் கருவி, முறைகளின் வரிசையை ஒரு பொருளுக்கு மாற்றி, பொருள் அமைப்பில் இருந்து நெறிமுறையை பிரிக்கிறது.