Friday, April 2, 2010

பதிவர் சங்கமும், OOPS ம்

கொஞ்ச நாளைக்கு முன்னே குடுகுடுப்பையார் ஊப்ஸ் பிரயாணி என்று ஒரு இடுகை இட்டார், அதையே நடப்பு நிலைக்கேற்ப மாற்றி அதிலே சங்கத்தையும்(இன்னுமா சங்கம் முடியலை) நுழைத்து மென் பொருள் துறை வல்லுநர்(?) என்ற முறையிலே சங்கத்தையும், ஊப்ஸ்சையும் இணைத்து இந்த கொலை வெறி இடுகை.இதுவே சங்கத்தை பற்றிய கடைசி இடுகை, இதற்கு மேல சங்கத்தைப் பத்தி பேசினா என்னை சங்கத்தை விட்டு நீக்கலாம்.இந்த இடுகையிலே ஆங்கிலம் நிலை தடுமாறி கரை புரண்டு ஓடும் என்பதை சொல்ல வேண்டிய கடமை, அதற்காக தமிழ் அன்னையிடம் மன்னிப்பு கேட்டு விடுகிறேன்,கணனி வல்லுனர்களும் பிழைகளை பொறுத்தருள்க.


Object orientated  programming என்பதையே சுருக்கி நாம் OOP என்று 
சொல்லுகிறோம் என்று நான் சொல்லத்தேவை இல்லை.object என்பது வெவ்வேறான பணிகளை விதிமுறைகளின் படி செய்வது, இந்த பணிகள் functions and procedures வழியாக செய்யப்படுகிறது.அதை போலவே தமிழ் பதிவர்களும் வெவ்வேறான துறைகளைச் சார்ந்த(கதை,கவிதை, கட்டுரை, இலக்கியம், மொக்கை) வற்றை எழுத்துகிறார்கள்.


அடுத்து class,  ஒரு object ன் பண்புகளை குறிப்பதே class என்று சொல்லலாம், வலைப் பதிவர் என்பது object என்று சொன்னால், அவருடைய பண்புகள் எல்லாம் class க்குள் இருக்கும், பதிவரின் பண்புகள் என்பது, எழுதும் மொழி, துறை, பெயர், இருப்பிடம்(ஆட்டோ அனுப்ப வசதிக்காக).


பதிவுலகம் என்பது தனி மனிதன் சார்ந்தது அல்ல, ஆகவே பதிவரின் பண்புகள் பதிவருக்கு, பதிவர் வேறுபடும், ஒவ்வொரு பதிவருக்கும் தனியாக class வேண்டும்,  ஆனால் அவர்களிடம் உள்ள பொதுவான பண்புகளை "abstract class" என்று குறிப்பிடலாம், அனைத்து பதிவர்களும் இந்த "abstract class" ன் பண்புகள் இருக்கும், ஆகையால் பதிவர் என்ற தனிமனிதன் must inherit "abstract class". உதாரணமாக "தமிழ்ப் பதிவர்" என்பது "abstract class" என்றால் குடுகுடுப்பை என்ற பதிவர் inherit "தமிழ்ப் பதிவர்" என்ற "abstract class". இந்த "abstract class" ன் பண்புகள் தவிர குடுகுடுப்பையின் தனி தனித்தன்மைகளாகிய "எதிர் கவுஜை", "என்னை மாதிரி மொக்கை" போன்ற அவர் சார்ந்த குணநலன்கள் "குடுகுடுப்பை" class ல் இருக்கும்.


பதிவர்கள்  எல்லோரும் ஒரே இடத்திலே இருந்து பொட்டி தட்டிகிட்டு கும்மி அடிக்கிறத்தில்லை, உலகெங்கும் பறந்து விரிந்து இருக்கிறார்கள். இவங்களை எல்லாம் இணைப்பது எப்படி கிளை சங்கம் முலமாக செய்யலாம், எப்படி கிளை ஆரமிக்கிறது. ஒரு அமைப்பின் செயல்பாடுகள் படிவம் அதன் கிளைகளிலும் அப்படியே இருக்கும், இதை எப்படி OOP ல் இணைப்பது என்றால் "Interface" வழியாக, இதை "abstract class"  மூலமாகவே செய்யலாம் என்றாலும், "interface"  வைத்து இணைக்க வேண்டும் என்ற நல்ல எண்ணத்திலே(?)  
(கொ)சொல்கிறேன். ஒரு பதிவர் "interface" சை "implement" செய்யும் போது கிளைகளிலே ௬ட்டம் சொம்பை எடுத்து கிட்டு போறது, கருத்துக்கு எதிர் சொம்பு அடிக்கிறது உட்பட பல விசயங்களிலே ஒப்பந்தம் செய்கிறார். அப்படி ஒப்பந்தம் செய்யாத program கீழே இருப்பது மாதிரி இருக்கும். 




