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

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

मूल अवधारणा

डेटा संरचनाओं को केवल डेटा रखने के लिए लागू किए गए विशेष वर्गों के रूप में परिभाषित किया जाता है, अर्थात शुद्ध मॉडल, उदा। कार, ​​​​बच्चा, पशु, घटना, कर्मचारी, कंपनी, ग्राहक ... आदि। उन डेटा को आम तौर पर घोषित किया जाता है या अन्य वर्गों की शुरुआत में उदाहरण चर के रूप में माना जाता है।

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

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

  • उस संदर्भ में, डेटा संरचना वर्ग, अपने डेटा (चर) को प्रकट या उजागर करता है और कोई सार्थक (महत्वपूर्ण) तरीके या कार्य नहीं करता है।
  • एक सामान्य वर्ग (जिसे यहां ऑब्जेक्ट कहा जाता है), जैसे 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 x s.side1;
   }else if (shape instanceof Rectangle) {
      Rectangle r = (Rectangle)shape;
      return r.height1 x r.width1;
   }else if (shape instanceof Circle) {
      Circle c = (Circle)shape;
      return PI x c.radius1 x c.radius1; }
      throw new NoSuchShapeException(); }
}

इस समाधान में आकृतियों को डेटा संरचनाओं के रूप में माना जाता है, जबकि ज्यामिति वर्ग को वस्तु के रूप में माना जाता है।

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

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

डेटा संरचनाओं और वस्तुओं के बीच अंतर

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

  1. डेटा संरचनाओं में न्यूनतम फैले हुए पेड़

    एक फैला हुआ पेड़ अप्रत्यक्ष ग्राफ़ का एक उपसमुच्चय है जिसमें सभी शीर्ष किनारों की न्यूनतम संख्या से जुड़े होते हैं। यदि सभी कोने एक ग्राफ में जुड़े हुए हैं, तो कम से कम एक फैले हुए पेड़ मौजूद हैं। ग्राफ़ में, एक से अधिक फैले हुए वृक्ष हो सकते हैं। न्यूनतम फैले हुए पेड़ एक न्यूनतम स्पैनिंग ट्री (MS

  1. डेटा संरचनाओं में बाइनरी पेड़ और गुण

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

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

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