एकत्रीकरण बनाम रचना


205

मैं समझता हूं कि ओओपी में कौन सी रचना है, लेकिन मुझे इस बात का स्पष्ट पता नहीं चल पा रहा है कि एग्रीगेशन क्या है। क्या कोई समझा सकता है?

जवाबों:


321

सरल नियम:

  1. A "स्वामी" B = संरचना: B का A के बिना सिस्टम में कोई अर्थ या उद्देश्य नहीं है
  2. A "उपयोग करता है" B = एकत्रीकरण: B, A से स्वतंत्र रूप से (वैचारिक रूप से) मौजूद है

उदाहरण 1:

एक कंपनी लोगों का एक एकत्रीकरण है। एक कंपनी लेखा की एक रचना है। जब कोई कंपनी अपने खाते का कारोबार करना बंद कर देती है तो उसका अस्तित्व समाप्त हो जाता है लेकिन उसके लोग मौजूद रहते हैं।

उदाहरण 2: (बहुत सरलीकृत)

एक पाठ संपादक एक बफर (रचना) का मालिक है। एक पाठ संपादक एक फ़ाइल (एकत्रीकरण) का उपयोग करता है। जब पाठ संपादक बंद हो जाता है, तो बफर नष्ट हो जाता है लेकिन फ़ाइल स्वयं नष्ट नहीं होती है।


11
तो क्या कार एग्रीगेट या उसके पुर्जों की रचना है?
रीइनियरियरपोस्ट

2
और एकत्रीकरण दो प्रकार की संस्थाओं के बीच किसी अन्य संबंध से अलग कैसे है?
रीइनियरियरपोस्ट

55
@reinierpost वास्तव में , एक कार भागों का एक एकत्रीकरण है, और भागों बस अणुओं का एक एकत्रीकरण है ... हालांकि, एक मॉडल में यह सब आपकी आवश्यकताओं पर निर्भर करता है। क्या इंजन को एक अलग इकाई के रूप में व्यवहार करना महत्वपूर्ण है ताकि आप कार से अपने जीवनकाल को स्वतंत्र रूप से ट्रैक कर सकें? क्या आप किसी अन्य कार में ठीक उसी इंजन का पुनः उपयोग कर सकते हैं? यदि हां, तो आप शायद एकत्रीकरण चाहते हैं। अन्यथा आप एक रचना चाहते हैं क्योंकि आप उन इंजनों की परवाह नहीं करते हैं जो कारों का हिस्सा नहीं हैं, और न ही आप इंजनों के पुन: उपयोग की परवाह करते हैं।
कर्टिस बैट

3
क्या याद आ रही है एक पूरी समझ के लिए एक कार्यान्वयन उदाहरण है ...
चेसनोकोव यूरी

1
जब कोई कंपनी व्यवसाय करना बंद कर देती है तो कर्मचारी के बारे में क्या? कर्मचारी और लोग अलग-अलग संस्थाएँ सही हैं? तो क्या मैं कह सकता हूं कि कंपनी कर्मचारियों की रचना है?
अर्जुन

36

से http://en.wikipedia.org/wiki/Object_composition

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

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

-

अद्यतन: क्षमायाचना - यह उत्तर अभी तक बहुत सरल है।

c.batt उनके उत्तर में एक उत्कृष्ट परिभाषा प्रदान करता है: एकत्रीकरण बनाम रचना


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

1
इसका विनाश से कोई लेना-देना नहीं है! यूएमएल कचरा संग्रहण प्रणाली को परिभाषित नहीं करता है।
प्रदर्शित नाम

2
मुझे लगता है कि विकिपीडिया लिंक को रिफ्लेक्टिव अपवोट मिल रहा है, लेकिन यह एक भयानक परिभाषा है - जैसा कि @bold ने बताया कि इन रिश्तों का GC से कोई लेना-देना नहीं है। यह तब भी अलग हो जाता है जब कोई वस्तु दो अन्य वस्तुओं का घटक होती है, जैसे कि गेंद में गेंद दो कृत्रिम अंगों को मिलाना। घटक संबंध कार्यात्मक निर्भरता के बारे में है।
स्टीवन ए। लोव

1
मैं मानता हूं कि मेरे जवाब में बहुत कमी है - लेकिन
विकीपीडिया

रचना और एकत्रीकरण के बीच का अंतर स्पष्ट है। एकत्रीकरण के साथ समस्या यह है कि यह स्पष्ट नहीं है कि यह सामान्य संघ से कैसे अलग है।
रीइन्टीरियरपोस्ट

20

एक भी स्पष्टीकरण नहीं है। अलग-अलग लेखकों का मतलब एकत्रीकरण द्वारा अलग-अलग चीजों से है। अधिकांश वास्तव में इसके द्वारा कुछ भी विशिष्ट मतलब नहीं है।


4
यह सही जवाब है। मैंने इसे दो पुस्तकों में पढ़ा है, उनमें से एक मार्टिन फाउलर का यूएमएल डिस्टिल्ड है
दाविदस्किंस


16
  • रचना एक एसोसिएशन है

  • एकत्रीकरण एक एसोसिएशन है

  • रचना एक मजबूत एसोसिएशन है (यदि निहित वस्तु का जीवन पूरी तरह से कंटेनर ऑब्जेक्ट पर निर्भर करता है, तो इसे मजबूत एसोसिएशन कहा जाता है)

  • एकत्रीकरण एक कमजोर एसोसिएशन है (यदि निहित वस्तु का जीवन कंटेनर ऑब्जेक्ट पर निर्भर नहीं करता है, तो इसे कमजोर एसोसिएशन कहा जाता है)

उदाहरण:

class Contained {
    public void disp() {
        System.out.println("disp() of Contained A");
    }
}

public class Container {
    private Contained c;

    //Composition
    Container() {
        c = new Contained(); 
    }

    //Association 
    public Contained getC() {
        return c;
    }

    public void setC(Contained c) {
        this.c = c;
    }     

    public static void main(String[] args) {
        Container container = new Container();
        Contained contained = new Contained();
        container.setC(contained);
    } 
}

2
एकत्रीकरण और संघ के बीच क्या अंतर है जो न तो रचना है और न ही एकत्रीकरण है?
रीयरियरपोस्ट

11

रचना (मिश्रण) सरल वस्तुओं या डेटा प्रकारों को अधिक जटिल लोगों में संयोजित करने का एक तरीका है। रचनाएँ कई बुनियादी डेटा संरचनाओं का एक महत्वपूर्ण निर्माण खंड हैं

एकत्रीकरण (संग्रह) सामान्य रचना से इस मायने में अलग है कि यह स्वामित्व में नहीं है। रचना में, जब मालिक वस्तु नष्ट हो जाती है, तो निहित वस्तुएं होती हैं। एकत्रीकरण में, यह जरूरी सच नहीं है

╔═══════════╦═════════════════════════╦═══════════════════════╗
║           ║       Aggregation       ║      Composition      ║
╠═══════════╬═════════════════════════╬═══════════════════════╣
║ Life time ║ Have their own lifetime ║ Owner's life time     ║
║ Relation  ║ Has                     ║ part-of               ║
║ Example   ║ Car has driver          ║ Engine is part of Car ║
╚═══════════╩═════════════════════════╩═══════════════════════╝

दोनों वस्तु के बीच संबंध को दर्शाता है और केवल उनकी ताकत में अंतर है। यहां छवि विवरण दर्ज करें

दो वर्गों के बीच विभिन्न प्रकार की निर्भरता के लिए यूएमएल अंकन यहां छवि विवरण दर्ज करें

संरचना : चूंकि इंजन कार का हिस्सा है, उनके बीच संबंध संरचना है। यहां बताया गया है कि उन्हें जावा कक्षाओं के बीच कैसे लागू किया जाता है।

public class Car {
    //final will make sure engine is initialized
    private final Engine engine;  

    public Car(){
       engine  = new Engine();
    }
}

class Engine {
    private String type;
}

एकत्रीकरण : चूंकि संगठन में कर्मचारी के रूप में व्यक्ति होते हैं, इसलिए उनके बीच संबंध एकत्रीकरण है। यहाँ जावा कक्षाओं के संदर्भ में वे कैसे दिखते हैं

public class Organization {
    private List employees;
}


public class Person {
    private String name;   
}

स्रोत


इससे पहले किए गए 12 से अधिक उत्तरों में कुछ भी महत्वपूर्ण नहीं लगता है और 12 उत्तर में बताया गया है
gnat

बहुत यकीन है कि किताबें पुस्तकालयों के बिना मौजूद हो सकती हैं। खराब उदाहरण!
T Blank

