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

## அறிமுகம், அத்தியாயம் 1

அத்தியாயம் 1ல் ஆசிரியர்களின் அனுபவங்களின் அடிப்படையில் பொருள் சார் வடிவமைப்பு முறைகளைப் பற்றி ஆலோசிக்கப்பட்டுள்ளது. இதன் மூலம் ஒரு நல்ல பொருள் சார் மென்பொருள் வடிவம் உருவாகும் என்று அவர்கள் கருதினர். இதில் அடங்குபவை:  
- "இடமுகப்புக்கான நிரல், **செயல்படுத்துதலுக்காக** அல்ல." (கேங்க் ஆஃப் ஃபோர் 1995:18)
- "'பிரிவு பெறல்’ என்பதை விட ‘பொருள் அமைப்பிற்கு’ சாதகமாக இருத்தல்." (கேங்க் ஆஃப் ஃபோர் 1995:20)  
செயல்படுத்துதலுக்குப் பதிலாக இடமுகப்புகளின் பயன்களாக கீழ்கண்டவற்றை ஆசிரியர்கள் கூறுகின்றனர்:  
- இடமுகப்புக்கு ஏற்றவாறு பொருட்கள் இருக்கும் வரையில் உபயோகிப்பவர்கள் தாங்கள் உபயோகிக்கும் குறிப்பிட்ட பிரிவுகள் பற்றி தெரியாமலேயே இருப்பர்.
- இந்த பொருட்களை செயல்படுத்தும் பிரிவுகள் குறித்து உபயோகிப்பவர்கள் தெரியாமலேயே இருப்பர்; இடமுகப்புகளை வரையறுக்கும் சுருக்கப் பிரிவுகளை மட்டுமே உபயோகிப்பவர்கள் அறிந்திருப்பர்.  
இடமுகப்பின் உபயோகம் தீவிர இணைத்தல் மற்றும் பல்லுருவத் தோற்றம் ஆகியவற்றிற்கு வழி வகுக்கும். இவை பொருள் சார் நிரலாக்கலுக்கு மிகவும் முக்கியமானவர்.  
பெறுதல் என்பதை ஆசியர்கள் *ஒயிட்-பாக்ஸ் ரீயூஸ்* என்று குறிப்பிடுகின்றனர்.
இதில் ஒயிட் பாக்ஸ் என்பது தெரியக் கூடிய வகையில் இருப்பதைக் குறிக்கிறது. ஏனெனில், துணை பிரிவுகளுக்கு, அதன் மூலப் பிரிவுகளின் உட்பொருட்கள் தெரியும் படி இருக்கும். மாறாக, பொருள் அமைப்பை (மற்ற பொருட்களிடம் இருந்து குறிப்புகளைப் பெறும் பொருட்கள் செயல்படுத்தப்படும் நேரத்தில், நன்றாக வரையறுக்கப்பட்ட இடமுகப்புகளைக் கொண்ட பொருட்களை உபயோகித்தல்)
அவர்கள் *பிளாக் பாக்ஸ் ரீயூஸ்* என்று குறிப்பிடுகின்றனர். அமைக்கப்பட்ட பொருட்களின் உட்புற விவரங்கள் அவற்றை உபயோகிக்கும் குறியீடுகளில் தெரிய வேண்டிய அவசியம் இல்லை.  
பெறுதல் மற்றும் கூட்டடைவுக்கிடையேயான வித்தியாசங்களை ஆசிரியர்கள் ஆலோசிக்கின்றனர். பின்னர் அவர்களின் அனுபவத்தின் படி, வடிவமைப்பாளர்கள் பெறுதல் என்பதை அதிகமாக உபயோகிக்கின்றனர் எனக் கூறுகின்றனர் (கேங்க் ஆஃப் ஃபோர் 1995:20). இதன் அபாயம் கீழ்கண்டவாறு குறிப்பிடப்படுகிறது:  
:"மூலத்தின் செயல்பாட்டை துணைப் பிரிவுக்கும் பெறுதல் வெளிப்படுத்துவதால் பொதுவாக ‘பெறுதல் கூட்டடைப்பை உடைக்கிறது’ எனக் கூறப்படுகிறது”. (கேங்க் ஆஃப் ஃபோர் 1995:19)  
மூலத்தின் செயலபடுத்துதலில் செய்யும் மாற்றங்கள் அதன் உட்பிரிவுகளின் செயல்பாட்டிலும் மாற்றங்களை வலியுறுத்தும் படியாக துணை பிரிவுகளின் செயல்பாடு மூலத்தின் செயல்பாட்டோடு தீவிரமாக இணைந்து விடும் என்று அவர்கள் எச்சரிக்கை செய்கின்றனர். மேலும், இதனை தவிர்க்கும் ஒரு வழி முறை சுருக்கப் பிரிவுகளிடம் இருந்து பெறுவது மட்டும் தான் என்றும் கூறுகின்றனர் –ஆனால், இதில் மிகக் குறைந்த அளவு குறியீடுகளின் மறு உபயோகம் தான் உள்ளது என்றும் சுட்டிக் காட்டுகின்றனர்.  
ஏற்கெனவே இருக்கும் உட்பொருட்களின் செயல்திறனைக் கூட்டுதல், அதிகமான பழைய குறியீடுகளை மறு உபயோகம் செய்தல் மற்றும் குறைந்த அளவு புது குறியீடுகளை சேர்த்தல் போன்றவற்றில் மட்டும் பெறுதலை உபயோகிக்கலாம் என்று பரிந்துரைக்கப்படுகிறது.  
ஆசிரியர்களின் படி, ‘பகிர்ந்தளித்தல்’ என்ற பொருள் அமைப்பின் தீவிர வடிவத்தை பெறுதலுக்கு பதிலாக உபயோகிக்கலாம். பகிர்ந்தளித்தலில் இரண்டு பொருட்கள் அடங்கி இருக்கும்: “ஒரு அனுப்புனர் தன்னைத் தானே பகிர்ந்தளிப்பதற்கு அனுப்பிக் கொண்டு அனுப்புனரை பகிர்ந்தளிப்பவர் குறிக்கும் படி செய்து விடும். ஆக, கணினியின் இரண்டு பாகங்களுக்கான தொடர்பு தொகுப்பு நேரத்தில் அல்லாமல் செயல்படுத்தப்படும் நேரத்தில் ஏற்படுத்தப் படுகிறது. திரும்ப அழைத்தல் என்ற கட்டுரையில் பகிர்ந்தளித்தல் பற்றிய மேலும் விவரங்கள் உள்ளன.  
ஜெனரிக்ஸ் (Ada, Eiffel, ஜாவா, C#, VB.NET) அல்லது வார்ப்புறுக்கள் (C++) என்றும் அழைக்கப்படும் **சுட்டளவு வகைகளைப்** பற்றியும் ஆசிரியர்கள் ஆலோசிக்கின்றனர். அது உபயோகிக்கும் மற்ற வகைகளைக் குறிப்பிடாமல் வேறு எந்த வகையையும் வரையறுக்க இவை அனுமதிக்கும் – குறிப்பிடப்படாத வகைகள் ‘சுட்டளவுகளாக’ உபயோகிக்கப்படும் நேரத்தில் அளிக்கப்படும்.  
பகிர்ந்தளித்தல் மற்றும் சுட்டளவாக்குதல் ஆகியவை மிக வலிமையானவை என்று ஆசிரியர்கள் ஒத்துக் கொண்டாலும் ஒரு எச்சரிக்கயையும் கூறுகின்றனர்:  
:"நிலையான மென்பொருளை விட தீவிர, அதிகமாக சுட்டளவுள்ள மென்பொருள் புரிந்து கொள்ளவும், அமைக்கவும் மிகவும் கடினமானது”. (கேங்க் ஆஃப் ஃபோர் 1995:21)  
ஆசிரியர்கள் மேலும், ஒரு பொருளில் மற்ற பொருள் இருத்தல் அல்லது அதன் அங்கமாக மட்டும் இருத்தல் ஆகியவற்றைக் குறிக்கும் ‘ஒன்று சேர்த்தல்’, (ஒன்று சேர்க்கப்பட்ட பொருள் மற்றும் அதன் உரிமையாளரின் வாழ்காலம் ஒரே போன்று இருக்கும் என்பதை குறிக்கின்றது) என்பதற்கும் ஒரு பொருள் மற்ற பொருளை தெரிந்து மட்டுமே வைத்திருக்கும் **அறிதல்** என்பதற்கும் இடையேயான வேறுபாடுகளையும் ஆலோசிக்கின்றனர். சில சமயங்களில் அறிதல் என்பது ‘தொடர்பு கொள்ளுதல் அல்லது ‘உபயோகிக்கும்; உறவுமுறை என்றும் அழைக்கப்படுகிறது. அறிதல் பொருட்கள் மற்ற பொருட்களின் செயல்களைக் கேட்கலாம் ஆலாம் அவை ஒன்றுக்கொன்று பொறுப்பாகாது. அறிதல் என்பது ஒன்று சேர்த்தலை விட பலவீனமான உறவுமுறை. இது பொருட்களுக்கிடையே மேலும் வலிமையற்ற இணைப்பைக் குறிக்கிறது. இது ஒரு வடிவத்தின் அதிகப்படியான பராமரிப்புக்கு அதிகபட்சமாக தேவைப்படுவதாக இருக்கலாம்.  
ஆசிரியர்கள் ‘கருவிப்பெட்டி என்ற வார்த்தையை உபயோகிக்கின்றனர். இதையே C# அல்லது ஜாவா போன்றவற்றில் உபயோகிப்பது போல தற்போது மற்றவர்கள் ‘பிரிவு நூலகம்’ என்பதை உபயோகிக்கின்றனர். இவற்றை ஒப்பிடும் போது, கருவிப்பெட்டிகள் என்பது துணை நடைமுறை நூலகங்களின் பொருள் சார் ஒப்பீடுகள். ‘கட்டமைப்புகள்’ என்பது ஒரு குறிப்பிட்ட மென்பொருள் பிரிவிற்கு மறுமுறை உபயோகிக்கக் கூடிய வடிவத்தை உருவாக்கும் ஒத்துழைக்கும் பிரிவுகளின் கூட்டு ஆகும். **பயன்பாடுகள்** வடிவமைக்கக் கடினமானவை, **கருவிப்பெட்டிகள்** அதை விட கடினமானது, **கட்டமைப்புகள்** வடிவமைக்க மிகவும் கடினமானது என அவர்கள் குறிப்பிடுகின்றனர்.