सी # में, मेरे पास शीर्ष के पास कुछ सार आधार वर्गों और व्युत्पन्न कक्षाओं की एक उचित संख्या के साथ एक श्रेणी पदानुक्रम है। इन कंक्रीट कक्षाओं में कुछ सामान्य गुण और विधियां हैं जो समान रूप से कार्यान्वित की जाती हैं। यह मुझे अपर्याप्त के रूप में मारता है और इसलिए एक सामान्य सार वर्ग में इस सामान्य व्यवहार को लागू करने के लिए एक समाधान हो सकता है।अमूर्त आधार कक्षाओं के विकल्प में आम व्यवहार को लागू करें?
abstract class Control;
abstract class SquareControl: Control
{
public int SquarishProperty;
public void SquarishMethod();
};
class Window: SquareControl;
class Button: SquareControl;
हालांकि, क्या हुआ अगर पदानुक्रम में कई अन्य वर्गों कुछ अन्य व्यवहार साझा लेकिन यह भी एक और आधार वर्ग से नियंत्रणों में से एक के साथ आम में कुछ साझा? शायद समानता के बहुत सारे क्षेत्र हैं। अमूर्त बेस क्लास कार्यान्वयन के साथ इसे मॉडल करने के लिए अव्यवहारिक हो जाएगा?
abstract class FlashableControl: Control
{
public int FlashyProperty;
public void FlashMethod();
};
class StatusBar: FlashableControl; // but it's also a bit square too, hmm...
तो आप कक्षाओं के बिना कक्षाओं में ऐसे कार्यान्वयन को साझा करने के बारे में कैसे जाते हैं?
मुझे लगता है कि मैं एक इंटरफ़ेस के कार्यान्वयन को किसी अन्य वर्ग में प्रतिनिधि बनाना चाहता हूं और उस कक्षा में वांछित कक्षाओं की ओर से उन गुणों और विधियों को लागू करना है, ताकि उपयोगकर्ता को स्टेटसबार और विंडो मानक इंटरफ़ेस का समर्थन करने के लिए दिखाई दे , लेकिन कवर के तहत यह कुछ और है जो इसे लागू करता है।
मैं इस व्यवहार को लागू करने वाले समेकित वर्गों को कल्पना कर सकता हूं, लेकिन क्या यह उचित है और क्या कोई नुकसान है? विकल्प क्या हैं?
धन्यवाद
FlashMethod, SquarishProperty आदि, क्या उनके पास बेस क्लास में ठोस अपूर्णताएं हैं, या वे सार हैं? – SWeko
यहां वे सार तत्व हैं जो मैं नहीं करना चाहता हूं, वास्तविक कार्यान्वयन में मेरे पास कई व्युत्पन्न कक्षाएं हैं जिनमें से कुछ समान कार्यान्वयन साझा करते हैं, न केवल इंटरफ़ेस, बल्कि वास्तविक कोड (गुण और विधियां) समान हैं। – DaBozUK