मैं समझता हूं कि ओओपी में कौन सी रचना है, लेकिन मुझे इस बात का स्पष्ट पता नहीं चल पा रहा है कि एग्रीगेशन क्या है। क्या कोई समझा सकता है?
मैं समझता हूं कि ओओपी में कौन सी रचना है, लेकिन मुझे इस बात का स्पष्ट पता नहीं चल पा रहा है कि एग्रीगेशन क्या है। क्या कोई समझा सकता है?
जवाबों:
सरल नियम:
उदाहरण 1:
एक कंपनी लोगों का एक एकत्रीकरण है। एक कंपनी लेखा की एक रचना है। जब कोई कंपनी अपने खाते का कारोबार करना बंद कर देती है तो उसका अस्तित्व समाप्त हो जाता है लेकिन उसके लोग मौजूद रहते हैं।
उदाहरण 2: (बहुत सरलीकृत)
एक पाठ संपादक एक बफर (रचना) का मालिक है। एक पाठ संपादक एक फ़ाइल (एकत्रीकरण) का उपयोग करता है। जब पाठ संपादक बंद हो जाता है, तो बफर नष्ट हो जाता है लेकिन फ़ाइल स्वयं नष्ट नहीं होती है।
से http://en.wikipedia.org/wiki/Object_composition
एकत्रीकरण साधारण रचना से इस मायने में अलग है कि यह स्वामित्व में नहीं है। रचना में, जब मालिक वस्तु नष्ट हो जाती है, तो निहित वस्तुएं होती हैं। एकत्रीकरण में, यह जरूरी सच नहीं है। उदाहरण के लिए, एक विश्वविद्यालय विभिन्न विभागों (जैसे, रसायन विज्ञान) का मालिक है, और प्रत्येक विभाग में कई प्रोफेसर हैं। यदि विश्वविद्यालय बंद हो जाता है, तो विभाग अब मौजूद नहीं रहेंगे, लेकिन उन विभागों में प्रोफेसरों का अस्तित्व बना रहेगा। इसलिए, एक विश्वविद्यालय को विभागों की संरचना के रूप में देखा जा सकता है, जबकि विभागों में प्रोफेसरों का एकत्रीकरण होता है। इसके अलावा, एक प्रोफेसर एक से अधिक विभागों में काम कर सकता है, लेकिन एक विभाग एक से अधिक विश्वविद्यालयों का हिस्सा नहीं हो सकता है।
इसलिए - जब आपके पास संरचना के साथ एक स्वामित्व संबंध होता है तो मालिक के पास स्वामित्व वाली वस्तु भी नष्ट हो जाती है - एक एकत्रीकरण (और निहित वस्तुएं) स्वतंत्र रूप से मौजूद हो सकती हैं।
-
अद्यतन: क्षमायाचना - यह उत्तर अभी तक बहुत सरल है।
c.batt उनके उत्तर में एक उत्कृष्ट परिभाषा प्रदान करता है: एकत्रीकरण बनाम रचना
एक भी स्पष्टीकरण नहीं है। अलग-अलग लेखकों का मतलब एकत्रीकरण द्वारा अलग-अलग चीजों से है। अधिकांश वास्तव में इसके द्वारा कुछ भी विशिष्ट मतलब नहीं है।
रचना एक एसोसिएशन है
एकत्रीकरण एक एसोसिएशन है
रचना एक मजबूत एसोसिएशन है (यदि निहित वस्तु का जीवन पूरी तरह से कंटेनर ऑब्जेक्ट पर निर्भर करता है, तो इसे मजबूत एसोसिएशन कहा जाता है)
एकत्रीकरण एक कमजोर एसोसिएशन है (यदि निहित वस्तु का जीवन कंटेनर ऑब्जेक्ट पर निर्भर नहीं करता है, तो इसे कमजोर एसोसिएशन कहा जाता है)
उदाहरण:
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);
}
}
रचना (मिश्रण) सरल वस्तुओं या डेटा प्रकारों को अधिक जटिल लोगों में संयोजित करने का एक तरीका है। रचनाएँ कई बुनियादी डेटा संरचनाओं का एक महत्वपूर्ण निर्माण खंड हैं
एकत्रीकरण (संग्रह) सामान्य रचना से इस मायने में अलग है कि यह स्वामित्व में नहीं है। रचना में, जब मालिक वस्तु नष्ट हो जाती है, तो निहित वस्तुएं होती हैं। एकत्रीकरण में, यह जरूरी सच नहीं है
╔═══════════╦═════════════════════════╦═══════════════════════╗
║ ║ 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;
}
एकत्रीकरण एक सरल संग्रह है, पत्थर के बैग की तरह
रचना आंतरिक / कार्यात्मक निर्भरता का अर्थ है, जैसे एक बॉक्स पर टिका है
कारों के कुल यात्रियों; वे कार की कार्यक्षमता को तोड़े बिना अंदर और बाहर हो जाते हैं
टायर घटक हैं; एक को हटा दें और कार अब सही ढंग से काम नहीं करती है
[नोट: स्पेयर टायर एक कुल है!]
मैं हमेशा रचना को 'जरूरतों' के रूप में देखता हूं, यानी कार को इंजन की जरूरत होती है , और मैं एकत्रीकरण को 'एक उद्देश्य से जुड़ी चीजों' के रूप में देखता हूं। तो कार सादृश्य के साथ रहने से मेरा एकत्रीकरण एक यात्रा का प्रतिनिधित्व करने के लिए हो सकता है जिसमें कार और यात्रियों को एक साथ लाना शामिल हो सकता है। यात्रा में कार या यात्री नहीं होते हैं, मैं डेटा एकत्र कर रहा हूं जो एक विशिष्ट परिदृश्य के लिए संबंधित है। जब यात्रा पूरी हो जाती है तो कार और यात्री चले जाते हैं। जब एक कार समाप्त हो जाती है, तो कार और यह इंजन सामान्य रूप से एक साथ नष्ट हो जाते हैं।
शब्दार्थ, सभी सेट उपसमूह से बने हैं, है ना? इसलिए:
एकत्रीकरण तब होता है जब वे सबसेट स्वतंत्र रूप से पिता के सेट में मौजूद होते हैं। एक मॉनिटर के रूप में कंप्यूटर से दूसरे से कनेक्ट होने के लिए अनप्लग किया जा सकता है।
रचना तब होती है जब उन सबसेट के सेट पिता के अस्तित्व पर निर्भर करता है। जैसे एक पत्ता पेड़ का हिस्सा होता है या जिगर शरीर का हिस्सा होता है।
ये अवधारणाएं दो वस्तुओं या वर्गों के बीच वैचारिक रूप से निर्भरता के बारे में बात करती हैं। एक कार्यक्रम में सीधे, एक एकत्रीकरण में, जब पिता वस्तु का निपटान करता है, तो कुल वस्तुओं को भी निपटाया जाना चाहिए। एक रचना के लिए एक ही परिदृश्य में, समग्र पुत्र वस्तुएं बनी रहेंगी, फिर पिता वस्तु का वितरण।
इस सरल उदाहरण के बारे में कैसे:
वस्तुओं की एक सरणी एक रचना है। ऑब्जेक्ट के लिए पॉइंटर्स की एक सरणी एक एकत्रीकरण है।
यदि मैं पहले एक को हटाता हूं, तो इसकी सामग्री इसके साथ गायब हो जाती है। दूसरी ओर, दूसरी तरफ अपने सदस्यों के अस्तित्व को प्रभावित किए बिना गायब हो सकती है जब तक कि कोई विशिष्ट विधि न हो जो प्रत्येक वस्तु को हटा देती है क्योंकि उसका सूचक हटा दिया जाता है।