Showing posts with label abstract class. Show all posts
Showing posts with label abstract class. Show all posts

Friday, January 22, 2021

C# அப்ஸ்ட்ராக்ட்

 



அப்ஸ்ட்ராக்ட் கிளாஸ் என்பது சி ஷார்ப்பில் அப்ஸ்ட்ராக்சனை அடைவதற்கு பயன்படுகின்றது. அப்ஸ்ட்ராக்ட்சன் என்பது தேவையில்லாத இன்டெர்னல் தகவல்களை மறைத்து விட்டு அதன் ஃபங்க்சனாலிட்டியை மட்டும் காண்பிப்பதாகும்.

சி ஷார்ப்பில் அப்ஸ்ட்ராக்சனை இரண்டு முறையில் அடையலாம்.

  1. Abstract class
  2. Interface

அப்ஸ்ட்ராக்ட் கிளாஸ் மற்றும் இன்டெர்ஃபேஸ் இரண்டுமே அப்ஸ்ட்ராக்ட் மெத்தடுகளை கொண்டிருக்கலாம்.

அப்ஸ்ட்ராக்ட்மெத்தட்

 Abstract என அறிவிக்கப்பட்டு அதன் இம்ப்ளிமெண்டேசன் இல்லாத மெத்தடுகளை அப்ஸ்ட்ராக்ட் மெத்தட் என அழைக்கப்படுகின்றது. அதன் இம்ப்ளிமெண்டேசன் அந்த மெத்தடு உள்ள கிளாஸை இன்ஹெரிட் செய்யும் கிளாஸில் எழுதலாம்.

public abstract void draw();  

அப்ஸ்ட்ராக்ட் மெத்தட் என்பது சி #- ல் இன்டெர்னல் ஆக விர்ச்சுவல் மெத்தட்  என  எடுத்துக் கொள்ளப்படுகின்றது. என்வே டெரைவ்டு கிளாஸில் ஓவர் ரைட் செய்ய இயலுகின்ற்து.

அப்ஸ்ட்ராக்ட்  மெத்தட் அறிவிப்பில் static மற்றும் abstract மாடிஃபையர்களை பயன்படுத்த இயலாது

அப்ஸ்ட்ராக்ட் மெத்தடுகள் அப்ஸ்ட்ராக்ட் கிளாஸினுள் மட்டுமே எழுத முடியும்.

 

C# அப்ஸ்ட்ராக்ட் கிளாஸ்

சி#-ல் abstract என அறிவிக்கப்படும் கிளாஸ்கள் அப்ஸ்ட்ராக்ட் கிளாஸ் என அழைக்கப்படுகின்றது. இந்த கிளாஸிற்கு ஆப்ஜெக்ட் உருவாக்க முடியாது. இதை இன்ஹெரிட் செய்து அந்த டெரிவ்டு கிளாஸிற்கு ஆப்ஜெக்ட் உருவாக்கலாம். டெரிவ்டு கிளாஸில் அப்ஸ்ட்ராக்ட் மெத்தடுகளுக்கு இம்ப்ளிமென்டேசன் எழுதலாம்.

கீழே உள்ள சான்று நிரலில் draw() என்றொரு அப்ஸ்ட்ராக்ட் மெத்தட் shape என்ற அப்ஸ்ட்ராக்ட் கிளாஸில் அறிவிக்கப்பட்டுள்ளது.அதன் டெரிவ்டு கிளாஸ் ஆன Rectangle, Circle ஆகிய இரு கிளாஸ்களிலும் அதன் இம்ப்லிமென்டேசன் உள்ளது

 

      using System;  

public abstract class Shape  

{  

    public abstract void draw();  

}  

public class Rectangle : Shape  

{  

    public override void draw()  

    {  

        Console.WriteLine("drawing rectangle...");  

    }  

}  

public class Circle : Shape  

{  

    public override void draw()  

    {  

        Console.WriteLine("drawing circle...");  

    }  

}  

public class TestAbstract  

{  

    public static void Main()  

    {  

        Shape s;  

        s = new Rectangle();  

        s.draw();  

        s = new Circle();  

        s.draw();  

    }  

}  

வெளியீடு:

drawing ractangle...

drawing circle...

 

நன்றி.

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

 

ads Udanz

Sunday, March 15, 2020

ஜாவா அப்ஸ்ட்ராக்ட் கிளாஸ் மற்றும் இன்டெர்ஃபேஸ் என்ன வேறுபாடு?


இன்டெர்ஃபேஸ்
இன்டெர்ஃபேஸ் எனப்படுவது ஒரு கிளாசில் இம்ப்ளிமென்ட் செய்யக்கூடிய ப்ளூ பிரிண்ட் ஆகும். இதில் மெத்தட் அறிவிப்பு மட்டுமே இருக்கும். கன்கிரிட்(concrete) மெத்தட்கள் இருக்காது.கன்கிரிட் மெத்தட் என்பது கோடிங்குடன்(மெத்தட் பாடியுடன்) கூடிய மெத்தட்கள் ஆகும்.
ஒரு இன்டெர் ஃபேஸிற்கு ஆப்ஜெக்ட் உருவாக்க இயலாது. ஆனால் அதை இம்ப்லிமென்ட் செய்யும் கிளாஸிற்கு ஆப்ஜெக்ட் உருவாக்கலாம்.
ஒரு கிளாஸ் எத்தனை இன்டெர்ஃபேஸையும் இம்ப்லிமென்ட் செய்யலாம்.
அப்ஸ்ட்ராக்ட் கிளாஸ்.
அப்ஸ்ட்ராக்ட்(abstract) என்ற கீவேர்டுடன் கூடிய கிளாஸ் அப்ஸ்ட்ராக்ட் கிளாஸ் எனபடுகின்றது. ஒரு அப்ஸ்ட்ராக்ட் கிளாஸில் குறைந்த பட்சம் ஒரு அப்ஸ்ட்ராக்ட் மெத்தட்டாவது இருக்க வேண்டும். அப்ஸ்ட்ராக்ட் மெத்தட் என்பது அறிவிப்பு மட்டும் இருக்கும்,மெத்தட் பாடி இருக்காது. ஆனால் அப்ஸ்ட்ராக்ட் கிளாஸில் ஒன்று அல்லது அதற்கு மேற்பட்ட கன்கிரிட் மெத்தட்கள் இருக்கலாம்.
ஒரு கிளாஸ் ஒரே ஒரு அப்ஸ்ட்ராக்ட் கிளாசை மட்டுமே இன்ஹெரிட் செய்ய முடியும்.
அப்ஸ்ட்ராக்ட் கிளாஸிற்கு ஆப்ஜெக்ட் உருவாக்க இயலாது. ஆனால் அதை இன்ஹெரிட் செய்யும் கிளாஸிற்கு ஆப்ஜெக்ட் உருவாக்கலாம்.

ஒரு இன்டெர்ஃபேஸில் உள்ள எல்லா மெத்தட்களுக்கும் அதை இம்ப்லிமென்ட் செய்யும் கிளாஸில் அந்த மெத்தடின் இம்ப்லிமென்டேசன் இருக்க வேண்டும் அதே போன்று ஒரு அப்ஸ்ட்ராக்ஃப்ட் கிளாஸில் உள்ள எல்லா அப்ஸ்ட்ராக்ட் மெத்தட்களுடைய இம்ப்லிமென்டேசன் அந்த கிளாஸை இன்ஹெரிட் செய்யும் கிளாஸில் இருக்க வேண்டும்.
இன்டெர்ஃபேஸ் பயன்பாட்டிற்கான காரணம்.
1.      அப்ஸ்ட்ராக்சனை உருவாக்க உதவுகின்றது.
2.      ரன் டைமில் டைனமிக்  மெத்தட் ரெசொலூசனை ஆதரிக்கின்றது.
3.      லூஸ் கப்லிங்கை உருவாக்க உதவுகின்றது
4.      இன்ஹெரிடன்ஸ் ஹையர் ஆர்க்கிவை விட்டு மெத்தட் உருவாக்கத்தை பிரிக்கின்றது.
அப்ஸ்ட்ராக்ட் கிளாஸை பயன்படுத்த காரணம்.
1.      சப் கிளாஸிற்கான டிஃபால்ட் ஃபங்க்சனாலிட்டியை உருவாக்க உதவுகின்றது.
2.      ஃபியூச்சர் ஸ்பெசிபிக் கிளாசிற்கான  டெம்ப்லேட்டை உருவாக்கச் உதவுகின்றது.
3.      அதன் சப்கிளாஸ்களிற்கான பொதுவான இன்டெர்ஃபேசை உருவாக்க இயலுகின்றது.
4.      கோட் ரியூசபிளிட்டியை பயன்படுத்த உதவுகின்றது.

