इनहेरिटेंस इम्प्लीमेंटेशन की मेरी वर्तमान समझ यह है कि आईएस-ए रिलेशन मौजूद होने पर ही किसी वर्ग का विस्तार करना चाहिए । यदि माता-पिता वर्ग आगे और अधिक विशिष्ट प्रकार के साथ अधिक विशिष्ट प्रकार के बच्चे रख सकते हैं, लेकिन माता-पिता में अमूर्त तत्वों को साझा करेंगे।
मैं यह समझने पर सवाल कर रहा हूं कि मेरे जावा प्रोफेसर ने हमें क्या करने की सिफारिश की है। उन्होंने सिफारिश की है कि एक JSwing
आवेदन के लिए हम कक्षा में निर्माण कर रहे हैं
सभी JSwing
वर्गों ( JFrame
और JButton
, JTextBox
आदि) को अलग-अलग कस्टम वर्गों में विस्तारित करना चाहिए और उन में GUI संबंधित अनुकूलन निर्दिष्ट करना चाहिए (जैसे घटक आकार, घटक लेबल, आदि)
अब तक बहुत अच्छा है, लेकिन वह आगे सलाह देने के लिए आगे बढ़ता है कि हर JButton का अपना कस्टम विस्तारित वर्ग होना चाहिए, भले ही एकमात्र विशिष्ट कारक उनका लेबल हो।
उदाहरण के लिए यदि GUI में दो बटन ठीक हैं और रद्द करें । उन्होंने कहा कि वे नीचे के रूप में बढ़ाया जाना चाहिए:
class OkayButton extends JButton{
MainUI mui;
public OkayButton(MainUI mui) {
setSize(80,60);
setText("Okay");
this.mui = mui;
mui.add(this);
}
}
class CancelButton extends JButton{
MainUI mui;
public CancelButton(MainUI mui) {
setSize(80,60);
setText("Cancel");
this.mui = mui;
mui.add(this);
}
}
जैसा कि आप देख सकते हैं कि setText
फ़ंक्शन में एकमात्र अंतर है ।
तो क्या यह मानक अभ्यास है?
Btw, जिस पाठ्यक्रम पर चर्चा की गई, उसे जावा में बेस्ट प्रोग्रामिंग प्रैक्टिस कहा जाता है
[प्रो से जवाब]
इसलिए मैंने प्रोफेसर के साथ समस्या पर चर्चा की और उत्तर में वर्णित सभी बिंदुओं को उठाया।
उनका औचित्य यह है कि GUI डिजाइन मानकों का पालन करते हुए उपवर्ग पुन: प्रयोज्य कोड प्रदान करता है। उदाहरण के लिए यदि डेवलपर ने एक विंडो में कस्टम Okay
और Cancel
बटन का उपयोग किया है , तो अन्य विंडोज में भी उसी बटन को रखना आसान होगा।
मुझे लगता है कि मुझे लगता है कि कारण है, लेकिन अभी भी यह सिर्फ विरासत का शोषण कर रहा है और कोड को नाजुक बना रहा है।
बाद में, कोई भी डेवलपर गलती से setText
एक Okay
बटन पर कॉल कर सकता है और इसे बदल सकता है। उपवर्ग केवल उस मामले में उपद्रव बन जाता है।
JButton
अपने विधायक में सार्वजनिक विधियों का विस्तार और कॉल क्यों करें, जब आपJButton
क्लास के बाहर केवल उन्हीं सार्वजनिक तरीकों को बना सकते हैं और कॉल कर सकते हैं ?