मूल अवधारणा
डेटा संरचनाओं को केवल डेटा रखने के लिए लागू किए गए विशेष वर्गों के रूप में परिभाषित किया जाता है, अर्थात शुद्ध मॉडल, उदा। कार, बच्चा, पशु, घटना, कर्मचारी, कंपनी, ग्राहक ... आदि। उन डेटा को आम तौर पर घोषित किया जाता है या अन्य वर्गों की शुरुआत में उदाहरण चर के रूप में माना जाता है।
इस वर्ग के तरीकों को कोई वास्तविक महत्वपूर्ण कार्य नहीं करना चाहिए, अन्यथा डेटा संरचना वर्ग अब डेटा संरचना नहीं है!
तो मुख्य रूप से, विधियां गेटर्स और सेटर्स (यानी एक्सेसर्स और म्यूटेटर) हैं, आम तौर पर क्योंकि इंस्टेंस वैरिएबल को निजी माना जाता है। वैकल्पिक राय है:कि डेटा संरचना चर सार्वजनिक होना चाहिए, और सीधे कक्षा के उदाहरण से पहुँचा जा सकता है, लेकिन यह बहस का विषय है कि निजी चर अवधारणा बेहतर है।
- उस संदर्भ में, डेटा संरचना वर्ग, अपने डेटा (चर) को प्रकट या उजागर करता है और कोई सार्थक (महत्वपूर्ण) तरीके या कार्य नहीं करता है।
- एक सामान्य वर्ग (जिसे यहां ऑब्जेक्ट कहा जाता है), जैसे 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(); } }
इस समाधान में आकृतियों को डेटा संरचनाओं के रूप में माना जाता है, जबकि ज्यामिति वर्ग को वस्तु के रूप में माना जाता है।
लाभ - यदि हमें और विधियों को जोड़ने की आवश्यकता है तो हम उन्हें केवल ज्यामिति वर्ग में जोड़ेंगे (यह वह समय है जब इस समाधान को लागू किया जाना चाहिए)।
नुकसान - अगर हमें अधिक डेटा संरचनाएं (यानी अधिक आकार) जोड़ने की आवश्यकता है, तो हमें ज्यामिति वर्ग में आपके सभी तरीकों को बदलना होगा।
डेटा संरचनाओं और वस्तुओं के बीच अंतर
- वस्तुएं व्यवहार को उजागर करती हैं और डेटा छुपाती हैं। यह मौजूदा व्यवहारों को बदले बिना नए प्रकार की वस्तुओं को जोड़ना आसान बनाता है। इससे मौजूदा वस्तुओं में नए व्यवहार जोड़ना भी मुश्किल हो जाता है।
- डेटा संरचनाएं डेटा को प्रकट या उजागर करती हैं और उनका कोई महत्वपूर्ण व्यवहार नहीं होता है। इससे मौजूदा डेटा संरचनाओं में नए व्यवहारों को जोड़ना आसान हो जाता है लेकिन मौजूदा कार्यों में नई डेटा संरचनाओं को जोड़ना कठिन हो जाता है।