2013-12-10 7 views
7

मैं एक अंतरफलक है का कहना है किकैसे यूएमएल वर्ग रेखाचित्र में कॉलबैक का प्रतिनिधित्व करने के

Interface ICallback { 
    public void informFunction(); 
} 

मैं एक कक्षा है कहते हैं:

Class Implementation implements ICallback { 

    public Implementation() { 
     new AnotherImplementation(this); 
    } 

    @override 
    public void informFunction() { 
     // do something 
    } 

} 

अब एक वर्ग जहां कक्षा कार्यान्वयन के उदाहरण में के रूप में पारित हो जाता है पर विचार एक इंटरफेस और कॉलबैक बनाने के लिए प्रयोग किया जाता है।

Class AnotherImplementation { 
    public ICallback mCallback; 

    public AnotherImplementation(ICallback callback) { 
     mCallback = callback; 
    } 

    public void testFunction() { 
    mCallback.informFunction(); // Callback 
    } 
} 

अब मैं जानना चाहता हूं कि मैं एक यूएमएल कक्षा आरेख कैसे डिजाइन कर सकता हूं। सबसे महत्वपूर्ण बात यह है कि मुझे कॉलबैक फ़ंक्शनैलिटी का प्रतिनिधित्व करने की आवश्यकता है जो क्लास एक और कार्यान्वयन :: testFunction() में होगा।

उत्तर

16

आपका कोड निम्नलिखित वर्ग चित्र में प्रतिनिधित्व किया है:

enter image description here

यह वर्गों के बीच रिश्तों का प्रतिनिधित्व करता है:

  • Implementation लागू करता ICallback
  • ImplementationAnotherImplementation पर निर्भर करता है (यह अपने कन्स्ट्रक्टर में से एक बनाता है)
  • AnotherImplementation एक ICallback (mCallback नामित)

एक वर्ग आरेख का प्रतिनिधित्व नहीं करता विधि कार्यक्षमता है। विधि कार्यक्षमता अनुक्रम या सहयोग आरेख के साथ कल्पना की जाती है।

अपने उदाहरण में, testFucntion() के लिए अनुक्रम आरेख बहुत सरल है:

sequence diagram

ध्यान दें कि Implementation वर्ग अनुक्रम आरेख में प्रदर्शित नहीं करता है। ऐसा इसलिए होता है क्योंकि mCallback सदस्य ICallback के रूप में घोषित किया जाता है। यह कुछ भी हो सकता है जो ICallback इंटरफ़ेस लागू करता है।

मुझे लगता है कि अधिक दिलचस्प सवाल यह है कि कॉलबैक को ट्रिगर करने वाली विधि को कैसे विज़ुअलाइज़ किया जाए। आप Implementation की testFunction()AnotherImplementation की विधि का उल्लेख नहीं करते हैं, इसलिए मुझे लगता है कि यह Implementation के निर्माता के अंदर होता है। मैं इस निर्माता के लिए निम्नलिखित अनुक्रम आरेख बनाया:

callback sequence

यहाँ आप देख सकते हैं:

  1. ImplementationAnotherImplementation
  2. ImplementationAnotherImplementation
  3. AnotherImplementation पर testFunction invokes बनाता Implementation पर informFunction का आह्वान
संबंधित मुद्दे