Saturday, January 5, 2019

டாட்நெட் தொழில்நுட்பம் கற்றுக் கொள்ளலாம்-பகுதி-20



பாலிமார்பிசம்.
ஒரு பொருளை பல்வேறு வடிவங்களில் பயன்படுத்துவதே பாலிமார்பிசம் எனப் படும். ஒரே பெயரை ஒன்றுக்கும் மேற்பட்ட மெத்தடுகளுக்கு வைக்க முடியும். உதாரணமாக ஒரு சதுரம் ஒன்றின் ஏரியாவை மதிப்பிடும் பெயரை செவ்வகம்,வட்டம் போன்ற வற்றி ஏரியாவை கணக்கிடும் மெத்தடுகளுக்கு வைக்கலாம்.
பாலிமார்பிசம் முக்கிய அம்சங்கள்:
1.   இயக்க நேரத்தில் பேஸ் கிளாஸ் ரெஃபரென்ஸ் மூலம் டெரிவ்டு கிளாஸ்களை அழைக்கலாம்.
2.   ஒன்றுக்கும் மேற்பட்ட மெத்தட்களுக்கு ஒரே பெயர் வைக்கலாம்.
பாலிமார்பிசம் இரண்டு வகைகள்:
1.   கம்பைல் டைம் பாலிமார்பிசம்.
2.   ரன் டைம் பாலிமார்பிசம்.
கம்பைல் டைம் பாலிமார்பிசம்.
ஒரு நிரல் கம்பைல் செய்யப் படும் பொழுதே மெதட் ஆர்க்கியூமண்ட் பற்றிய தகவகல்களை அந்தந்த ஆப்ஜெக்டுகளுக்கு அந்தந்த மெத்தட்களை பொருத்துகின்றது. இது early binding என்று அழைக்கப்படுகின்றது.
கம்பைல் பாலிமார்பிசம் இரண்டு வகைகள்:
1.   மெத்தட் ஓவர் லோடிங்
2.   ஆப்பரேட்டர் ஓவர் லோடிங்.
மெத்தட் ஓவர் லோடிங்.
ஒன்றுக்கும் மேற்பட்ட மெத்தட்களுக்கு ஒரே பெயர் வைக்கப் படுகின்றது.எனினும் மெத்தட் சிக்னேச்சர் மாறுபடும். ஒரு மெத்தடின் சிக்னேச்சர் என்பது அதன் பெயர் , அந்த மெத்தட்களுக்கு அனுப்பப்படும் பராமீட்டர்களின் எண்ணிக்கை மற்றும் அதன் டைப் ஆகும். எனவே ஓரே பெயர் வைக்கப்பட்டிருந்தாலும் அந்த மெத்தட் ஆர்க்கியூமெண்ட்களின் எண்ணிக்கையை வைத்து எந்த மெத்தட் அழைப்படும் என்பது மாறுபடுகின்றது.
சான்று நிரல்.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MethodOverLoading
{
    public class Shape
    {
        public void CalcArea(int side)
        {
            int sarea = side * side;
            Console.WriteLine("square area=" + sarea);
        }
        public void CalcArea(int length, int breadth)
        {
            int rarea = length * breadth;
            Console.WriteLine("Rectangle area=" + rarea);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Shape s = new Shape();
            s.CalcArea(5);
            s.CalcArea(10, 5);
            Console.ReadLine();

        }
    }
}

வெளியீடு:
Square area=25
Rectangle area=50.
மேலே உள்ள நிரலில் CalcArea என்கின்ற மெத்தட் ஓவர் லோட் செய்யப் பட்டுள்ளது. ஒரு இண்ட் ஆர்க்கியூமெண்ட் அனுப்பப்படும் பொழுது சதுரத்தின் ஏரியாவையும் இரண்டு ஆர்க்கியூமெண்ட் அனுப்பப் படும் பொழுது செவ்வகத்தின் ஏரியாவையும் கணக்கிடுகின்றது.
ஆப்பரேட்டர் ஓவர்லோடிங்.
பொதுவாக ஒவ்வொரு ஆப்பரேட்டருக்கும் ஒரு செயற்பாடு உண்டு. அதன் செயற்பாட்டை நமக்கு ஏற்றாற் போல் மாற்றியமைக்கலாம். உதாரணத்திற்கு + ஆப்பரேட்டர் இரண்டு எண்களை கூட்ட பயன்படுகின்றது. இதே + ஆப்பரேட்டரை இரண்டு ஸ்டிரிங்குகளை ஒன்றினைக்கப் ;பயன்படுத்தலாம்.
இவ்வாறு நமக்கு ஏற்றாற்போல் ஒரு ஆப்பரேட்டரின் செயற்பாட்டை மாற்றியமைப்பது ஆபரேட்டர் ஓவர் லோடிங்க் எனப் படுகின்றது.
சான்று நிரல்
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OperatorOverLoading
{
    class UnaryOperator
    {
        private int n1;
        private int n2;
        public UnaryOperator()
        {

        }
        public UnaryOperator(int num1,int num2)
       
        {
            n1 = num1;
            n2 = num2;

        }
        public void ShowData()
        {
            Console.WriteLine("n1=" + n1 + " n2=" + n2);

        }
        public static UnaryOperator operator -(UnaryOperator opr)
        {
            UnaryOperator o = new UnaryOperator();
            o.n1 = -opr.n1;
            o.n2 = -opr.n2;
            return o;

        }
     
     

    }
    class Program
    {
        static void Main(string[] args)
        {
            UnaryOperator op1 = new UnaryOperator(10, 20);
            UnaryOperator op2 = new UnaryOperator();
            op2 = -op1;
            op2.ShowData();
            Console.ReadLine();

        }
    }
}
வெளியீடு:
n1=-10 n2=-20
மேலே உள்ள நிரலில் ஒரு ஆப்ஜெக்டின் எல்லா மெம்பர்களையும் – ஆப்பரேட்டர் மூலம் நெகட்டிவ் ஆக மாற்றுகின்றோம்.
ரன் டைம் பாலிமார்பிசம்.
இது ஒவர்ரைடிங்க் எனப் படும். ஒரு பேஸ் கிளாஸ் மற்றும் டெரிவ்டு கிளாஸில் ஒரே சிக்னேச்சரில் மெத்தட் இருக்கும். அவ்வாறு இருக்கும் பொழுது டெரிவ்டு கிளாஸின் ஆப்ஜெக்டின் மூலம் அந்த மெத்தடை அழைக்கும் பொழுது பேஸ் கிளாஸ் மெத்தடை ஓவர்ரைட் செய்து விட்டு  டெரிவ்டு கிளாஸ் அழைக்கப் படும். இது ஓவர்ரைடிங் ஆகும். அழைக்கப்படும் மெத்தட் ஆனது ரன் டைமில் பைண்ட் செய்யப் படும். எனவே இது ரன் டைம் பாலிமார்பிசம் ஆகும்.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MethodOverRiding
{
    class parent
    {
        public void Message()
        {
            Console.WriteLine("base class method");
        }
    }
    class Child
    {
        public void Message()
        {
            Console.WriteLine("derived class method");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Child c1 = new Child();
            c1.Message();
            Console.ReadLine();
        }
    }
}
வெளியீடு:
Derived class method.
-முத்து கார்த்திகேயன்,மதுரை.
ads Udanz

No comments:

Post a Comment