அப்ஸ்ட்ராக்ட் கிளாஸ் மற்றும் இன்டெர்ஃபேஸ் வித்தியாசங்கள்.
ஒரு அப்ஸ்ட்ராக்ட் கிளாஸ் ஆனது அதன் சப் கிளாஸ்கள் இம்ப்லிமென்ட் அல்லது ஓவர் ரைட் செய்யக்கூடிய ஃபங்க்சனாலிட்டியை தருகின்றது.இன்டெர்ஃபேஸ் ஃபங்க்சனாலிட்டியை அறிவிக்கிறதே தவிர இம்ப்ளிமென்ட் செய்வதில்லை.
ஒரு கிளாஸ் ஒரே அப்ஸ்ரட்ராக்ட் கிளாசை மட்டுமே இன்ஹெரிட் செய்ய இயலும் அதே நேரத்தில் எத்தனை இன்டெர்ஃபேஸையும் இம்ப்லிமென்ட் செய்யலாம்.
வேகத்தை பொருத்தவரை இன்டெர்ஃபேசை விட அப்ஸ்ட்ராக்ட் கிளாஸ் வேகமானது.
இன்டெர்ஃபேசஸ் அப்ஸ்ட்ராக்ட் மெத்தட்களை மட்டுமே கொண்டிருக்கும். ஆனால் அப்ஸ்ட்ராக்ட் கிளாஸ் அப்ஸ்ட்ராக்ட் மற்றும் கன்கிரிட் மெத்தட்கள் இரண்டை மட்டுமே கொண்டிருக்கும்.
எதிர்காலத்தில் நிரலை மாற்றியமைக்க வேண்டியிருந்தால் இன்டெர்ஃபேசை உபயோகிக்கலாம். இண்டிபெண்டென்சை தவிர்ப்பதற்கு அப்ஸ்ட்ராக்ட் கிளாஸை உபயோகிக்கலாம்.
இன்டெர்ஃபேஸில் புதிய கண்டென்ட் வரும் பொழுது அதன் இம்ப்லிமெண்டேசன் கிளாசை தேடி அதை மாற்றுவது கடினம்.
அப்ஸ்ட்ராக்ட் கிளாசை பொருத்த வரை அதன் டிஃபால்ட் இம்ப்லிமென்டேசனை அட்வான்டேஜாக எடுத்துக் கொள்ளலாம்.
இன்டெர்ஃபேசஸ் ஆக்சஸ் மாடிஃபையரை கொண்டிருக்காது. அதன் மெம்பர்கள் டிஃபால்ட் ஆகவே பப்ளிக் தான்.அப்ஸ்ட்ராக்ட் கிளாஸ் மெம்பர்கள் ஆக்சஸ் மாடிஃபையர்களைக் கொண்டிருக்கும்.
இன்டெர்ஃபேஸில் டேட்டா ஃபீல்டுகள் இருக்க இயலாது. அப்ஸ்ட்ராக்ட் கிளாசில் டேட்டா ஃபீல்டுகள் இருக்கலாம்.
இன்டெஃபேஸ் அப்ஸ்ட்ராக்ட் என்பதால் எந்த கோடிங்கும் இருக்காது.அப்ஸ்ட்ராக்ட் கிளாசினால் கம்ப்ளீட் டிஃபால்ட் (ஓவர் ரைட் செய்யக்கூடிய)கொண்டிருக்க முடியும்.
இன்டெர்ஃபேசில் கன்ஸ்ட்ரக்டர், டெஸ்ட்ரக்டர் கொண்டிருக்க இயலாது.அப்ஸ்ட்ராக்ட் கிளாசில் கன்ஸ்ட்ரக்டர், டெஸ்ட்ரக்டர் கொண்டிருக்க இயலும்.
இன்டெர்ஃபேஸில் ஒரு மெத்தடை அப்ஸ்ட்ராக்ட் என அறிவிக்க abstract என்ற கீவேர்டு தேவையில்லை. அப்ஸ்ட்ராக்ட் கிளாசில் அது அவசியம்.
இன்டெர்ஃபேஸ் சிண்டாக்ஸ்.
interface name{
//methods
}

இன்டெர்ஃபேஸ் சான்று நிரல்.
interface Pet {
    public void test();
}
class Dog implements Pet {
    public void test() {
        System.out.println("Interface Method Implemented");
    }
    public static void main(String args[]) {
        Pet p = new Dog();
        p.test();
    }
}
 
 



அப்ஸ்ட்ராக்ட் கிளாஸ் சிண்டாக்ஸ்.
abstract class name{
    // code
}

அப்ஸ்ட்ராக்ட் கிளாஸ் சான்று நிரல்.
abstract class Shape {
    int b = 20;
    abstract public void calculateArea();
}
 
public class Rectangle extends Shape {
    public static void main(String args[]) {
        Rectangle obj = new Rectangle();
        obj.b = 200;
        obj.calculateArea();
    }
    public void calculateArea() {
        System.out.println("Area is " + (obj.b * obj.b));
    }
}
நன்றி.
முத்து கார்த்திகேயன்,மதுரை.



ads Udanz

Sunday, March 1, 2020

பைத்தானில் அப்ஸ்ட்ராக்ட் கிளாஸ் மற்றும் அப்ஸ்ட் ராக்ட் மெத்தட்கள்.


