PHP ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग (OOPs) अवधारणा ट्यूटोरियल उदाहरण के साथ

ओ.ओ.पी.एस. क्या है?

ऑब्जेक्ट ओरिएंटेड सॉफ्टवेयर विकास के लिए एक दृष्टिकोण है जो कर्मचारियों, कारों, बैंक खातों आदि जैसी वास्तविक दुनिया की वस्तुओं के इर्द-गिर्द एप्लिकेशन को मॉडल करता है। एक क्लास वास्तविक दुनिया की वस्तु के गुणों और विधियों को परिभाषित करता है। एक ऑब्जेक्ट एक क्लास की घटना है।

ऑब्जेक्ट ओरिएंटेशन के तीन मूल घटक हैं;

  • ऑब्जेक्ट ओरिएंटेड विश्लेषण - सिस्टम की कार्यक्षमता
  • ऑब्जेक्ट ओरिएंटेड डिजाइनिंग - सिस्टम की वास्तुकला
  • ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग - एप्लिकेशन का कार्यान्वयन

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग सिद्धांत

ओओपी के तीन प्रमुख सिद्धांत हैं;

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

उफ़ Concepts PHP में

PHP एक ऑब्जेक्ट ओरिएंटेड स्क्रिप्टिंग भाषा है; यह उपरोक्त सभी सिद्धांतों का समर्थन करती है। उपरोक्त सिद्धांतों को इसके माध्यम से प्राप्त किया जाता है;

  • कैप्सूलीकरण - "गेट" और "सेट" विधियों आदि के उपयोग के माध्यम से।
  • विरासत - extends कीवर्ड के उपयोग के माध्यम से
  • बहुरूपता – implements कीवर्ड के उपयोग के माध्यम से

अब हमें OOP का मूल ज्ञान है और यह कैसे समर्थित है PHPआइए हम उपरोक्त सिद्धांतों को लागू करने वाले उदाहरणों पर नज़र डालें

यूएमएल क्या है?

यूनिफाइड मॉडलिंग लैंग्वेज (UML) एक तकनीक है जिसका उपयोग ऑब्जेक्ट ओरिएंटेड सिस्टम को डिजाइन और दस्तावेज करने के लिए किया जाता है।

यूएमएल कई दस्तावेज तैयार करता है, लेकिन हम क्लास डायग्राम पर गौर करेंगे जो ऑब्जेक्ट ओरिएंटेड PHP प्रोग्रामिंग के लिए बहुत महत्वपूर्ण है।

क्लास डायग्राम उदाहरण

उफ़ Concepts PHP में

