आप जावा में एक टेट्रिस प्रोग्राम लिख रहे हैं। निम्नलिखित पहलुओं के संबंध में आप अपनी कक्षा के डिजाइन को कैसे स्थापित करेंगे?ओओपी-टेट्रिस के लिए दार्शनिक डिजाइन प्रश्न
- टुकड़ा वर्ग: एक आंतरिक सरणी जो टुकड़ा के आकार को निर्धारित करता है, सात
Piece
कक्षाएं, टुकड़ों में से प्रत्येक के लिए एक होने बनाम साथ, एकPiece
वर्ग है। वे एक सामान्य टुकड़ा वर्ग के सभी उप-वर्ग हैं। - टुकड़ा वर्ग प्रतिनिधित्व:
Block
के 4 उदाहरणों, एक टुकड़ा में से एक वर्ग का प्रतिनिधित्व करने की एक सरणी है, और प्रत्येकBlock
एक 4x4 सरणी होने बनाम बोर्ड पर अपने स्थान (चित्रमय निर्देशांक में) शामिल हैं जहांnull
का मतलब है वहां कोई ब्लॉक नहीं है, और स्थान सरणी के आकार से निर्धारित होता है। - स्थान:
Piece
सरणी में याBoard
सरणी पर प्रत्येकBlock
बनामPiece
इसके स्थान संग्रहीत करता है औरBoard
Blocks
है कि उन्हें शामिल के स्थानों को पता है। - एक टुकड़ा जा रही हैं: टुकड़ा वर्ग
getRandomPiece
की एक स्थिर विधि है, या एकPieceFactory
जो आपको लगता है कि का एक उदाहरण उदाहरण परgenRandomPiece
विधि है बनाते हैं। - वर्तमान टुकड़ा जोड़ तोड़:
Board
वर्ग पर इतना है कि सब कुछ है कि यह करने के लिए उपयोग की जरूरत है सिर्फ प्रॉक्सी का उपयोग करता,Proxy
पैटर्न का उपयोग करें, या एकgetCurrentPiece
विधि और फोन है कि किसी भी समय आप वर्तमान के साथ कुछ करना चाहता हूँ टुकड़ा।
यह होमवर्क नहीं है। मैं सिर्फ कॉलेज में परिचय सीएस कोर्स सिखाता हूं और मैं देखना चाहता हूं कि आम तौर पर लोग क्या मानते हैं। "अच्छा" ओओपी डिजाइन के रूप में क्या सोचा जाएगा? इस तथ्य को अनदेखा करें कि यह एक परिचय पाठ्यक्रम के लिए है - आप कैसे करेंगे?
समुदाय विकी – Malfist
होना चाहिए ये सभी वर्ग और सामान ... यह वास्तव में समस्या के लिए समस्या को बहुत सार बना सकता है। टेट्रिस टुकड़ों का प्रतिनिधित्व करने के कई अलग-अलग तरीके (http://stackoverflow.com/questions/233850/tetris-piece-rotation- एल्गोरिदम) और उन्हें कुशल बनाने के कई अलग-अलग तरीके। यदि यह * परिचय * कोर्स के लिए है तो मैं ओओपी के बारे में चिंता नहीं करता। बस मेरी राय, आपके प्रश्न का असली जवाब नहीं। –
@roygbiv: इस टिप्पणी को एक उत्तर के रूप में पोस्ट करें! मुझे लगता है कि आपके पास ओओ डिज़ाइन पर जोर देने के बजाय डब्ल्यू/गैर-ओओ समाधान की तुलना और विपरीतता के विचार के लिए कम से कम एक या दो कक्षाएं – Claudiu