அப்ஸ்ட்ராக்ட் கிளாசானது மற்ற கிளாஸ்களுக்கு blue print ஆக செயற்படுகின்றது. இதில் இந்த கிளாசைஇன் ஹெரிட் செய்யும் கிளாசில் இம்ப்ளிமென்ட் செய்ய வேண்டிய மெத்தட்களின் அறிவிப்பு இருக்கின்றது.ஒன்று அல்லது ஒன்றுக்கு மேற்பட்ட அப்ஸ்ட்ராக்ட் மெத்தட் உள்ள கிளாஸ் அப்ஸ்ட்ராக்ட் கிளாஸ் எனப்படுகின்றது.அப்ஸ்ட்ராக்ட் மெத்தட் என்பது மெத்தடின் அறிவிப்பு இருக்கும் ஆனால் அதம் இம்ப்ளிமெண்டேசன் இருக்காது. அதை இன் ஹெரிட் செய்யும் கிளாஸ் கட்டாயம் அப்ஸ்ட்ராக்ட் மெத்தடை நடைமுறைப்படுத்த வேண்டும்.பெரிய ஃபங்க்சனல் யுனிட்டில் எல்லா காம்பனன்டுக்கும் அடிப்ப்டை செய்ற்பாட்டை தர அப்ட்ராக்ட் கிளாஸ் பயன்படுகின்றது.
அப்ஸ்ட்ராக்ச் கிளாசில் இம்ப்ளிமெண்டேசனுடன் கூடிய மெத்தட்களுமிருக்கலாம். மெத்தட்களின் அறிவிப்பை ,மட்டும் கொண்டது இன்டெர்ஃபேஸ் எனப்படும்.
ஒரு அப்ஸ்ட்ராக்ட் கிளாசை உருவாக்குவதன் மூலம் எல்லா கிளாஸிற்கும் உண்டான அடிப்படை ஃபங்க்சனலாட்டியை தரக்கூடிய ஒரு கிளாசை உருவாகியிருப்போம்.
அப்ஸ்ட்ராக்ட் கிளாசிற்கு ஆப்ஜெக்ட் உருவாக்க முடியாது. ஆனால் அதை இன் ஹெரிட் கிளாஸிற்கு ஆப்ஜெக்ட் உருவாக்கலாம்.
டிஃபால்ட் ஆக பைத்தானில் அப்ஸ்ட்ராக்ட் கிளாஸ் உருவாக்க முடியாது.ஆனால் பைத்தான் ஆனதுABC எனப்படும் மாடூலை கொண்டுள்ளது.ABC என்பது Abstract base class என்பதன் சுருக்கமாகும்.ABC ஆனது அப்ஸ்ட்ராக்ட் கிளாசில் உள்ள மெத்தடை அப்ஸ்ட்ராக்ட் என மார்க் செய்து அதன் இம்ப்ளிமென்டேசனை டெரிவ்டு கிளாசில் தருகின்றது.
@abstractmethod என்ற கீவேர்டு மூலமாக அப்ஸ்ட்ராக்ட் மெத்தட் டெகரேட் செய்யப்படுகின்றது.
சான்று நிரல்-1
# Python program showing
# abstract base class work
  
from abc import ABC, abstractmethod
  
class Polygon(ABC):
  
    # abstract method
    def noofsides(self):
        pass
  
class Triangle(Polygon):
  
    # overriding abstract method
    def noofsides(self):
        print("I have 3 sides")
  
class Pentagon(Polygon):
  
    # overriding abstract method
    def noofsides(self):
        print("I have 5 sides")
  
class Hexagon(Polygon):
  
    # overriding abstract method
    def noofsides(self):
        print("I have 6 sides")
  
class Quadrilateral(Polygon):
  
    # overriding abstract method
    def noofsides(self):
        print("I have 4 sides")
  
# Driver code
R = Triangle()
R.noofsides()
  
K = Quadrilateral()
K.noofsides()
  
R = Pentagon()
R.noofsides()
  
K = Hexagon()
K.noofsides()
வெளியீடு:.
I have 3 sides
I have 4 sides
I have 5 sides
I have 6 sides

சான்று நிரல்-2

# Python program showing
# abstract base class work
  
from abc import ABC, abstractmethod
class Animal(ABC):
  
    def move(self):
        pass
  
class Human(Animal):
  
    def move(self):
        print("I can walk and run")
  
class Snake(Animal):
  
    def move(self):
        print("I can crawl")
  
class Dog(Animal):
  
    def move(self):
        print("I can bark")
  
class Lion(Animal):
  
    def move(self):
        print("I can roar")
          
# Driver code
R = Human()
R.move()
  
K = Snake()
K.move()
  
R = Dog()
R.move()
  
K = Lion()
K.move()

வெளியீடு
I can walk and run
I can crawl
I can bark
I can roar

நன்றி.
முத்து கார்த்திகேயன்,மதுரை.
9196293 29142
ads Udanz