public void Thundu()
    {
        int Thamna = 0; //தாம்னா 
        bool usarakalai; //உஷார்ஆகலை 
        bool pickup;
        while (usarakalai)
        {
            // துண்டு போடும் வழி முறைகளை எல்லாம் விளக்கி எழுதி, துண்டு கிடைத்தவுடனே 
            usarakalai = false; 
            pickup = true;
            Thamna = 1;
        }
    }



ஒரு பதிவர் எத்தனை "interface" வேண்டுமானாலும் "implement" பண்ணலாம், உதரணாம நெல்லை மாவட்டத்துக்கு ஒரு கிளை இருந்தால், மாவட்டத்தின் கீழ் வரும் அனைத்து கிளைகளின் கீழ்  "interface" சையும் implement பண்ணலாம். மாவட்டத்தை விட்டு வேறு மாவட்டம் போகும் போது,பதிவர் எல்லா interface சையும் கழட்டி விட்டுட்டு, புது இடத்தோட "interface" சை "implement" பண்ணிக்குவார். இதைதான் decoupling என்று சொல்வார்கள்(?).பதிவர் class, interface and its implementation  எல்லாம் தகவல் அடங்கியவற்றை encapsulation என்று சொல்லலாம். 
 
பதிவர், கிளைகள் இதையெல்லாம் வைத்து தனியாக செயல் படலாம், ஆனால் ஒரு ஒருகிணைந்த கட்டமைப்பு உருவாக்க முடியாது, கணனியிலே அதைப் போல class,abstract class, interface பயன் படுத்தினாலும், அதை செயல்பட வைப்பது "Application", சங்கம் தான் அந்த "Application". முட்டி மோதி கடைசியா வச்ச தலைப்புக்கு விடை கிடைத்து விட்டது.

இன்னும் இப்படி நிறைய பேசிகிட்டே இருக்கலாம், படிக்கிற கொஞ்ச பேரோட நல்ல எண்ணம் கருதி இத்துடன் முடித்து கொள்கிறேன்.




கீழே உள்ளது  C# language உதாரணம்
--------------------------------------------------------------------------------------------------------------
  public abstract class Blogger
    {
       public abstract string GetName();
       public abstract string GetAddress();
       public abstract string Getfield();
        //....
        //....
        //....
    }

   public interface IBranch
    {
        string name
        {
            get;
            set;
        }
        //...
        //......


    }

    public class Kudukudppai : Blogger, IBranch 
    {


        public override string GetName()
        {
            throw new Exception("The method or operation is not implemented.");
        }


        public override string GetAddress()
        {
            throw new Exception("The method or operation is not implemented.");
        }


        public override string Getfield()
        {
            throw new Exception("The method or operation is not implemented.");
        }




        #region IBranch Members


        public string name
        {
            get
            {
                throw new Exception("The method or operation is not implemented.");
            }
            set
            {
                throw new Exception("The method or operation is not implemented.");
            }
        }


        #endregion
    }
------------------------------------------------------------------------------------------------------------


29 கருத்துக்கள்:

குடுகுடுப்பை said...

பிரியாணி பிரியாணிதான் சங்கம் சங்கந்தான் மணீஷ் அங்கிள்தான்

பழமைபேசி said...

ங்கொய்யால.... சித்தப்பா குடுகுடுப்பை முந்திகிட்டாரே?

ஆமா, அந்த friend class??

பழமைபேசி said...
This comment has been removed by the author.
vasu balaji said...

variable துண்டு not found:))

Chitra said...

OOPS!

Present sir!

Unknown said...

எப்பிடி எழுதுனாலும் கம்பைலேஷன் எர்ரர் வருதே??


Sangam Not Implementable..

இதை எப்படி தவிர்க்கிறதுன்னும் கொஞ்சம் சொல்லுங்களேன்?

உண்மைத்தமிழன் said...

இந்த லாங்குவேஜ் தெரிஞ்ச பதிவர்கள்தான் இந்தச் சங்கத்துல சேர முடியும் போலிருக்கு..!

Anonymous said...

கிளிஞ்சது .... இந்த இடுகைய படிச்சதுக்கு அப்புறம் கொஞ்சம் நஞ்சம் தெரியிற OOPS கான்செப்ட்'ம் மறந்து போயிரும்போல ...
தல சுத்துது.....ஐயோ.... :) ... ஆள விடுங்க சாமீ...

சந்தனமுல்லை said...