यहां कर्मचारियों की सूची संगठन ऑब्जेक्ट का हिस्सा है। यह एकत्रीकरण कैसे हो सकता है?
सलमान मुहम्मद अयूब

संघ एकत्रीकरण से कैसे अलग है?
रीइन्टीरियरपॉस्ट

मुझे यह जवाब पसंद है। इसने अंत में मुझे ठीक से समझाया कि एकत्रीकरण और रचना में क्या अंतर है।
पंडासरॉक्स

6

एकत्रीकरण एक सरल संग्रह है, पत्थर के बैग की तरह

रचना आंतरिक / कार्यात्मक निर्भरता का अर्थ है, जैसे एक बॉक्स पर टिका है

कारों के कुल यात्रियों; वे कार की कार्यक्षमता को तोड़े बिना अंदर और बाहर हो जाते हैं

टायर घटक हैं; एक को हटा दें और कार अब सही ढंग से काम नहीं करती है

[नोट: स्पेयर टायर एक कुल है!]


1

मैं हमेशा रचना को 'जरूरतों' के रूप में देखता हूं, यानी कार को इंजन की जरूरत होती है , और मैं एकत्रीकरण को 'एक उद्देश्य से जुड़ी चीजों' के रूप में देखता हूं। तो कार सादृश्य के साथ रहने से मेरा एकत्रीकरण एक यात्रा का प्रतिनिधित्व करने के लिए हो सकता है जिसमें कार और यात्रियों को एक साथ लाना शामिल हो सकता है। यात्रा में कार या यात्री नहीं होते हैं, मैं डेटा एकत्र कर रहा हूं जो एक विशिष्ट परिदृश्य के लिए संबंधित है। जब यात्रा पूरी हो जाती है तो कार और यात्री चले जाते हैं। जब एक कार समाप्त हो जाती है, तो कार और यह इंजन सामान्य रूप से एक साथ नष्ट हो जाते हैं।


0

शब्दार्थ, सभी सेट उपसमूह से बने हैं, है ना? इसलिए:

  • एकत्रीकरण तब होता है जब वे सबसेट स्वतंत्र रूप से पिता के सेट में मौजूद होते हैं। एक मॉनिटर के रूप में कंप्यूटर से दूसरे से कनेक्ट होने के लिए अनप्लग किया जा सकता है।

  • रचना तब होती है जब उन सबसेट के सेट पिता के अस्तित्व पर निर्भर करता है। जैसे एक पत्ता पेड़ का हिस्सा होता है या जिगर शरीर का हिस्सा होता है।

ये अवधारणाएं दो वस्तुओं या वर्गों के बीच वैचारिक रूप से निर्भरता के बारे में बात करती हैं। एक कार्यक्रम में सीधे, एक एकत्रीकरण में, जब पिता वस्तु का निपटान करता है, तो कुल वस्तुओं को भी निपटाया जाना चाहिए। एक रचना के लिए एक ही परिदृश्य में, समग्र पुत्र वस्तुएं बनी रहेंगी, फिर पिता वस्तु का वितरण।


-1

इस सरल उदाहरण के बारे में कैसे:

वस्तुओं की एक सरणी एक रचना है। ऑब्जेक्ट के लिए पॉइंटर्स की एक सरणी एक एकत्रीकरण है।

यदि मैं पहले एक को हटाता हूं, तो इसकी सामग्री इसके साथ गायब हो जाती है। दूसरी ओर, दूसरी तरफ अपने सदस्यों के अस्तित्व को प्रभावित किए बिना गायब हो सकती है जब तक कि कोई विशिष्ट विधि न हो जो प्रत्येक वस्तु को हटा देती है क्योंकि उसका सूचक हटा दिया जाता है।


3
इससे किए गए अंकों से अधिक कुछ भी नहीं लगता है और पूर्व के 11 उत्तरों में स्पष्ट किया गया है
gnat

सम्मानपूर्वक असहमत, @gnat यह एक सहायक उदाहरण है कि दोनों को कैसे लागू किया जा सकता है। लोग उदाहरणों के साथ बेहतर सीखते हैं। (मैं अपनी समझ की जांच करने के लिए यहां आया था कि एक पॉइंटर सदस्य एक एकत्रीकरण होने की संभावना था, और एक ऑब्जेक्ट सदस्य एक रचना। यह सीधे पते का एकमात्र उत्तर है।)
बॉब स्टीन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.