प्रशिक्षण

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंगची 5 तत्त्वे काय आहेत याकडे लक्ष द्या

ऑब्जेक्ट-देणारं डिझाइन (ओओडी किंवा ओओपी) च्या पाच तत्त्वांचा संदर्भ घेऊन सोलिड एक परिवर्णी शब्द आहे. हे मार्गदर्शक तत्वे आहेत जे विकासक सॉफ्टवेअर तयार करण्यासाठी वापरू शकतात जे व्यवस्थापित करणे, देखभाल करणे आणि वाढविणे सोपे आहे. या संकल्पना समजून घेतल्यामुळे आपल्याला एक चांगले विकसक बनू शकेल आणि सॉफ्टवेअर व्यवस्थापनातील समस्या टाळण्यास मदत होईल. चांगला प्रोग्रामर असणे म्हणजे काय?

सॉफ्टवेअर प्रोग्रामिंगचा काही अनुभव असलेला कोणीही आपल्या करिअरच्या मार्गावर आधारित न्यायाधीश पॅरामीटर्स वापरुन, इतरांनी लिहिलेला सॉफ्टवेअर कोड न्यायाधीश करतो.

माझ्या व्यावसायिक कारकिर्दीत मी बर्‍याच विकसकांना ओळखतो आणि मी कोड्यांच्या हजारो ओळी पाहिल्या आहेत आणि जेव्हा विकसकाच्या कौशल्याचे मूल्यांकन करण्याची आवश्यकता असते तेव्हा मी मुख्यतः दोन घटकांकडे पाहतो:

  • कोड वाचण्यात साधेपणा;
  • त्यांची संहिता वेळोवेळी कार्य करण्याची आणि विकसित होण्याची किती शक्यता आहे.

सुदैवाने, अशी काही मूलभूत तत्त्वे किंवा तत्त्वे आहेत जी कोडींगमध्ये अधिक सुलभ बनवतात.

परिवर्णी शब्द SOLID याचा अर्थ:
S: एकच जबाबदारी तत्त्व
O: मुक्त-बंद तत्त्व
L: लिस्कोव्ह बदलण्याचे तत्व
I: इंटरफेस वेगळा करण्याचे तत्व
D: अवलंबित्व उलटा करण्याचे सिद्धांत

प्रथम SOLID तत्त्व म्हणजेच

एकच जबाबदारी तत्त्व

वर्ग (किंवा विभाग) विकसित होण्यासाठी फक्त बदलण्याचे एक कारण असू शकते.

संकल्पना स्वतःच अगदी सोपी आहे, परंतु ही साधेपणा साध्य करण्यासाठी अंमलबजावणीचा मार्ग खूप क्लिष्ट होऊ शकतो. वर्ग बदलण्यासाठी फक्त एकच कारण असावे.

पण का? 

फक्त एकच कारण बदलण्याचे कारण इतके महत्वाचे का आहे?

उदाहरणार्थ, बदलण्याकरिता दोन भिन्न कारणे असल्यास, दोन भिन्न कार्यसंघ दोन भिन्न कारणांमुळे समान कोडवर कार्य करू शकतात हे समजण्यासारखे आहे. प्रत्येकाला त्यांचे स्वतःचे निराकरण अंमलात आणावे लागेल, जे संकलित भाषेच्या बाबतीत (जसे की सी ++, सी # किंवा जावा) मोड्यूल्स होऊ शकते जे इतर कार्यसंघ किंवा अनुप्रयोगाच्या इतर भागांशी विसंगत आहेत.

दुसरे उदाहरण, जर आपण दुभाषित भाषा वापरत असाल तर आपल्याला वेगवेगळ्या कारणांसाठी समान वर्ग किंवा मॉड्यूलची परीक्षा घ्यावी लागेल. यात गुणवत्ता नियंत्रणासाठी अधिक काम, वेळ आणि प्रयत्न यांचा समावेश आहे.

वर्ग किंवा मॉड्यूलचे एक वैशिष्ट्य ओळखणे केवळ चाचण्या चालविण्यासाठी चेकलिस्टकडे पाहण्यापेक्षा बरेच अवघड आहे. 

परंतु आपण अगदी कमी तांत्रिक दृष्टिकोनातून विचार करण्याचा प्रयत्न करूया, म्हणजे आपल्या वर्ग किंवा मॉड्यूलच्या वापरकर्त्याचे विश्लेषण करण्याचा प्रयत्न करूया, तोच याचा उपयोग कोण करेल. एक मूलभूत पैलू जी आपण नेहमी लक्षात ठेवली पाहिजे, ती म्हणजे आपण विकसित केलेला अनुप्रयोग किंवा सिस्टम ज्या विशिष्ट मॉड्यूलद्वारे सेवा दिली आहेत त्यांचे वापरकर्ते त्यामध्ये बदल करण्याची विनंती करणारे असतील. ते दिलेला वर्ग किंवा विभाग बदलण्यास सांगेल. 

मॉड्यूल आणि त्यांच्या वापराची काही उदाहरणे:

  • देखभाल विभाग: वापरकर्ता डेटाबेस प्रशासक आणि सॉफ्टवेअर आर्किटेक्टचा बनलेला आहे.
  • रिपोर्टिंग मॉड्यूल: वापरकर्ता कार्यालयीन कामगार, लेखापाल आणि उत्पादनांचा बनलेला आहे.
  • वेतनपट व्यवस्थापन प्रणालीसाठी देयक गणना मॉड्यूल: वापरकर्त्यांमध्ये वकील, व्यवस्थापक आणि लेखापाल समाविष्ट होऊ शकतात.
  • लायब्ररी व्यवस्थापन प्रणालीसाठी मजकूर शोध विभाग: वापरकर्त्याचे लायब्ररीयन किंवा अभ्यागत आणि ग्रंथालयाच्याच ग्राहकांकडून प्रतिनिधित्व केले जाऊ शकते.

म्हणून जर पहिला चरण मॉड्यूलमध्ये संवाद साधणार्‍याची भूमिका असणारा अभिनेता किंवा अभिनेता शोधणे असेल तर, सर्व भूमिकांमध्ये व्यक्तींना जोडणे कठीण आहे. एका छोट्या कंपनीत एक व्यक्ती एकाधिक भूमिका निभावू शकते तर मोठ्या कंपनीत एक भूमिका असणारे अनेक लोक असू शकतात. 

लोक किंवा वापरकर्त्यांऐवजी भूमिका ओळखणे अधिक वाजवी वाटते.

म्हणून:

  • सॉफ्टवेअर प्रणालीचा वापर defiबदलाची कारणे स्पष्ट करते;
  • एक जबाबदारी म्हणजे कार्ये एक कुटुंब जे विशिष्ट अभिनेत्याच्या गरजा भागवते, म्हणजेच, सिस्टमच्या वापरकर्त्याची;
  • अभिनेते, कार्यक्षमतेच्या कुटुंबासाठी वापरकर्ता बदलण्याचे स्त्रोत बनते ज्याने वापरकर्त्याची आवश्यकता पूर्ण केली पाहिजे;
  • वापरकर्त्याची उत्क्रांती, कार्यक्षमतेचे उत्क्रांती चालवते;

चला काही उदाहरणे पाहूया

समजा आपल्याकडे एखादा बुक क्लास आहे जो पुस्तकाची संकल्पना आणि त्याची कार्यक्षमता समेटित करतो.

वर्ग पुस्तक {

    फंक्शन getTitle () {

        “एक उत्तम पुस्तक” परत;

    }

    फंक्शन getAuthor () {

        “अ‍ॅलेसॅन्ड्रो बॅरिको” परत करा;

    }

    कार्य पुढील पृष्ठ () {

        // पुढील पृष्ठ

    }

    फंक्शन प्रिंटकंटरपेज () {

        एको “वर्तमान पृष्ठाची सामग्री”;

    }

}

हा एक अतिशय सामान्य वर्ग आहे. आमच्याकडे एक पुस्तक आहे, आणि वर्ग आम्हाला शीर्षक देऊ शकेल, ते आम्हाला लेखक देऊ शकतात आणि ते पुढे जाऊ शकतात. शेवटी, ते वर्तमान पृष्ठ स्क्रीनवर मुद्रित करण्यास देखील सक्षम आहे. 

तथापि, एक छोटी समस्या आहे. 

बुक ऑब्जेक्टच्या व्यवस्थापनात गुंतलेल्या कलाकारांबद्दल विचार करता, ते कोण असू शकतात? 

आम्ही येथे दोन भिन्न कलाकारांचा सहज विचार करू शकतो: पुस्तक व्यवस्थापन (म्हणून ग्रंथपाल) आणि डेटा सबमिशन यंत्रणा (जसे की आम्ही वापरकर्त्यास सामग्री कशी वितरित करू इच्छितो: ऑन-स्क्रीन, ग्राफिकल यूजर इंटरफेस, मजकूर-केवळ वापरकर्ता इंटरफेस, कदाचित मुद्रण). 

आमच्याकडे म्हणून दोन अतिशय भिन्न कलाकार वर्गात संवाद साधत आहेत.

थोडक्यात हा वर्ग यामध्ये मिसळतो:

  • सह व्यवसाय तर्क 
  • प्रदर्शन 

ही समस्या असू शकते कारण ते सिंगल लायबिलिटी तत्त्व (एसआरपी) चे उल्लंघन करते. 

एकल जबाबदारीच्या तत्त्वाचा आदर करण्यासाठी आपण ही संहिता कशी सुधारू शकतो?

पुढील कोड पहा:

वर्ग पुस्तक {

    फंक्शन getTitle () {

        "ओशिनो मारे" परत;

    }

    फंक्शन getAuthor () {

        “अ‍ॅलेसॅन्ड्रो बॅरिको” परत करा;

    }

    फंक्शन टर्न पेज () {

        // पुढील पृष्ठ

    }

    फंक्शन getCurrentPage () {

        एको “वर्तमान पृष्ठाची सामग्री”;

    }

}

इंटरफेस प्रिंटर

    फंक्शन प्रिंटपेज ($ पृष्ठ);

इनोव्हेशन वृत्तपत्र
नवोपक्रमावरील सर्वात महत्त्वाच्या बातम्या चुकवू नका. त्यांना ईमेलद्वारे प्राप्त करण्यासाठी साइन अप करा.

}

क्लास स्टँपलाइब्रो प्रिंटरची अंमलबजावणी करते {

    फंक्शन प्रिंटपेजेस ($ पृष्ठ) {

        प्रतिध्वनी

    }

}

 

वर्ग एचटीएमएलप्रिंटर प्रिंटर लागू करतो {

    फंक्शन प्रिंटपेजेस ($ पृष्ठ) {

        प्रतिध्वनी '. . पृष्ठ ' ';

    }

}

हे अगदी सोप्या उदाहरणात दिसते की व्यवसायाच्या तार्किकतेपासून सादरीकरण कसे वेगळे करावे आणि एसआरपीच्या अनुपालनात हे आमच्या प्रकल्पाच्या लवचिकतेमध्ये चांगले फायदे देतात.

दुसरे उदाहरण पाहूया:

जेव्हा एखादी वस्तू स्वतःला सादरीकरणातून जतन आणि पुनर्प्राप्त करू शकते तेव्हा वरील प्रमाणेच एक उदाहरण आहे.

वर्ग पुस्तक {

    फंक्शन getTitle () {

        "ओशिनो मारे" परत;

    }

    फंक्शन getAuthor () {

        “अ‍ॅलेसॅन्ड्रो बॅरिको” परत करा;

    }

    फंक्शन टर्न पेज () {

        // पुढील पृष्ठ

    }

    फंक्शन getCurrentPage () {

        "वर्तमान पृष्ठाची सामग्री" परत करा;

    }

    फंक्शन सेव्ह () {

        $ फाइलनाव = '/ दस्तऐवज /'. $ हे-> getTitolo (). '-'. $ हे-> getAuthor ();

        file_put_contents ($ फाइलनाव, अनुक्रमांक ($ हे));

    }

}

