बेशक आप कर सकते हैं, मैं सोच रहा हूं कि क्या इस तरह से डिजाइन करना तर्कसंगत है।
मैं एक ब्रेकआउट क्लोन बना रहा हूं और कुछ क्लास डिजाइन कर रहा था। मैं विरासत का उपयोग करना चाहता था, भले ही मेरे पास सी ++ में मैंने जो सीखा है, उसे लागू करने के लिए नहीं है। मैं वर्ग डिजाइन के बारे में सोच रहा था और कुछ इस तरह से आया:
GameObject -> बेस क्लास (जिसमें x और y
ऑफ़सेट्स जैसे डेटा मेंबर होते हैं, और SDL_Surface * MovableObject का वेक्टर होता है: GameObject -> एब्स्ट्रैक्ट क्लास + गेमऑब्जेक्ट का क्लास व्युत्पन्न (एक विधि शून्य चाल () = 0;)
NonMovableObject: GameObject -> खाली वर्ग ... कंस्ट्रक्टर और विध्वंसक (अभी कम से कम?) के अलावा कोई विधियाँ या डेटा सदस्य नहीं।
बाद में मैं NonMovableObject से एक वर्ग प्राप्त करने की योजना बना रहा था, जैसे टाइलसेट: NonMovableObject। मैं सोच रहा था कि क्या "खाली" अमूर्त कक्षाएं या सिर्फ खाली कक्षाएं अक्सर उपयोग की जाती हैं ... मुझे लगता है कि जिस तरह से मैं यह कर रहा हूं, मैं सिर्फ वर्गीकरण के लिए नॉनवेजेबल ऑबजेक्ट बना रहा हूं।
मुझे पता है कि मैं केवल एक ब्रेकआउट क्लोन बनाने के लिए चीजों को खत्म कर रहा हूं, लेकिन मेरा ध्यान खेल पर कम और विरासत का उपयोग करने और कुछ प्रकार के गेम ढांचे को डिजाइन करने पर है।
MovableObject
है और न हीNonMovableObject
एक दूसरे से वारिस कर सकते हैं, वे दोनों एक स्थान है, जैसे, वे दोनों को कोड के द्वारा उपभोग्य होना चाहिए जो उदाहरण के लिए किसी वस्तु की ओर एक राक्षस के उद्देश्य को निर्देशित करना चाहता है बिना इस बात के कि वह वस्तु आगे बढ़ सकती है या नहीं।