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

घन घन भूमितीय आकडेवारी
प्रशिक्षण
1

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

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

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

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

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

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

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

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

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

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

पण का? 

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

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

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

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

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

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

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

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

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

म्हणून:

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

ठोस तत्त्वे

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

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

वर्ग पुस्तक {

    फंक्शन getTitle () {

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

    }

    फंक्शन getAuthor () {

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

    }

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

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

    }

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

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

    }

}

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

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

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

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

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

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

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

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

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

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

वर्ग पुस्तक {

    फंक्शन getTitle () {

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

    }

    फंक्शन getAuthor () {

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

    }

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

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

    }

    फंक्शन getCurrentPage () {

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

    }

}

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

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

}

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

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

        प्रतिध्वनी

    }

}

 

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

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

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

    }

}

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

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

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

वर्ग पुस्तक {

    फंक्शन getTitle () {

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

    }

    फंक्शन getAuthor () {

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

    }

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

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

    }

    फंक्शन getCurrentPage () {

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

    }

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

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

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

    }

}

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

वर्ग पुस्तक {

    फंक्शन getTitle () {

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

    }

    फंक्शन getAuthor () {

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

    }

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

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

    }

    फंक्शन getCurrentPage () {

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

    }

}

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

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

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

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

    }

}

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

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

1 भाष्य

Lascia एक commento

तुमचा ईमेल पत्ता प्रकाशित होणार नाही. मी मुलाखत घेण्याऐवजी मुलाखत *

लिस्कोव्ह तत्व
प्रशिक्षण
लिस्कोव्ह सबस्टिट्यूशनचे तत्व, तिसरे सोलिड तत्व

बाल वर्गाने कधीही पालक वर्गाच्या प्रकारच्या परिभाषांवर परिणाम करु नये किंवा बदलू नये. या तत्त्वाची संकल्पना बार्बरा लिस्कोव्ह यांनी १ conference 1987 च्या परिषदेत दिली होती आणि त्यानंतर १ 1994 with in मध्ये जेनेट विंगसमवेत एका लेखात प्रकाशित केली होती. त्यांची मूळ व्याख्या…

गूगल विपणन ट्रेंड
प्रशिक्षण
रीअल-टाइम विपणनासाठी Google ट्रेंड कसे वापरावे

२०२० मध्ये कंपन्यांसमोर एक मोठी अडचण समजून घेणे हे होते की कोणत्या उत्पादनाच्या क्षेत्रांमध्ये त्यांचा व्यवसाय विविधता आणता येईल: खरं तर, बर्‍याच औद्योगिक क्षेत्रांमध्ये प्रचंड दडपणाचा सामना करावा लागला आहे ज्यामुळे कंपन्या त्यांच्यात प्रवेश करणे जवळजवळ अशक्य झाले आहेत, विशेषत: नवीन खेळाडू म्हणून. खूप कमी उत्पादन क्षेत्रे ...

व्यवसाय बुद्धिमत्ता धोरण
पद्धती
यशस्वी व्यवसाय बुद्धिमत्तेची रणनीती

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