पूर्वीप्रमाणेच येथेही आम्ही वेगवेगळ्या कलाकारांना ओळखू शकतो पुस्तक व्यवस्थापन (म्हणून ग्रंथपाल) आणि चिकाटी. जेव्हा जेव्हा आपल्याला पृष्ठावरून पृष्ठाकडे जाणारा मार्ग बदलायचा असतो तेव्हा आपल्याला हा वर्ग बदलण्याची आवश्यकता असते. आपल्याकडे परिवर्तनाची अनेक कारणे असू शकतात.

वर्ग पुस्तक {

    फंक्शन getTitle () {

        "ओशिनो मारे" परत;

    }

    फंक्शन getAuthor () {

        “अ‍ॅलेसॅन्ड्रो बॅरिको” परत करा;

    }

    फंक्शन टर्न पेज () {

        // पुढील पृष्ठ

    }

    फंक्शन getCurrentPage () {

        "वर्तमान पृष्ठाची सामग्री" परत करा;

    }

}

वर्ग सिंपलफाइलपर्सिटी {

    फंक्शन सेव्ह (बुक $ बुक)

        $ फाइलनाव = '/ दस्तऐवज /'. $ book-> getTitle (). '-'. $ book-> getAuthor ();

        file_put_contents ($ फाइलनाव, अनुक्रमांक ($ पुस्तक));

    }

}

चिकाटी ऑपरेशन दुसर्‍या वर्गाकडे हलविण्यामुळे जबाबदा clearly्या स्पष्टपणे स्वतंत्र होतील आणि आम्ही आमच्या बुक वर्गावर परिणाम न करता चिकाटीच्या पद्धतींची देवाणघेवाण करण्यास मुक्त आहोत. उदाहरणार्थ, डेटाबेसपर्सिस्ट क्लासची अंमलबजावणी करणे क्षुल्लक असेल आणि बुक ऑपरेशन्सभोवती तयार केलेला आमचा व्यवसाय तर्क बदलणार नाही.

द्वितीय तत्व उघडा / बंद -> वाचून सुरू ठेवा

Ercole Palmeri

इनोव्हेशन वृत्तपत्र
नवोपक्रमावरील सर्वात महत्त्वाच्या बातम्या चुकवू नका. त्यांना ईमेलद्वारे प्राप्त करण्यासाठी साइन अप करा.

अलीकडील लेख

Veeam मध्ये रॅन्समवेअरसाठी सर्वात व्यापक समर्थन, संरक्षणापासून प्रतिसाद आणि पुनर्प्राप्तीपर्यंत वैशिष्ट्ये आहेत

Veeam द्वारे Coveware सायबर खंडणी घटना प्रतिसाद सेवा प्रदान करणे सुरू ठेवेल. Coveware फॉरेन्सिक आणि उपाय क्षमता प्रदान करेल…

23 एप्रिल 2024

हरित आणि डिजिटल क्रांती: भविष्यसूचक देखभाल तेल आणि वायू उद्योगात कशी बदल घडवत आहे

वनस्पती व्यवस्थापनासाठी नाविन्यपूर्ण आणि सक्रिय दृष्टीकोनसह, भविष्यसूचक देखभाल तेल आणि वायू क्षेत्रात क्रांती घडवत आहे.…

22 एप्रिल 2024

यूके अँटिट्रस्ट रेग्युलेटरने GenAI वर BigTech अलार्म वाढवला

UK CMA ने आर्टिफिशियल इंटेलिजन्स मार्केटमध्ये बिग टेकच्या वर्तनाबद्दल चेतावणी जारी केली आहे. तेथे…

18 एप्रिल 2024

कासा ग्रीन: इटलीमध्ये शाश्वत भविष्यासाठी ऊर्जा क्रांती

इमारतींची उर्जा कार्यक्षमता वाढविण्यासाठी युरोपियन युनियनने तयार केलेल्या "ग्रीन हाऊसेस" डिक्रीने त्याची वैधानिक प्रक्रिया पूर्ण केली आहे ...

18 एप्रिल 2024

तुमच्या भाषेत इनोव्हेशन वाचा

इनोव्हेशन वृत्तपत्र
नवोपक्रमावरील सर्वात महत्त्वाच्या बातम्या चुकवू नका. त्यांना ईमेलद्वारे प्राप्त करण्यासाठी साइन अप करा.

आमचे अनुसरण करा