क्लास आरेख कुंजी

  • RSI ऊपरी बॉक्स इसमें वर्ग का नाम शामिल है
  • RSI मध्य बॉक्स वर्ग चर शामिल हैं
  • RSI निचला बक्सा वर्ग विधियाँ शामिल हैं
  • RSI ऋण (-) संकेत का मतलब निजी दायरा
  • RSI प्लस (+) चिन्ह का अर्थ है सार्वजनिक क्षेत्र
  • RSI हैश (#) चिन्ह का अर्थ है संरक्षित क्षेत्र

PHP में क्लास कैसे बनाएं?

PHP में क्लास को परिभाषित करने के लिए क्लास कीवर्ड का उपयोग किया जाता है। PHP में क्लास बनाने के नियम नीचे दिए गए हैं।

  • कक्षा का नाम किसी अक्षर से शुरू होना चाहिए
  • क्लास का नाम PHP आरक्षित शब्द नहीं हो सकता
  • क्लास नाम में रिक्त स्थान नहीं हो सकते

मान लीजिए कि हम जानवरों का प्रतिनिधित्व करने के लिए एक क्लास बनाना चाहते हैं।

हम सबसे पहले उन विशेषताओं की पहचान करेंगे जो सभी जानवरों में समान हैं।

  • सभी जानवर एक परिवार से संबंधित होते हैं जैसे शाकाहारी, कार्निवल, आदि।
  • सभी जानवर खाना खाते हैं

नीचे दिया गया चित्र जानवर का चित्र दर्शाता है

PHP में क्लास बनाएं

आइये अब अपने एनिमल क्लास को कोड करें

<?php
class Animal
{
    private $family;
    private $food;
    public function __construct($family, $food)
    {
        $this->family = $family;
        $this->food   = $food;
    }
    public function get_family()
    {
        return $this->family;
    }
    public function set_family($family)
    {
        $this->family = $family;
    }
    public function get_food()
    {
        return $this->food;
    }
    public function set_food($food)
    {
        $this->food = $food;
    }
}
?>

यहाँ,

  • "निजी $ परिवार, $ भोजन" का अर्थ है कि चर को सीधे वर्ग के बाहर नहीं पहुँचा जा सकता (एनकैप्सुलेशन)।
  • “public function __construct($family…)” php कन्स्ट्रक्टर विधि है। जब भी क्लास का कोई इंस्टेंस बनाया जाता है, तो इस फ़ंक्शन को कॉल किया जाता है। इस मामले में, हम परिवार और भोजन सेट कर रहे हैं।
  • “पब्लिक फंक्शन get…()” परिवार या खाद्य मूल्य (एनकैप्सुलेशन) तक पहुंचने के लिए उपयोग की जाने वाली विधि है
  • “पब्लिक फंक्शन सेट…()” परिवार या खाद्य मूल्य (एनकैप्सुलेशन) सेट करने के लिए उपयोग की जाने वाली विधि है

PHP में इनहेरिटेंस को कैसे लागू करें?

हम गाय और शेर के साथ काम करेंगे। गाय और शेर दोनों ही Animal क्लास से विरासत में मिले हैं।

नीचे दिया गया वर्ग आरेख संबंधों को दर्शाता है।

PHP में इनहेरिटेंस लागू करें

ध्यान दें कि गाय पशु वर्ग से विरासत में प्राप्त होती है और अपने स्वयं के चर और विधियों को भी परिभाषित करती है।

आइये अब Cow क्लास को कोड करें

<?php
class Cow extends Animal
{
    private $owner;
    public function __construct($family, $food)
    {
        parent::__construct($family, $food);
    }
    public function set_owner($owner)
    {
        $this->owner = $owner;
    }
    public function get_owner()
    {
        return $this->owner;
    }
}
?>

आइये अब Lion क्लास को कोड करें

<?php
class Lion extends Animal
{
    public function __construct($family, $food)
    {
        parent::__construct($family, $food);
    }
}
?>

यहाँ,

  • “class … extends Animal” गाय और शेर को एनिमल वर्ग (विरासत) से विधियों का उपयोग करने के लिए मजबूर करता है।

क्लास का ऑब्जेक्ट कैसे बनाएं

सरलता के लिए पशु, गाय और शेर वर्ग सभी एक ही निर्देशिका में होने चाहिए।

आइए अब वह एप्लिकेशन बनाएं जो हमारी कक्षाओं का उपयोग करता है।

PHP क्लास उदाहरण

<?php
require 'Animal.php';
require 'Cow.php';
require 'Lion.php';
$cow  = new Cow('Herbivore', 'Grass');
$lion = new Lion('Canirval', 'Meat');
echo '<b>Cow Object</b> <br>';
echo 'The Cow belongs to the ' . $cow->get_family() . ' family and eats ' . $cow->get_food() . '<br><br>';
echo '<b>Lion Object</b> <br>';
echo 'The Lion belongs to the ' . $lion->get_family() . ' family and eats ' . $lion->get_food();
?>

हमारे एप्लिकेशन का परीक्षण

आइए अब अपने एप्लिकेशन को वेब ब्राउज़र में देखें

PHP में वंशानुक्रम

बढ़िया है न! चलिए अब OOP के तीसरे सिद्धांत, बहुरूपता पर नज़र डालते हैं।

मान लीजिए कि हम एक ऐसा एप्लिकेशन विकसित करना चाहते हैं जो विभिन्न डेटाबेस इंजनों से जुड़ता हो जैसे MySQL और एसक्यूएल सर्वर लेकिन एक ही समान इंटरफ़ेस का उपयोग करें।

हम एक इंटरफ़ेस बना सकते हैं जो मानक विधियों को परिभाषित करता है और एक अमूर्त वर्ग बना सकते हैं जो सामान्य विधियों को कार्यान्वित करता है।

  • इंटरफेस - यह एक क्लास के समान है। यह केवल विधियों और मापदंडों को परिभाषित करता है।
  • सार वर्ग - यह एक ऐसा वर्ग है जिसका उपयोग सीधे ऑब्जेक्ट बनाने के लिए नहीं किया जा सकता है। इसका उद्देश्य सामान्य विधियों का आंशिक या संपूर्ण कार्यान्वयन प्रदान करना है।

नीचे दिया गया वर्ग आरेख हमारे अमूर्त वर्ग, इंटरफ़ेस और कार्यान्वयन वर्गों के बीच संबंध को दर्शाता है।

PHP में वंशानुक्रम

आइये अब अपना अमूर्त वर्ग बनाएं

<?php
abstract class DBCommonMethods
{
    private $host;
    private $db;
    private $uid;
    private $password;
    public function __construct($host, $db, $uid, $password)
    {
        $this->host     = $host;
        $this->db       = $db;
        $this->uid      = $uid;
        $this->password = $password;
    }
}
?>

यहाँ,

  • "अमूर्त वर्ग" का अर्थ है कि वर्ग का उपयोग सीधे php ऑब्जेक्ट बनाने के लिए नहीं किया जा सकता है
  • “$host,$db…” सभी कार्यान्वयनों के लिए सामान्य वर्ग चर हैं
  • “function __construct(…)” php क्लास कन्स्ट्रक्टर विधि है जो आरंभीकरण के समय सामान्य चर मान सेट करती है

आइए अब वह इंटरफ़ेस बनाएं जिसमें मानक विधियां शामिल हों, जिन्हें डेटाबेस इंजन के आधार पर अलग-अलग तरीके से क्रियान्वित किया जाएगा।

<?php
interface DBInterface
{
    public function db_connect();
    public function insert($data);
    public function read($where);
    public function update($where);
    public function delete($where);
}
?>

यहाँ,

  • “इंटरफ़ेस” इंटरफेस बनाने के लिए कीवर्ड है
  • “सार्वजनिक फ़ंक्शन…(…)” मानक विधियाँ हैं जिन्हें लागू किया जाना चाहिए

आइए अब ठोस क्लासेस बनाएं जो DBCommonMethods क्लास और DBInterface इंटरफ़ेस का विस्तार करेंगे। MySQLड्राइवर.php

<?php class MySQLDriver extends 
DBCommonMethods implements DBInterface { public function __construct($host, $db, $uid, $password) 
{ 
parent::__construct($host, $db, $uid, $password); } 
public function db_connect() { //connect code goes here } 
public function delete($where) { //delete code goes here } 
public function insert($data) { //insert code goes here } 
public function read($where) { //read code goes here } 
public function update($where) { //update code goes here } 
} ?>

MSSQLसर्वरड्राइवर.php

<?php 
class MSSQLServerDriver extends 
DBCommonMethods implements DBInterface { public function __construct($host, $db, $uid, $password)
 { 
 parent::__construct($host, $db, $uid, $password); } 
 public function db_connect() { //connect code goes here } 
 public function delete($where) { //delete code goes here }
 public function insert($data) { //insert code goes here }
 public function read($where) { //read code goes here }
 public function update($where) { //update code goes here }
 } ?>

यहाँ,

  • “class … extends DBCommonMethods” DBCommonMethods में विधियों का उपयोग करें
  • “… DBInterface को कार्यान्वित करता है” यह सुनिश्चित करता है कि क्लास उपयोग किए गए डेटाबेस ड्राइवर की परवाह किए बिना मानक विधियाँ प्रदान करता है।

उपरोक्त कोड का उपयोग उपरोक्त क्लास का उपयोग करने वाला कोड इस तरह दिखेगा

<?php $db = new MySQLDriver($host,$db,$uid,$password); ?>

Or

<?php $db = new MSSQLServerDriver ($host,$db,$uid,$password); ?>

बाकी कोड दोनों ड्राइवरों के लिए समान होगा जैसे;

<?php
$db->db_connect();
$db->insert($data);
?>

सारांश

  • ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग (OOP) एक शक्तिशाली तकनीक है जो वास्तविक दुनिया की वस्तुओं के आधार पर अनुप्रयोगों को मॉडल बनाती है
  • क्लास वास्तविक दुनिया की वस्तुओं का गुणों और विधियों के साथ प्रतिनिधित्व है
  • ओओपी के तीन मूल सिद्धांत हैं;
  • कैप्सूलीकरण
  • विरासत
  • बहुरूपता

इस पोस्ट को संक्षेप में इस प्रकार लिखें: