Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> PHP

PHP में पॉलीमॉर्फिज्म समझाया गया

शुरुआत में, पॉलीमॉर्फिज्म ग्रीक शब्दों Poly (जिसका अर्थ कई) और morphism (जिसका अर्थ रूप) से लिया गया है।

पॉलीमॉर्फिज्म ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में एक पैटर्न का वर्णन करता है जहां विभिन्न क्लासेज में समान काम करने वाले मेथड्स का समान नाम होना चाहिए। पॉलीमॉर्फिज्म अनिवार्य रूप से एक OOP पैटर्न है जो विभिन्न कार्यक्षमताओं वाली कई क्लासेज को एक कॉमन इंटरफेस को एक्ज़ीक्यूट या शेयर करने में सक्षम बनाता है। पॉलीमॉर्फिज्म की उपयोगिता यह है कि विभिन्न क्लासेज में लिखा गया कोड इस बात से कोई फर्क नहीं पड़ता कि यह किस क्लास से संबंधित है क्योंकि वे उसी तरह उपयोग किए जाते हैं। यह सुनिश्चित करने के लिए कि क्लासेज पॉलीमॉर्फिज्म दिशानिर्देश को इम्प्लीमेंट करती हैं, हम एब्स्ट्रैक्ट क्लासेज या इंटरफेस में से किसी एक विकल्प को चुन सकते हैं।

तो आइए इंटरफेस की मदद से पॉलीमॉर्फिज्म सिद्धांत को इम्प्लीमेंट करें।

इंटरफेस एक क्लास के समान है सिवाय इसके कि इसमें कोड नहीं हो सकता। एक इंटरफेस मेथड नाम और आर्गुमेंट्स को परिभाषित कर सकता है, लेकिन मेथड्स की सामग्री को नहीं। इंटरफेस इम्प्लीमेंट करने वाली किसी भी क्लास को इंटरफेस द्वारा परिभाषित सभी मेथड्स को एक्ज़ीक्यूट करना होगा।

उदाहरण:

<?php 
    interface Machine { 
        public function calcTask(); 
    } 
    class Circle implements Machine { 
        private $radius; 
        public function __construct($radius){ 
            $this -> radius = $radius; 
        } 
        public function calcTask(){ 
            return $this -> radius * $this -> radius * pi(); 
        } 
    } 
    class Rectangle implements Machine { 
        private $width; 
        private $height; 
        public function __construct($width, $height){ 
            $this -> width = $width; 
            $this -> height = $height; 
        } 
        public function calcTask(){ 
            return $this -> width * $this -> height; 
        } 
    } 
    $mycirc = new Circle(3); 
    $myrect = new Rectangle(3,4); 
    echo $mycirc->calcTask(); 
    echo $myrect->calcTask(); 
?>

आउटपुट:

28.274 12

व्याख्या:

"Machine" नाम का इंटरफेस इसे इम्प्लीमेंट करने वाली सभी क्लासेज को calcTask() नाम के एक एब्स्ट्रैक्ट मेथड को परिभाषित करने के लिए प्रतिबद्ध करता है। तदनुसार, Circle क्लास इंटरफेस को इम्प्लीमेंट करती है और कॉलटास्क() मेथड को संबंधित बॉडी के साथ परिभाषित करती है। Rectangle क्लास भी Machine इंटरफेस को इम्प्लीमेंट करती है लेकिन calcTask() मेथड को एक अलग बॉडी के साथ परिभाषित करती है जो सर्कल क्लास के CalTask() मेथड से भिन्न होती है। पॉलीमॉर्फिज्म दिशानिर्देश कहते हैं कि इस स्थिति में, टास्क की गणना करने वाले सभी मेथड्स का समान नाम होगा। अब, जब भी हमें विभिन्न क्लासेज के लिए टास्क की गणना करने की आवश्यकता होगी, हम calcTask() नाम के मेथड को कॉल करेंगे बिना इस बात की अधिक परवाह किए कि वास्तव में विभिन्न मशीन के लिए टास्क की गणना कैसे करें। मुख्य बात जो हमें जानने की आवश्यकता होगी वह है टास्क की गणना करने वाले मेथड का नाम।

  1. - PHP में फाइनल क्लास और फाइनल मेथड समझाया गया

    फाइनल कीवर्ड PHP5 द्वारा ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग कॉन्सेप्ट से संबंधित पेश किया गया है। लेकिन इससे पहले कि हम फाइनल पर आगे बढ़ें, हमें यह सुनिश्चित करने की आवश्यकता है कि हमें इनहेरिटेंस कॉन्सेप्ट की अच्छी समझ है। इनहेरिटेंस में, हम एक क्लास को दूसरी क्लास से इनहेरिट कर सकते हैं। साथ ही, हम इ

  1. - PHP में स्टेटिक और इंस्टेंस मेथड समझाया गया

    PHP में, इंस्टेंस मेथड्स स्टेटिक मेथड्स पर पसंदीदा अभ्यास हैं। किसी भी मामले में, यह नहीं कहना है कि स्टेटिक मेथड्स उपयोगी नहीं हैं, उनका एक विशिष्ट और अद्वितीय उद्देश्य है। यहां हम PHP में स्टेटिक और इंस्टेंस मेथड्स के बीच तुलना पर चर्चा करते हैं। यहां ध्यान दें कि इंस्टेंस मेथड हमेशा क्लास के ऑब्

  1. - PHP में interface_exists() फंक्शन

    PHP में interface_exists() फंक्शन जांचता है कि इंटरफेस परिभाषित किया गया है या नहीं। यदि name_of_interface द्वारा दिया गया इंटरफेस परिभाषित किया गया है तो TRUE लौटाता है, अन्यथा FALSE। सिंटैक्स interface_exists(name_of_interface, autoload) पैरामीटर्स name_of_interface - इंटरफेस नाम। autoload - डि