अपनी स्थापना के बाद से OOP में बहुत बदलाव नहीं हुआ है। इसके कुछ नए कोणों का पता लगाया गया है, लेकिन मूल सिद्धांत अभी भी वही हैं। यदि कुछ भी हो, तो वर्षों से एकत्रित सामूहिक ज्ञान प्रोग्रामर के जीवन को कठिन बनाने के बजाय आसान बनाता है। डिजाइन पैटर्न एक बाधा नहीं हैं; वे मानक समस्याओं के समाधान का एक टूलबॉक्स प्रदान करते हैं, जो वर्षों और अनुभव के वर्षों से आसुत है।
तो यह क्यों है कि आप ओओपी को आज से अधिक जटिल मानते हैं जब आपने इसका उपयोग करना शुरू किया था।
एक कारण यह हो सकता है कि जिस कोड को आप उजागर कर रहे हैं, वह अधिक जटिल हो जाता है - इसलिए नहीं कि ओओपी अधिक जटिल हो गया है, बल्कि इसलिए कि आप सीखने की सीढ़ी पर आगे बढ़ चुके हैं, और बड़े और अधिक जटिल कोड बेस पढ़ने के लिए प्राप्त करते हैं।
एक और कारण यह हो सकता है कि जटिलता प्रतिमान नहीं बदला है, लेकिन एक औसत सॉफ्टवेयर परियोजना का आकार और जटिलता बहुत अच्छी तरह से हो सकती है। दो दशकों से भी कम समय पहले सर्वर पर एक डेवलपर के गीले सपने के कारण, ग्राहक-ग्रेड सेलफोन पर उपलब्ध प्रसंस्करण शक्ति के साथ , आम जनता मूल रूप से सबसे सस्ते थ्रो ऐप और एंट्री-लेवल डेस्कटॉप पीसी के शक्तिशाली होने की उम्मीद कर रही है। 1980 के "सुपरकंप्यूटर" की तुलना में, यह केवल स्वाभाविक है कि स्मॉलटॉक और सी ++ के शुरुआती दिनों से बार उठाया गया है।
और फिर तथ्य यह है कि आधुनिक अनुप्रयोगों में, संगामिति और समानांतरता अपवाद के बजाय आदर्श है, और अनुप्रयोगों को अक्सर विभिन्न मशीनों के बीच संचार करने, प्रोटोकॉल के एक पूरे चिड़ियाघर को पार्स करने और पार्स करने की आवश्यकता होती है। जबकि ओओपी एक संगठनात्मक प्रतिमान के रूप में महान है, इसकी सीमाएं किसी भी अन्य प्रतिमान की तरह हैं: उदाहरण के लिए, यह संक्षिप्तता के लिए बहुत सार प्रदान नहीं करता है (अधिकांश कार्यान्वयन कम या ज्यादा होने के बाद, या पूरी तरह से पुस्तकालयों के लिए आउटसोर्स) , और यह पार्सर्स के निर्माण और डेटा को बदलने के लिए सबसे अच्छा संभव तरीका नहीं है। आधुनिक प्रोग्रामिंग अक्सर ओओपी प्रतिमान की सीमाओं में चलती है, और डिज़ाइन पैटर्न केवल आपको अभी तक ले सकते हैं। (व्यक्तिगत रूप से, मैं इस तथ्य पर विचार करता हूं कि हमें डिजाइन पैटर्न की आवश्यकता है - यदि प्रतिमान ने इन समाधानों को आउट-ऑफ-द-बॉक्स प्रदान किया, तो यह इन समस्याओं के लिए अधिक अभिव्यंजक होगा, और मानक समाधान स्पष्ट होंगे। विधि विरासत का वर्णन करने के लिए कोई डिज़ाइन पैटर्न नहीं है, क्योंकि यह OOP की एक मुख्य विशेषता है; लेकिन एक फैक्ट्री पैटर्न है, क्योंकि OOP, वस्तुओं के निर्माण का एक स्पष्ट प्राकृतिक तरीका नहीं देता है जो बहुरूपिक और पारदर्शी रूप से है।)
इस वजह से, अधिकांश आधुनिक ओओपी भाषाएँ अन्य प्रतिमानों से सुविधाओं को शामिल करती हैं, जो उन्हें अधिक अभिव्यंजक और अधिक शक्तिशाली बनाती हैं, लेकिन अधिक जटिल हैं। C # इसके लिए प्रमुख उदाहरण है: इसकी स्पष्ट OOP जड़ें हैं, लेकिन अन्य प्रतिमानों से उत्पन्न प्रतिनिधियों, घटनाओं, प्रकार के अनुमान, प्रकार के डेटा प्रकार, विशेषताएँ, अनाम फ़ंक्शन, लंबोदर भाव, जेनरिक आदि जैसी विशेषताएं, सबसे विशेष रूप से कार्यात्मक प्रोग्रामिंग हैं। ।