:))))))) ஏன் குடுகுடுப்பை என்ன சுறாவா?

சந்தனமுல்லை said...

/ஆங்கிலம் நிலை தடுமாறி கரை புரண்டு ஓடும் என்பதை சொல்ல வேண்டிய கடமை, அதற்காக தமிழ் அன்னையிடம் மன்னிப்பு கேட்டு விடுகிறேன்/

அவ்வ்வ்...எதுக்கு இந்த பில்டப்....

சந்தனமுல்லை said...

/அப்படி ஒப்பந்தம் செய்யாத program கீழே இருப்பது மாதிரி இருக்கும். / :))) ஏன்...தனி சொம்புக்கு ட்ரை பண்றாரா ..சீக்கிரம் உண்மையை சொல்லிடுங்க!

பட்டுக்கோட்டை பாரி.அரசு said...
This comment has been removed by the author.
T.V.ராதாகிருஷ்ணன் said...

அடங்கவே மாட்டீங்களா...? :-)))

பட்டுக்கோட்டை பாரி.அரசு said...

OOPS உங்களோட விருப்பத்துக்கு வளைத்திருக்கிறீர்கள்... நன்று!
OOPS -ல்
Object - வலைப்பதிவர்
Application...
தமிழ்மணம்
புதுகை வலைப்பதிவர் சிறகம்
தமிழ்99... இன்னபிற இருக்க முடியுமே தவிர...
Global Application இருக்க முடியமா?
அப்படி Global Application இருக்க முடியுமெனில் Domain Architecture, Service Oriented Architecture எதற்கு?
Inversion Of Control எதற்கு?
நமக்கு ஏற்றமாதிரி தொழில்நுட்பத்தை வளைக்காதீர்கள்.
James Gosling மற்றும் Richard Matthew Stallman ஆகியோர் இப்பொழுது கட்டற்ற வெளி பற்றி என்ன எழுதிக்கொண்டிருக்கிறார்கள் என்பதை நேரம் கிடைத்தால் வாசியுங்கள்

Anonymous said...

எனக்கு தெரிஞ்ச ஒரே மொழி தமிழ் மொழிதாங்க தளபதி.

முகவை மைந்தன் said...

:-)

//James Gosling மற்றும் Richard Matthew Stallman ஆகியோர் இப்பொழுது கட்டற்ற வெளி பற்றி என்ன எழுதிக்கொண்டிருக்கிறார்கள் என்பதை நேரம் கிடைத்தால் வாசியுங்கள்//

செத்த நீ, தேவையா உனக்கு ;-))

நாமக்கல் சிபி said...

:))

Anonymous said...

Is Dondu a singleton class?

அன்புடன் மலிக்கா said...

புரிஞ்சதுபோல புரிஞ்சது நரே..

பனித்துளி சங்கர் said...

ஆஹா

நசரேயன் said...

//பாரி.அரசு said...
OOPS உங்களோட விருப்பத்துக்கு வளைத்திருக்கிறீர்கள்... நன்று!
OOPS -ல்
Object - வலைப்பதிவர்
Application...
தமிழ்மணம்
புதுகை வலைப்பதிவர் சிறகம்
தமிழ்99... இன்னபிற இருக்க முடியுமே தவிர...
Global Application இருக்க முடியமா?
அப்படி Global Application இருக்க முடியுமெனில் Domain Architecture, Service Oriented Architecture எதற்கு?
Inversion Of Control எதற்கு?
நமக்கு ஏற்றமாதிரி தொழில்நுட்பத்தை வளைக்காதீர்கள்.
James Gosling மற்றும் Richard Matthew Stallman ஆகியோர் இப்பொழுது கட்டற்ற வெளி பற்றி என்ன எழுதிக்கொண்டிருக்கிறார்கள் என்பதை நேரம் கிடைத்தால் வாசியுங்கள்

April 3, 2010 2:04:00 AM EDT
//

நன்றி பாரி.அரசு.. OOPS ல் உள்ள Class, abstract class, interface இவைகளை சொல்ல மட்டுமே எழுதியது, SOA, design pattens எல்லாம் இடுகையிலே சேர்த்தா ஒரு நெடுந்தொடர் ஆகி விடும். அப்புறமா நீங்க சொன்ன புத்தகங்களை கண்டிப்பா படிக்கிறேன்.

நசரேயன் said...

// முகவை மைந்தன் said...
:-)

//James Gosling மற்றும் Richard Matthew Stallman ஆகியோர் இப்பொழுது கட்டற்ற வெளி பற்றி என்ன எழுதிக்கொண்டிருக்கிறார்கள் என்பதை நேரம் கிடைத்தால் வாசியுங்கள்//
//
மாப்ள இதெல்லாம் பதிவுலகிலே சகஜமப்பா...

