Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में कंपोजिशन बनाम एग्रीगेशन: अंतर


दोनों "Has-A" संबंध दर्शाते हैं, लेकिन **जीवनचक्र स्वामित्व** में अंतर है।

कंपोजिशन (Composition) - मजबूत स्वामित्व

  • "Part-of" संबंध: भाग मालिक के बिना अस्तित्व में नहीं रह सकता।
  • पैरेंट नष्ट होता है → चाइल्ड भी नष्ट हो जाता है।
  • चाइल्ड केवल एक पैरेंट से संबंधित होता है।
public class Engine { ... }

public class Car
{
    Engine engine = new Engine();  // Car बनाता और मालिक है
    // Car नष्ट → Engine नष्ट
}

एग्रीगेशन (Aggregation) - कमजोर संबंध

  • "Has-A" संबंध: भाग स्वतंत्र रूप से अस्तित्व में रह सकता है।
  • पैरेंट नष्ट होता है → चाइल्ड जीवित रह सकता है।
  • चाइल्ड एकाधिक पैरेंट्स के साथ साझा किया जा सकता है।
public class Address { ... }

public class Employee
{
    private Address address;
    
    public Employee(Address addr)  // बाहर से इंजेक्टेड
    {
        this.address = addr;
    }
}
// Employee नष्ट → Address जीवित रह सकता है (दूसरे Employee द्वारा उपयोग)

तुलना तालिका

पहलूकंपोजिशनएग्रीगेशन
जीवनचक्रपैरेंट के साथ बंधास्वतंत्र
स्वामित्वएक्सक्लूसिवसाझा/बाहरी
उदाहरणCar-Engine, House-RoomEmployee-Address, Student-Course
UMLभरा डायमंड (◆)खाली डायमंड (◇)
कपलिंगटाइटरलूज़र

डिज़ाइन सिद्धांत

"कंपोजिशन ओवर इनहेरिटेंस" - लेकिन एग्रीगेशन और भी लूज़र है। संदर्भ के अनुसार चुनें।

  1. माइक्रोसॉफ्ट एज बनाम गूगल क्रोम: कौन सा बेहतर? माइक्रोसॉफ्ट एज बनाम गूगल क्रोम: कौन सा बेहतर?

    माइक्रोसॉफ्ट एज और गूगल क्रोम की तुलना गूगल क्रोम कंप्यूटर और मोबाइल दोनों पर सबसे ज्यादा इस्तेमाल होने वाला ब्राउज़र है। माइक्रोसॉफ्ट एज विंडोज डिवाइस पर डिफॉल्ट इंस्टॉल आता है। दोनों ब्राउज़र क्रोमियम इंजन पर बने हैं, फिर भी कुछ खास फर्क हैं। आइए जानते हैं आपके लिए कौन सा बेहतर है। मुख्य अंतर: एक

  1. - पायथन में कर्मचारी महत्व

    मान लीजिए हमारे पास कर्मचारी जानकारी की एक डेटा संरचना है, जिसमें कर्मचारी की विशिष्ट आईडी, उसका महत्व मूल्य और उसके प्रत्यक्ष अधीनस्थों की आईडी हैं। उदाहरण के लिए, कर्मचारी 1 कर्मचारी 2 का नेता है, और कर्मचारी 2 कर्मचारी 3 का नेता है। मान लीजिए उनके महत्व मूल्य क्रमशः 15, 10 और 5 हैं। तब कर्मचारी

  1. - पायथन में Namedtuple

    NamedTuple collections मॉड्यूल के तहत एक और क्लास है। डिक्शनरी टाइप ऑब्जेक्ट्स की तरह, इसमें कुंजियां होती हैं जो कुछ मानों से मैप होती हैं। इस मामले में हम कुंजियों और इंडेक्सेस का उपयोग करके एलिमेंट्स तक पहुंच सकते हैं। इसका उपयोग करने के लिए सबसे पहले हमें collections स्टैंडर्ड लाइब्रेरी मॉड्यूल