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

डेटा ऑब्जेक्ट्स और स्ट्रक्चर्स

मूल अवधारणा (Basic Concept)

डेटा स्ट्रक्चर्स को विशेष क्लासेस के रूप में परिभाषित किया जाता है जिन्हें केवल डेटा रखने के लिए लागू किया जाता है, यानी शुद्ध मॉडल (Pure Models), जैसे Car, Kid, Animal, Event, Employee, Company, Customer आदि। उन डेटा को आमतौर पर अन्य क्लासेस की शुरुआत में इंस्टेंस वेरिएबल्स (Instance Variables) के रूप में घोषित या माना जाता है।

इस क्लास के मेथड्स को कोई वास्तविक महत्वपूर्ण कार्य नहीं करना चाहिए, अन्यथा डेटा स्ट्रक्चर क्लास डेटा स्ट्रक्चर नहीं रह जाती!

इसलिए मुख्य रूप से, मेथड्स गेटर्स और सेटर्स (Getters and Setters) होते हैं (यानी एक्सेसर्स और म्यूटेटर्स), आमतौर पर क्योंकि इंस्टेंस वेरिएबल्स को प्राइवेट (Private) माना जाता है। एक वैकल्पिक राय है: कि डेटा स्ट्रक्चर वेरिएबल्स पब्लिक (Public) होने चाहिए, और क्लास के इंस्टेंस से सीधे एक्सेस किए जा सकते हैं, लेकिन यह बहस का विषय है कि प्राइवेट वेरिएबल्स की अवधारणा बेहतर है।

  • उस संदर्भ में, डेटा स्ट्रक्चर क्लास, अपने डेटा (वेरिएबल्स) को प्रकट या उजागर करती है और इसका कोई सार्थक (महत्वपूर्ण) मेथड या फंक्शन नहीं होता।
  • एक सामान्य क्लास (यहां ऑब्जेक्ट कहलाती है), जैसे MainActivity, ListAdapter, Calculator, Iterator, अपने डेटा को छुपाती है, और उन डेटा पर काम करने वाले अपने मेथड्स को प्रकट या उजागर करती है।

तो, हमारे हाथ में समस्या को हल करने के लिए दो दृष्टिकोण हैं: यानी अपने शुद्धतम रूप में एक डेटा स्ट्रक्चर को लागू करना, जबकि उनके डेटा पर ऑपरेशन बनाने के लिए एक और ऑब्जेक्ट क्लास बनाना, या हम मॉडल क्लासेस को ऑब्जेक्ट क्लासेस बना सकते हैं, जो अपने डेटा को छुपाते हुए अपने मेथड्स को उजागर करते हैं, जैसे निम्न उदाहरण में:

public class Square {
    public Point topLeft1;
    public double side1;
}
public class Rectangle {
    public Point topLeft1;
    public double height1;
    public double width1;
}
public class Circle {
    public Point center1;
    public double radius1;
}
public class Geometry {
    public final double PI = 3.141592653589793;
    public double area(Object shape) throws NoSuchShapeException {
        if (shape instanceof Square) {
            Square s = (Square)shape;
            return s.side1 * s.side1;
        } else if (shape instanceof Rectangle) {
            Rectangle r = (Rectangle)shape;
            return r.height1 * r.width1;
        } else if (shape instanceof Circle) {
            Circle c = (Circle)shape;
            return PI * c.radius1 * c.radius1;
        }
        throw new NoSuchShapeException();
    }
}

इस समाधान में शेप्स को डेटा स्ट्रक्चर माना जाता है, जबकि Geometry क्लास को ऑब्जेक्ट माना जाता है।

लाभ (Advantage) - यदि हमें अधिक मेथड्स जोड़ने की आवश्यकता है तो हम उन्हें केवल Geometry क्लास में जोड़ेंगे (यही वह समय है जब इस समाधान को लागू किया जाना चाहिए)।

नुकसान (Disadvantage) - यदि हमें अधिक डेटा स्ट्रक्चर्स (यानी अधिक शेप्स) जोड़ने की आवश्यकता है, तो हमें Geometry क्लास में अपने सभी मेथड्स बदलने होंगे।

डेटा स्ट्रक्चर्स और ऑब्जेक्ट्स के बीच अंतर (Difference between Data Structures and Objects)

  • ऑब्जेक्ट्स व्यवहार को उजागर करते हैं और डेटा को छुपाते हैं। इससे मौजूदा व्यवहारों को बदले बिना नए प्रकार के ऑब्जेक्ट्स जोड़ना सरल हो जाता है। यह मौजूदा ऑब्जेक्ट्स में नए व्यवहार जोड़ना कठिन भी बनाता है।
  • डेटा स्ट्रक्चर्स डेटा को प्रकट या उजागर करते हैं और उनका कोई महत्वपूर्ण व्यवहार नहीं होता। इससे मौजूदा डेटा स्ट्रक्चर्स में नए व्यवहार जोड़ना सरल हो जाता है लेकिन मौजूदा फंक्शन्स में नए डेटा स्ट्रक्चर्स जोड़ना कठिन हो जाता है।
  1. डेटा स्ट्रक्चर में न्यूनतम स्पैनिंग ट्री डेटा स्ट्रक्चर में न्यूनतम स्पैनिंग ट्री

    एक स्पैनिंग ट्री एक अनडायरेक्टेड ग्राफ का एक सबसेट है जिसमें सभी वर्टेक्स न्यूनतम संख्या में एज द्वारा जुड़े होते हैं।यदि ग्राफ में सभी वर्टेक्स जुड़े हुए हैं, तो कम से कम एक स्पैनिंग ट्री मौजूद होती है। एक ग्राफ में एक से अधिक स्पैनिंग ट्री मौजूद हो सकती हैं।न्यूनतम स्पैनिंग ट्रीएक न्यूनतम स्पैनिंग

  1. डेटा स्ट्रक्चर में बाइनरी ट्री और गुण डेटा स्ट्रक्चर में बाइनरी ट्री और गुण

    इस खंड में हम बाइनरी ट्री डेटा स्ट्रक्चर के कुछ महत्वपूर्ण गुण देखेंगे। मान लीजिए हमारे पास ऐसा बाइनरी ट्री है।कुछ गुण हैं:लेवल l पर नोड्स की अधिकतम संख्या $2^{l-1}$ होगी। यहां लेवल रूट से नोड तक के पथ पर नोड्स की संख्या है, जिसमें रूट स्वयं शामिल है। हम रूट का लेवल 1 मान रहे हैं।ऊंचाई h के बाइनरी ट

  1. डेटा स्ट्रक्चर में बाइनरी ट्री प्रतिनिधित्व डेटा स्ट्रक्चर में बाइनरी ट्री प्रतिनिधित्व

    यहां हम देखेंगे कि कंप्यूटर की मेमोरी में बाइनरी ट्री को कैसे दर्शाया जाए। प्रतिनिधित्व के लिए दो अलग-अलग तरीके हैं। ये सरणी और लिंक्ड लिस्ट का उपयोग करके हैं।मान लीजिए हमारे पास ऐसा एक ट्री है:सरणी प्रतिनिधित्व लेवल ऑर्डर फैशन का उपयोग करके एलिमेंट्स को स्कैन करके ट्री डेटा को स्टोर करता है। तो यह