2012-03-25 7 views
5

में रचना और एकत्रीकरण कैसे लिखें I जावा में संरचना और एकत्रीकरण कोड की पहचान कैसे करना है, मैं जानना चाहता हूं। मेरे पास सी ++ कोड है, लेकिन मुझे समझ में नहीं आता कि जावा में कैसे लिखना है।जावा

संरचना

class A {}; 
class B { A composited_A; }; 

सूचक

के माध्यम से एकत्रीकरण
class A {}; 
class B 
{ 
A* pointer_to_A; 
B(A anA){ 
pointer_to_A = &anA; 
} 

किसी को भी मुझे बता सकते हैं कि कैसे दोनों जावा में काम कर रहे हैं। (मुझे पता है कि संरचना और एकत्रीकरण का क्या अर्थ है) };

उत्तर

8

जावा ही बस संरचना और एकत्रीकरण के बीच भेद नहीं है। आप जावा टाइप सिस्टम में किसी संदर्भ के स्वामित्व के विचार को व्यक्त नहीं कर सकते हैं - यदि आपको स्पष्ट रूप से स्वामित्व व्यक्त करने की आवश्यकता है तो आपको इसे किसी अन्य माध्यम से इंगित करना होगा (आमतौर पर केवल कक्षा के उदाहरण में संग्रहीत करने के लिए एक नई वस्तु का निर्माण करके)।

के बाद से जावा एक जीसी है, स्मृति के लिए स्वामित्व सब पर व्यक्त करने की आवश्यकता नहीं है; स्मृति का स्वामित्व और जीसी द्वारा पूरी तरह से प्रबंधित किया जाता है। बेशक, यह अन्य संसाधनों के लिए भी सच नहीं है और यहां आप अभी भी स्वामित्व व्यक्त करना चाहते हैं।

1

जावा में, ऑब्जेक्ट्स केवल पॉइंटर्स द्वारा संदर्भित होते हैं। इसका मतलब है कि A प्रकार का क्षेत्र वास्तव में A ऑब्जेक्ट का संदर्भ है। इसका यह भी अर्थ है कि वह क्षेत्र हमेशा एक शून्य सूचक के रूप में शुरू होगा, और आपको इसे स्पष्ट रूप से new A() या जो कुछ भी असाइन करना होगा।

संपादित करें:

class B { 
    A a; 

    B(A a) { 
     this.a = a; 
    } 

    B() { 
     this(new A()); 
    } 
} 
+0

धन्यवाद। लेकिन क्या आप जावा कोड में एक उदाहरण प्रदान कर सकते हैं। – Mifas

+0

धन्यवाद। क्या यह एकत्रीकरण है? – Mifas

+0

यह इस बात पर निर्भर करता है कि आप 'ए' का उपयोग कैसे करते हैं। आम तौर पर, यदि इरादा संरचना है, तो आप 'ए' को 'अंतिम' बनाते हैं ताकि यह कभी भी नहीं बदलेगा, और फिर आप सुनिश्चित करेंगे कि इसे कन्स्ट्रक्टर में एक गैर-शून्य मान असाइन किया गया है। यदि इरादा एकत्रीकरण है, तो आप 'ए 'को बदलने के लिए' setA()' विधि प्रदान कर सकते हैं। –

-1

मुझे लगता है कि यह सबसे अच्छा तरीका है जावा कोड के साथ संरचना और एकत्रीकरण व्यक्त करने के लिए है।

संरचना

public class Person 
{ 
    private final Name name; 

    public Person (String fName, String lName) 
    { 
     name = new Name(fName, lName); 
    } 

    //... 
} 

एकत्रीकरण

public class Person 
{ 
    private Costume currentClothes; 

    public void setClothes(Costume clothes) 
    { 
     currentClothes = clothes; 
    } 

    //... 
} 

Source