मैं लंबे समय से डेवलपर हूं (मैं 49 वर्ष का हूं) लेकिन ऑब्जेक्ट ओरिएंटेड डेवलपमेंट के लिए नया हूं। मैं बर्ट्रेंड मेयर्स एफिल के बाद से ओओ के बारे में पढ़ रहा हूं, लेकिन वास्तव में बहुत कम ओओ प्रोग्रामिंग किया है।
बिंदु ओओ डिज़ाइन पर हर किताब एक नाव, कार या जो भी सामान्य वस्तु का उपयोग हम अक्सर करते हैं, और वे विशेषताओं और विधियों को जोड़ना शुरू करते हैं, और यह बताते हुए शुरू करते हैं कि वे वस्तु की स्थिति को कैसे मॉडल करते हैं और इसके साथ क्या किया जा सकता है यह।
इसलिए वे आम तौर पर कुछ ऐसा करते हैं जैसे "बेहतर मॉडल जितना बेहतर वह आवेदन में वस्तु का प्रतिनिधित्व करता है और उतना ही बेहतर होता है।"
अब तक बहुत अच्छा है, लेकिन, दूसरी ओर, मैंने कई लेखकों को पाया है कि "एक वर्ग को केवल एक पृष्ठ में फिट होना चाहिए" जैसे व्यंजनों को देते हैं "(मैं क्या मॉनिटर के आकार पर" जोड़ूंगा? अब हम कोशिश करेंगे कि नहीं? कोड प्रिंट करने के लिए!)।
उदाहरण के लिए एक PurchaseOrder
वर्ग लें , जिसमें एक परिमित राज्य मशीन है जो उसके व्यवहार को नियंत्रित करती है और एक संग्रह है PurchaseOrderItem
, यहाँ काम पर एक तर्क यह है कि हमें एक PurchaseOrder
साधारण वर्ग का उपयोग करना चाहिए , कुछ विधियों के साथ (डेटा वर्ग से थोड़ा अधिक), और है एक PurchaseOrderFSM
"विशेषज्ञ वर्ग" जो के लिए परिमित राज्य मशीन को संभालता है PurchaseOrder
।
मैं कहूंगा कि जेफ एटवुड के कोड स्मोल्स के कोडिंग हॉरर पर "फीचर ईर्ष्या" या "अनुचित अंतरंगता" वर्गीकरण में आता है । मैं इसे सामान्य ज्ञान कहूंगा। यदि मैं अपने वास्तविक खरीद आदेश को जारी कर सकता हूं, अनुमोदित कर सकता हूं या रद्द कर सकता हूं, तो PurchaseOrder
कक्षा होनी चाहिए issuePO
, approvePO
और cancelPO
विधियां।
क्या यह "अधिकतम सामंजस्य" और "पुराने युगलों को कम करने वाले" पुराने सिद्धांतों के साथ नहीं जाता है जिन्हें मैं OO के कोने के रूप में समझता हूं?
इसके अलावा, क्या यह कक्षा की स्थिरता को बनाए रखने में मदद नहीं करता है?
PurchaseOrder
है, तो आप सिर्फ अपने तरीकों नाम दे सकते हैंissue
,approve
, औरcancel
।PO
प्रत्यय केवल नकारात्मक मूल्य कहते हैं।