வில்லன் said...

/இதுவே சங்கத்தை பற்றிய கடைசி இடுகை, இதற்கு மேல சங்கத்தைப் பத்தி பேசினா என்னை சங்கத்தை விட்டு நீக்கலாம்.//

இப்பன்னாப்புல நீறு என்ன சங்கத்துல மெம்பராவா இருக்கீரு... உம்மையும் குடுகுடுப்பையையும் சங்கத்த விட்டு நீக்கி ரொம்ப நாளாச்சே.... அப்படி இப்படி பேசி அடுத்த வாரம் சங்கத்துல நுலஞ்சிரலாம்னு கனவு காணாதிரும்... நாங்க (நானு முகிலன் அப்புறம் நம்ம அதுசரி) இருக்குற வரைக்கும் அது நடக்கவே நடக்காது...நடக்கவும் விட மாட்டோம்.....விட்டா அப்புறம் எங்களுக்குள்ளா ஆப்பு அப்பு...

வில்லன் said...

// முகிலன் said...

எப்பிடி எழுதுனாலும் கம்பைலேஷன் எர்ரர் வருதே??


Sangam Not Implementable..

இதை எப்படி தவிர்க்கிறதுன்னும் கொஞ்சம் சொல்லுங்களேன்?//

இத சரி பண்ணிட்ட அப்புறம் நமக்கு என்ன வேலை இங்க.... கடைய மூடிட்டு "கட்டிங்க" போட்டுட்டு கவுந்தடிச்சு படுத்துற வேண்டியதுதான்.

வில்லன் said...

// பாரி.அரசு said...


OOPS உங்களோட விருப்பத்துக்கு வளைத்திருக்கிறீர்கள்... நன்று!
OOPS -ல்
Object - வலைப்பதிவர்
Application...
தமிழ்மணம்
புதுகை வலைப்பதிவர் சிறகம்
தமிழ்99... இன்னபிற இருக்க முடியுமே தவிர...
Global Application இருக்க முடியமா?
அப்படி Global Application இருக்க முடியுமெனில் Domain Architecture, Service Oriented Architecture எதற்கு?
Inversion Of Control எதற்கு?
நமக்கு ஏற்றமாதிரி தொழில்நுட்பத்தை வளைக்காதீர்கள்.
James Gosling மற்றும் Richard Matthew Stallman ஆகியோர் இப்பொழுது கட்டற்ற வெளி பற்றி என்ன எழுதிக்கொண்டிருக்கிறார்கள் என்பதை நேரம் கிடைத்தால் வாசியுங்கள்//


ரொம்ப வெவரமா பேசுறாரு இவர யாருயா உள்ள விட்டது.... நமக்கே வேட்டு வச்சு ஆப்படிசுருவாறு போல இருக்கு..... மொதல்ல வெளில அனுப்புங்க.... இல்ல நாங்க வெளிநடப்பு செய்து வேற சங்கம் ஆரம்பிக்குறோம்.....

வில்லன் said...

/அதை போலவே தமிழ் பதிவர்களும் வெவ்வேறான துறைகளைச் சார்ந்த(கதை,கவிதை, கட்டுரை, இலக்கியம், மொக்கை) வற்றை எழுத்துகிறார்கள்.//

நானும் குடுகுடுப்பையும் "கொடி கட்டி" பறக்கும்,,,, இமையம்கலாக விளங்கும் ..... "பின்னுட்டம், எதிர்கவுஜை" ஆகிய இரண்டையும் சேர்க்காததால் நானும் அண்ணன் குடுகுடுப்பையும் சபை வெளிநடப்பு செய்கிறோம்.....

www.bogy.in said...

தமிழர்கள் அனைவருக்கும் தமிழ் புத்தாண்டு வாழ்த்துக்கள்

இந்த ஆண்டு உங்கள் வாழ்வில் எல்லையில்லா மகிழ்ச்சியும், நோயற்ற வாழ்வும், குறைவற்ற செல்வமும், நீண்ட ஆயுளும் மற்றும் அனைத்து நலங்களும், வளங்களும் பெற்று வாழ வாழ்த்துகிறோம்.

அன்புடன்
www.bogy.in

சிநேகிதன் அக்பர் said...

கனவுல ப்ரோக்ராம் தென்படுமா. :)
நல்லா யோசிச்சிருக்கிங்க பாஸ்.

அனைவருக்கும் இனிய தமிழ் புத்தாண்டு நல்வாழ்த்துகள்.

நட்புடன் ஜமால் said...

தாம்னா-வா தமன்னாவா !!!