एक बार पहले मैंने विरासत के बारे में स्टैक ओवरफ्लो पर एक प्रश्न पूछा था ।
मैंने कहा है कि मैं OOP फैशन में शतरंज का इंजन डिजाइन करता हूं। इसलिए मुझे अपने सभी टुकड़े पीस एब्स्ट्रैक्ट क्लास से विरासत में मिले लेकिन विरासत अभी भी है। मुझे कोड करके दिखाओ
public abstract class Piece
{
public void MakeMove();
public void TakeBackMove();
}
public abstract class Pawn: Piece {}
public class WhitePawn :Pawn {}
public class BlackPawn:Pawn {}
प्रोग्रामर को मेरा डिज़ाइन इंजीनियरिंग से थोड़ा सा मिल गया है और नीचे की तरह एक संपत्ति के सदस्य के रूप में रंगीन रंग की कक्षाएं हटाने और टुकड़ा रंग धारण करने का सुझाव दिया गया है।
public abstract class Piece
{
public Color Color { get; set; }
public abstract void MakeMove();
public abstract void TakeBackMove();
}
इस तरह से टुकड़ा उसका रंग जान सकता है। कार्यान्वयन के बाद मैंने देखा कि मेरा कार्यान्वयन नीचे की तरह हो जाता है।
public abstract class Pawn: Piece
{
public override void MakeMove()
{
if (this.Color == Color.White)
{
}
else
{
}
}
public override void TakeBackMove()
{
if (this.Color == Color.White)
{
}
else
{
}
}
}
अब मैं देख रहा हूं कि कार्यान्वयन में बयानों के कारण रंग संपत्ति को बनाए रखें। यह मुझे लगता है कि हमें विरासत के पदानुक्रम में विशिष्ट रंग के टुकड़े की आवश्यकता है।
ऐसे में क्या आपके पास व्हाइटपॉन, ब्लैकपॉन जैसी कक्षाएं होंगी या आप कलर प्रॉपर्टी रखकर डिजाइन करने जाएंगे?
इस तरह की समस्या को देखे बिना आप डिजाइन कैसे शुरू करना चाहेंगे? रंग संपत्ति रखें या वंशानुक्रम समाधान करें?
संपादित करें: मैं यह निर्दिष्ट करना चाहता हूं कि मेरा उदाहरण वास्तविक जीवन के उदाहरण से पूरी तरह मेल नहीं खा सकता है। इसलिए कार्यान्वयन विवरण का अनुमान लगाने से पहले सिर्फ सवाल पर ध्यान केंद्रित करें।
मैं वास्तव में केवल यह पूछ रहा हूं कि क्या विरासत में उपयोग करने के लिए स्टेटमेंट का उपयोग करने के लिए कलर प्रॉपर्टी का उपयोग करना बेहतर होगा?