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

C# में Composition (कंपोजिशन) क्या है?

C# में Composition (कंपोजिशन)

कंपोजिशन एक **स्ट्रॉन्ग "है-ए" (has-a) रिलेशनशिप** है जहां पार्ट (चाइल्ड) का जीवनचक्र होल (पैरेंट) द्वारा नियंत्रित होता है। अगर पैरेंट नष्ट होता है, तो चाइल्ड भी नष्ट हो जाता है। यह एग्रीगेशन (कमजोर संबंध) से अधिक मजबूत है।

उदाहरण: Car और Engine

public class Engine {
    public void Start() => Console.WriteLine("Engine started");
    public void Stop() => Console.WriteLine("Engine stopped");
}

public class Car {
    // Engine का जीवनचक्र Car द्वारा प्रबंधित
    private readonly Engine _engine = new Engine(); // इन्लाइन इंस्टेंशिएशन
    
    public void StartCar() {
        Console.WriteLine("Car starting...");
        _engine.Start();
    }
    
    public void StopCar() {
        _engine.Stop();
        Console.WriteLine("Car stopped");
    }
    
    // Car डिस्पोज़ होने पर Engine भी डिस्पोज़ होगा (अगर IDisposable)
}

class Program {
    static void Main() {
        Car car = new Car();
        car.StartCar();
        car.StopCar();
        // car स्कोप से बाहर जाता है -> _engine भी कलेक्ट हो जाता है
    }
}

आउटपुट

Car starting...
Engine started
Engine stopped
Car stopped

Composition vs Aggregation vs Association

रिलेशनशिपमजबूतीजीवनचक्रउदाहरण
Compositionमजबूत (Part-of)पैरेंट चाइल्ड का मालिक, साथ नष्टCar → Engine, House → Room
Aggregationकमजोर (Has-a)चाइल्ड स्वतंत्र, पैरेंट से पहले/बाद जीवित रह सकता हैDepartment → Employee, Library → Book
Associationसामान्य उपयोगकोई स्वामित्व नहींTeacher → Student, Doctor → Patient

कंपोजिशन के लाभ

  • एनकैप्सुलेशन: आंतरिक विवरण छुपे रहते हैं।
  • कम कपलिंग: चाइल्ड क्लास को पैरेंट के बारे में पता नहीं होता।
  • पुन: उपयोग: चाइल्ड क्लास अन्य संदर्भों में उपयोग हो सकती है।
  • टेस्टेबिलिटी: मॉक/स्टब चाइल्ड इंजेक्ट कर सकते हैं (अगर इंटरफेस के माध्यम से)।

डिज़ाइन पैटर्न में कंपोजिशन

  • Decorator Pattern: रनटाइम पर व्यवहार जोड़ने के लिए कंपोजिशन।
  • Composite Pattern: ट्री स्ट्रक्चर में कंपोजिशन।
  • Strategy Pattern: एल्गोरिदम कंपोजिशन के माध्यम से इंजेक्ट।

कोड में पहचान

// Composition: private readonly, कंस्ट्रक्टर/फील्ड इनिशियलाइज़र में बनाया गया
private readonly Engine _engine = new Engine();

// Aggregation: कंस्ट्रक्टर/प्रॉपर्टी से इंजेक्टेड, बाहरी रूप से प्रबंधित
public Engine Engine { get; set; } // या कंस्ट्रक्टर में पास किया गया
  1. - C# में ICloneable इंटरफ़ेस क्या करता है?

    ICloneable इंटरफ़ेस मौजूदा ऑब्जेक्ट की एक कॉपी बनाता है यानी एक क्लोन।इसमें केवल एक ही मेथड है:Clone() - Clone() मेथड एक नया ऑब्जेक्ट बनाता है जो वर्तमान इंस्टेंस की एक कॉपी है।निम्नलिखित एक उदाहरण दिखा रहा है कि ICloneable इंटरफ़ेस का उपयोग करके क्लोनिंग कैसे करें:उदाहरणusing System; class Car : IC

  1. - C# में ऐरे क्या है

    एक ऐरे एक ही प्रकार के एलिमेंट्स के फिक्स्ड-साइज़ सीक्वेंशियल कलेक्शन को स्टोर करता है। एक ऐरे का उपयोग डेटा के कलेक्शन को स्टोर करने के लिए किया जाता है, लेकिन अक्सर ऐरे को एक ही प्रकार के वेरिएबल्स के कलेक्शन के रूप में सोचना अधिक उपयोगी होता है जो सन्निहित मेमोरी लोकेशन्स पर स्टोर होते हैं। C# मे

  1. - C# में Composition और Aggregation के बीच अंतर

    कंपोजिशन के तहत, यदि पैरेंट ऑब्जेक्ट डिलीट हो जाता है, तो चाइल्ड ऑब्जेक्ट भी अपनी स्थिति खो देता है। कंपोजिशन एग्रीगेशन का एक विशेष प्रकार है और पार्ट-ऑफ रिलेशनशिप देता है। उदाहरण के लिए, एक Car का एक Engine होता है। यदि कार नष्ट हो जाती है, तो इंजन भी नष्ट हो जाता है। public class Engine { ...