Sunday, December 23, 2018

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



C#-இண்டெக்ஸ்சர்(indexers):
ஒரு கிளாஸின் ஆப்ஜெக்டை அர்ரே போல் பயன்படுத்துவதற்கு இண்டெக்செர் பயன்படுகின்றது. இதுவும் பிராப்பர்டி போல் get மற்றும் set ஆக்ஸசர்களை கொண்டுள்ளது எனினும் இதன் பெயரானது this கீவேர்டு கொண்டு அழைக்கப்படுகின்றது.
சான்று நிரல்:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace IndexerExample
{
    class Employee
    {
        private string[] names = new string[5];
        public string this[int index]
        {
            get
            {
                return names[index];
            }
            set
            {
                names[index] = value;
            }
        }

    }
    class Program
    {
        static void Main(string[] args)
        {
            Employee e1 = new Employee();
            e1[0] = "Muthu";
            e1[1] = "Karthikeyan";
            e1[2] = "Raja";
            e1[3] = "Bala";
            e1[4] = "Kannan";
            for (int i=0;i<5;i++)
            {
                Console.WriteLine("Name of employee {0} is {1}", i + 1, e1[i]);
            }
            Console.ReadLine();
        }
    }
}
c# 19-1.png
என்கேப்சுலேசன்(Encapsulation).
C#-ல் என்கேப்சுலேசன் என்பது டேட்டாவையும் மெத்தடையும் ஒன்றாக கட்டுவிப்பது ஆகும். ஒரு கிளாஸின் உள்ளடக்கத்தை மறைத்து தேவையானவற்றை மட்டும் வெளிப்படுத்துவது என்கேப்சுலேசன் ஆகும்.டேட்டாவானெது ப்ரைவேட் ஆக இருக்கும். மெத்தட் ஆனது பப்ளிக் ஆக இருக்கும். ஆகவே கிளாஸின் வெளியே டேட்டாவை நேரடியாக கையாள முடியாது. மெத்தடை மட்டுமே அழைக்க முடியும் அந்த மெத்தட் ஆனது இன்டெர்னல் ஆக டேட்டாவைக் கையாளும்.
சான்று நிரல்
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EncapsulationExample
{
    class Sample
    {
        private int X;
        public void SetX(int a)
        {
            X = a;
        }
        public int GetX()
        {
            return X;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Sample s1 = new Sample();
            s1.SetX(10);
            Console.WriteLine("x=" + s1.GetX());
            Console.ReadLine();
        }
    }
}
வெளியீடு:
X=10;
மேலே உள்ள நிரலில் x என்பது பிரைவேட் ஆகும் . எனவே அதை நேரடியாக கிளாஸின் வெளியே அணுக முடியாது. ஆனால் அதன் உள்ளே உள்ள மெத்தட்கள் SetX,GetX மூலம் அனுகலாம்.
இன்ஹெரிடன்ஸ்:
Oop கருத்தின் முக்கிய அம்சம் ரியுசபிலிட்டி ஆகும். அதை நிகழ்த்துவதற்கு இன்ஹெரிடன்ஸ் பயன்படுகின்றது. ஒரு கிளாஸை மற்றொரு கிளாஸ் நீட்டுவிப்பதை இன்ஹெரிடன்ஸ் என்கின்றோம். அதாவது பேரண்ட் கிளாஸின் எல்லா அம்சங்களையும் சைல்ட் கிளாஸ் பெறுகின்றது. கூடுதலாக என்ன தேவையோ அதை சைல்ட் கிளாஸில் தனியே சேர்த்துக் கொள்ளலாம்.
Single inheritance: ஒரு பேஸ் கிளாஸ் மற்றும் ஒரு சைல்ட் கிளாஸ் இருப்பதை சிங்கிள் இன்ஹெரிடன்ஸ் என்கின்றோம்.
Multiple inheritance: ஒரு கிளாஸ் ஆனது ஒன்றுக்கும் மேற்பட்ட  கிளாஸ்களை இன்ஹெரிடன்ஸ் செய்வது மல்டிபிள் இன்ஹெரிடன்ஸ் எனப் படும். சி ஷார்ப் இதை ஆதரிப்பது இல்லை.
Multilevel inheritance:
ஒரு கிளாஸ் ஆனது ஏற்கனவே மற்றொரு கிளாஸை இன்ஹெரிட் செய்த கிளாசை இன்ஹெரிட் செய்வது மல்டிலெவல் இன்ஹெரிடன்ஸ் ஆகும்.
Hierarchical inheritance: ஒரு பேஸ் கிளாஸ் மற்றும் ஒன்றுக்கும் மேற்பட்ட டெரிவ்டு கிளாஸ் உள்ளதாகும்.
சான்று நிரல்:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace InheritanceExample
{
     class BaseClass
    {
        public void BaseClassMethod()
        {
            Console.WriteLine("base class method");

        }
    }
    class DerivedClass: BaseClass
    {
        public void DerivedClassMethod()
        {
            Console.WriteLine("Derived class method");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            DerivedClass d1 = new DerivedClass();
            d1.BaseClassMethod();
            d1.DerivedClassMethod();
            Console.ReadLine();
        }
    }
}
வெளியீடு:
Base class method
Derived class method.
பேரண்ட் கிளாஸிற்கு ஆப்ஜெக்ட் உருவாக்கினால் அதன் மூலம் பேஸ் கிளாஸ் மெம்பர்களை மட்டுமே அணுக முடியும்.சைல்ட் கிளாஸ் ஆப்ஜெக்ட் மூலம் பேரண்ட், சைல்ட் இரண்டின் மெம்பர்களையும் அனுக முடுயும்.
அப்ஸ்ட்ராக்ட் கிளாஸ்:
ஒரு ப்ராஜெக்டில் எந்த கிளாஸிற்கு ஆப்ஜெக்ட் தேவையில்லையோ அந்த கிளாஸை அப்ஸ்ட்ராக்ட் கிளாஸ் ஆக அறிவித்துக் கொள்ளலாம். ஆனால் அந்த கிளாஸை மற்றொரு கிளாஸ் இன்ஹெரிட் செய்யும். அந்த கிளாஸிற்கு நாம் ஆப்ஜெக்ட் உருவாக்கிக் கொள்ளலாம்.
இது அப்ஸ்ட்ராக்ட் மற்றும் அப்ஸ்ட்ராக அல்லாத மெம்பர்களையும் கொண்டிருக்கும். குறைந்த பட்சம் ஒரு அப்ஸ்ட்ராக்ட்  மெத்தட் ஆவது இருக்க வேண்டும். இதன் ஆக்ஸஸ் மாடிஃபையர் எப்பொழுது பப்ளிக் ஆகவே இருக்கும்.
சான்று நிரல்
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AbstractClassExample
{
    abstract class sample
    {
        public abstract void display();

    }
    class derived : sample
    {
        public override void display()
        {
            Console.WriteLine("hello");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            derived d1 = new derived();
            d1.display();
            Console.ReadLine();
        }
    }
}
வெளியீடு:
Hello.
மேலே உள்ள நிரலில் ஒரு அப்ஸ்ட்ராக்ட் கிளாஸ் உள்ளது . அதற்கு ஆப்ஜெக்ட் உருவாக்க இயலாது.  அதில் ஒரு அப்ஸ்ட்ராக்ட் மெத்தட் உள்ளது. அதன் இம்ப்லிமெண்டேசன் சைல் கிளாஸில் உள்ளது.

Sealed class:
ஒரு சீல்டு கிளாஸை மற்ற கிளாஸ் இன்ஹெரிடன்ஸ் செய்ய இயலாது. இதற்கு sealed என்கின்ற மாடிஃபையர் தேவைப்படுகின்றது.
சான்று நிரல்:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AbstractClassExample
{
    sealed class sample
    {
        public  void display()
        {
            Console.WriteLine("sealed class method");

        }

    }
  
    class Program
    {
        static void Main(string[] args)
        {
           
        }
    }
}
மீண்டும் அடுத்த இதழில் சந்த்திப்போம்.

முத்து கார்த்திகேயன்,மதுரை

ads Udanz

No comments:

Post a Comment