कंटेनर (सार डेटा प्रकार): Difference between revisions
(Created page with "{{short description|Software class or data structure whose instances are collections of other objects}} {{redirect|Container (computer science)|the abstract notion of containe...") |
No edit summary |
||
Line 1: | Line 1: | ||
{{short description|Software class or data structure whose instances are collections of other objects}} | {{short description|Software class or data structure whose instances are collections of other objects}} | ||
''कंटेनर (कंप्यूटर विज्ञान)" यहां पुनर्निर्देश करता है। प्रारूप सिद्धांत में कंटेनरों की अमूर्त धारणा के लिए, कंटेनर (प्रारूप सिद्धांत) देखें। अन्य उपयोगों के लिए, कंटेनर (बहुविकल्पी) देखें।'' | |||
कंटेनर | [[कंप्यूटर विज्ञान]] में, एक कंटेनर एक वर्ग (कंप्यूटर विज्ञान) या [[डेटा संरचना]] है<ref>Paul E. Black (ed.), entry for ''data structure'' in ''[[Dictionary of Algorithms and Data Structures]]. US [[National Institute of Standards and Technology]].15 December 2004. Accessed 4 Oct 2011.''</ref><ref>Entry ''data structure'' in the [[Encyclopædia Britannica]] (2009) [http://www.britannica.com/EBchecked/topic/152190/data-structure Online entry] Accessed 4 Oct 2011.</ref> जिनके उदाहरण अन्य वस्तुओं का संग्रह हैं। दूसरे शब्दों में, वे वस्तुओं को एक संगठित तरीके से संग्रहीत करते हैं जो विशिष्ट अभिगम्य नियमों का अनुसरण करते हैं। | ||
कंटेनर डेटा संरचनाएं | कंटेनर का आकार इसमें सम्मिलित वस्तुओं (तत्वों) की संख्या पर निर्भर करता है। विभिन्न कंटेनर प्रकारों के अंतर्निहित (इन्हेरिटेड) कार्यान्वयन आकार, जटिलता और भाषा के प्रारूपो में भिन्न हो सकते हैं, लेकिन कई स्थितियों में वे किसी भी परिदृश्य के लिए सही कार्यान्वयन को चयन करने में नम्यता प्रदान करते हैं। | ||
कंटेनर डेटा संरचनाएं सामान्य रूप से कई प्रकार की [[प्रोग्रामिंग भाषा]]ओं में उपयोग की जाती हैं। | |||
== कार्य और गुण == | == कार्य और गुण == | ||
कंटेनरों को निम्नलिखित तीन गुणों द्वारा चित्रित किया जा सकता है: | कंटेनरों को निम्नलिखित तीन गुणों द्वारा चित्रित किया जा सकता है: | ||
* | * अभिगम्य, अर्थात कंटेनर की वस्तुओं तक अभिगम्यता का तरीका है। सरणियों की स्थिति में, ऐरे इंडेक्स (अनुक्रमणिका) के साथ अभिगम्य किया जाता है। स्टैक की स्थिति में, एलआईएफओ (कंप्यूटिंग) (अंतिम अंदर प्रथम बाहर) क्रम के अनुसार अभिगम्य की जाती है और श्रेणी की स्थिति में यह [[फीफो (कंप्यूटिंग और इलेक्ट्रॉनिक्स)]] (पहले अंदर, पहले बाहर) क्रम के अनुसार किया जाता है ; | ||
* भंडारण, | * भंडारण, अर्थात कंटेनर की वस्तुओं को संग्रहित करने का तरीका है; | ||
* ट्रैवर्सल, | * ट्रैवर्सल, अर्थात कंटेनर की वस्तुओं को ट्रैवर्स करने का तरीका है। | ||
निम्नलिखित करने के लिए कंटेनर | निम्नलिखित करने के लिए कंटेनर क्लासेस से [[CRUD|बनाएं, पढ़ें, अपडेट करें और हटाएं]] (सीआरयूडीजैसी) विधियों को प्रयुक्त करने की अपेक्षा की जाती है: | ||
* एक | * एक रिक्त कंटेनर (निर्माता) बनाएं; | ||
* वस्तुओं को कंटेनर में डालें; | * वस्तुओं को कंटेनर में डालें; | ||
* कंटेनर से वस्तुओं को हटा दें; | * कंटेनर से वस्तुओं (ऑब्जेक्ट्स) को हटा दें; | ||
* कंटेनर में सभी वस्तुओं को हटा दें (स्पष्ट); | * कंटेनर में सभी वस्तुओं को हटा दें (स्पष्ट); | ||
* कंटेनर में वस्तुओं तक पहुंचें; | * कंटेनर में वस्तुओं तक पहुंचें; | ||
* कंटेनर में वस्तुओं की संख्या तक पहुँचें (गिनती)। | * कंटेनर में वस्तुओं की संख्या तक पहुँचें (गिनती)। | ||
कंटेनरों को कभी-कभी पुनरावृत्तियों के संयोजन में | कंटेनरों को कभी-कभी पुनरावृत्तियों के साथ संयोजन में कार्यान्वित किया जाता है। | ||
== प्रकार == | == प्रकार == | ||
कंटेनरों को सिंगल-वैल्यू कंटेनर या [[सहयोगी कंटेनर]] के रूप में वर्गीकृत किया जा सकता है। | कंटेनरों को सिंगल-वैल्यू कंटेनर या [[सहयोगी कंटेनर]] के रूप में वर्गीकृत किया जा सकता है। | ||
सिंगल-वैल्यू कंटेनर प्रत्येक ऑब्जेक्ट को स्वतंत्र रूप से | सिंगल-वैल्यू कंटेनर प्रत्येक ऑब्जेक्ट को स्वतंत्र रूप से संग्रह करते हैं। भाषा लूप निर्माण (जैसे लूप के लिए) या पुनरावर्तक के साथ वस्तुओं को सीधे एक्सेस किया जा सकता है। | ||
एक साहचर्य कंटेनर कुंजी-मूल्य जोड़े से बना एक [[साहचर्य सरणी]], मानचित्र या शब्दकोश का उपयोग करता है, जैसे कि प्रत्येक कुंजी कंटेनर में अधिकतम एक बार दिखाई देती है। कुंजी का उपयोग मूल्य, वस्तु को खोजने के लिए किया जाता है, यदि यह कंटेनर में संग्रहीत है। साहचर्य कंटेनरों का उपयोग प्रोग्रामिंग भाषाओं में क्लास टेम्प्लेट के रूप में किया जाता है। | एक साहचर्य कंटेनर कुंजी-मूल्य जोड़े से बना एक [[साहचर्य सरणी]], मानचित्र या शब्दकोश का उपयोग करता है, जैसे कि प्रत्येक कुंजी कंटेनर में अधिकतम एक बार दिखाई देती है। कुंजी का उपयोग मूल्य, वस्तु को खोजने के लिए किया जाता है, यदि यह कंटेनर में संग्रहीत है। साहचर्य कंटेनरों का उपयोग प्रोग्रामिंग भाषाओं में क्लास टेम्प्लेट के रूप में किया जाता है। | ||
कंटेनर सार डेटा प्रकारों में | कंटेनर सार डेटा प्रकारों में सम्मिलित हैं: | ||
* [[कतार (सार डेटा प्रकार)]] | * [[कतार (सार डेटा प्रकार)]] | ||
Line 42: | Line 41: | ||
** [[मानचित्र (कंप्यूटर विज्ञान)]], प्रत्येक कुंजी को लुकअप के लिए एक मान से संबद्ध करता है | ** [[मानचित्र (कंप्यूटर विज्ञान)]], प्रत्येक कुंजी को लुकअप के लिए एक मान से संबद्ध करता है | ||
इन सार प्रकारों को | इन सार प्रकारों को प्रयुक्त करने के लिए उपयोग की जाने वाली सामान्य डेटा संरचनाओं में सम्मिलित हैं: | ||
* [[सरणी डेटा संरचना]] और उनके डेरिवेटिव | * [[सरणी डेटा संरचना]] और उनके डेरिवेटिव | ||
* लिंक्ड सूचियाँ | * लिंक्ड सूचियाँ | ||
Line 49: | Line 48: | ||
== ग्राफिक कंटेनर == | == ग्राफिक कंटेनर == | ||
[[विजेट टूलकिट]] कंटेनर का भी उपयोग करते हैं, जो अन्य विजेट जैसे [[विंडो (कंप्यूटिंग)]], [[पैनल (कंप्यूटर सॉफ्टवेयर)]] को समूहित करने के लिए विशेष [[विजेट (कंप्यूटिंग)]] हैं। उनके ग्राफिकल गुणों के अलावा, उनके पास कंटेनर | [[विजेट टूलकिट]] कंटेनर का भी उपयोग करते हैं, जो अन्य विजेट जैसे [[विंडो (कंप्यूटिंग)]], [[पैनल (कंप्यूटर सॉफ्टवेयर)]] को समूहित करने के लिए विशेष [[विजेट (कंप्यूटिंग)]] हैं। उनके ग्राफिकल गुणों के अलावा, उनके पास कंटेनर क्लासेस के समान व्यवहार है, क्योंकि वे अपने बच्चों के विजेट (कंप्यूटिंग) की एक सूची रखते हैं, और अपने बच्चों के बीच विजेट (कंप्यूटिंग) को जोड़ने, हटाने या पुनर्प्राप्त करने की स्वीकृति देते हैं। | ||
== वैधानिक रूप से टाइप की गई भाषाओं में == | == वैधानिक रूप से टाइप की गई भाषाओं में == | ||
{{See also|Statically-typed programming language|Strong and weak typing}} | {{See also|Statically-typed programming language|Strong and weak typing}} | ||
कंटेनर एब्सट्रैक्शन वस्तुतः किसी भी प्रोग्रामिंग | कंटेनर एब्सट्रैक्शन वस्तुतः किसी भी प्रोग्रामिंग भाषा में लिखा जा सकता है, चाहे उसका टाइप सिस्टम कुछ भी हो।<ref name="Budd1997" >{{Cite book|last=Budd|first=Timothy|url=https://www.worldcat.org/oclc/34788238|title=An introduction to object-oriented programming|date=1997|publisher=Addison-Wesley|isbn=0-201-82419-1|edition=2nd|location=Reading, Mass.|oclc=34788238}}</ref>{{Rp|page=273}} हालांकि, [[मजबूत और कमजोर टाइपिंग]]|दृढ़ता से टाइप की गई वस्तु-उन्मुख प्रोग्रामिंग भाषाओं में एक डेवलपर के लिए पुन: प्रयोज्य सजातीय कंटेनर लिखना कुछ जटिल हो सकता है। | ||
तत्व प्रकारों में अंतर के कारण यह प्रत्येक मौलिक प्रकार के लिए लिखने और कंटेनरों का संग्रह रखने की एक कठिन प्रक्रिया में परिणत होता है।{{r|Budd1997|pages=274-276}} | तत्व प्रकारों में अंतर के कारण यह प्रत्येक मौलिक प्रकार के लिए लिखने और कंटेनरों का संग्रह रखने की एक कठिन प्रक्रिया में परिणत होता है।{{r|Budd1997|pages=274-276}} | ||
कई तात्विक प्रकार (जैसे पूर्णांक या फ्लोटिंग नंबर) एक दूसरे के साथ स्वाभाविक रूप से असंगत होते हैं क्योंकि वे | कई तात्विक प्रकार (जैसे पूर्णांक या फ्लोटिंग नंबर) एक दूसरे के साथ स्वाभाविक रूप से असंगत होते हैं क्योंकि वे मेमोरी आकार और उनके अर्थपूर्ण अर्थ के कारण होते हैं और इसलिए विभिन्न कंटेनरों की आवश्यकता होती है (विशेष रूप से, वे पारस्परिक रूप से संगत या परिवर्तनीय हैं)।{{r|Budd1997|pages=274-276}} आधुनिक प्रोग्रामिंग भाषाएँ समस्या को हल करने में सहायता करने के लिए विभिन्न दृष्टिकोण प्रदान करती हैं:{{r|Budd1997|pages=274-281}} | ||
:; यूनिवर्सल बुनियादी प्रकार | :; यूनिवर्सल बुनियादी प्रकार | ||
:: एक प्रकार जो सार्वभौमिक रूप से किसी अन्य (जैसे रूट ऑब्जेक्ट क्लास) द्वारा असाइन किया जा सकता है। | :: एक प्रकार जो सार्वभौमिक रूप से किसी अन्य (जैसे रूट ऑब्जेक्ट क्लास) द्वारा असाइन किया जा सकता है। | ||
:; [[डाउनकास्टिंग]]; | :; [[डाउनकास्टिंग]]; | ||
:; कक्षा प्रतिस्थापन | :; कक्षा प्रतिस्थापन | ||
:: कमजोर टाइप की गई भाषाओं के लिए उपरोक्त पिछले तीन दृष्टिकोणों का उपयोग किया जाता है; ये | :: कमजोर टाइप की गई भाषाओं के लिए उपरोक्त पिछले तीन दृष्टिकोणों का उपयोग किया जाता है; ये सामान्य रूप से इन्हेरिटेड और बहुरूपता को प्रकारों द्वारा साझा करते हैं। | ||
:; [[संघ प्रकार]] (C/C++ भाषा) | :; [[संघ प्रकार]] (C/C++ भाषा) | ||
:: विभिन्न प्रकार के डेटा आकारों के भंडारण की | :: विभिन्न प्रकार के डेटा आकारों के भंडारण की स्वीकृति देता है; हालांकि, यह सुनिश्चित करना कठिन है कि पुनर्प्राप्ति पर संघ में किस प्रकार का संग्रह किया जाता है और इसका सावधानीपूर्वक अनुसरण किया जाना चाहिए। | ||
:; प्रकार रूपांतरण | :; प्रकार रूपांतरण | ||
:; [[टेम्पलेट (सी ++)]]C++)s या [[सामान्य प्रोग्रामिंग]] | :; [[टेम्पलेट (सी ++)]]C++)s या [[सामान्य प्रोग्रामिंग]] | ||
:: पुन: प्रयोज्यता और प्रकार की सुरक्षा सुनिश्चित करता है; रिवर्स | :: पुन: प्रयोज्यता और प्रकार की सुरक्षा सुनिश्चित करता है; रिवर्स इन्हेरिटेड के रूप में सोचा जा सकता है। हालांकि, इस दृष्टिकोण को एक [[टेम्पलेट विशेषज्ञता]] को प्रयुक्त करने की आवश्यकता हो सकती है जो प्रतिष्ठित रूप से एक समय लेने वाली प्रक्रिया है जो उनके तरीकों में भिन्न होती है।{{r|Budd1997|pages=281}} | ||
Line 73: | Line 72: | ||
*मानक टेम्प्लेट लाइब्रेरी#कंटेनर | *मानक टेम्प्लेट लाइब्रेरी#कंटेनर | ||
* [[संग्रह (सार डेटा प्रकार)]] | * [[संग्रह (सार डेटा प्रकार)]] | ||
* [[ढेर (डेटा संरचना)]] | * [[ढेर (डेटा संरचना)|स्टैक (डेटा संरचना)]] | ||
* [[जावा समवर्ती मानचित्र]] | * [[जावा समवर्ती मानचित्र]] | ||
Revision as of 22:01, 24 February 2023
कंटेनर (कंप्यूटर विज्ञान)" यहां पुनर्निर्देश करता है। प्रारूप सिद्धांत में कंटेनरों की अमूर्त धारणा के लिए, कंटेनर (प्रारूप सिद्धांत) देखें। अन्य उपयोगों के लिए, कंटेनर (बहुविकल्पी) देखें।
कंप्यूटर विज्ञान में, एक कंटेनर एक वर्ग (कंप्यूटर विज्ञान) या डेटा संरचना है[1][2] जिनके उदाहरण अन्य वस्तुओं का संग्रह हैं। दूसरे शब्दों में, वे वस्तुओं को एक संगठित तरीके से संग्रहीत करते हैं जो विशिष्ट अभिगम्य नियमों का अनुसरण करते हैं।
कंटेनर का आकार इसमें सम्मिलित वस्तुओं (तत्वों) की संख्या पर निर्भर करता है। विभिन्न कंटेनर प्रकारों के अंतर्निहित (इन्हेरिटेड) कार्यान्वयन आकार, जटिलता और भाषा के प्रारूपो में भिन्न हो सकते हैं, लेकिन कई स्थितियों में वे किसी भी परिदृश्य के लिए सही कार्यान्वयन को चयन करने में नम्यता प्रदान करते हैं।
कंटेनर डेटा संरचनाएं सामान्य रूप से कई प्रकार की प्रोग्रामिंग भाषाओं में उपयोग की जाती हैं।
कार्य और गुण
कंटेनरों को निम्नलिखित तीन गुणों द्वारा चित्रित किया जा सकता है:
- अभिगम्य, अर्थात कंटेनर की वस्तुओं तक अभिगम्यता का तरीका है। सरणियों की स्थिति में, ऐरे इंडेक्स (अनुक्रमणिका) के साथ अभिगम्य किया जाता है। स्टैक की स्थिति में, एलआईएफओ (कंप्यूटिंग) (अंतिम अंदर प्रथम बाहर) क्रम के अनुसार अभिगम्य की जाती है और श्रेणी की स्थिति में यह फीफो (कंप्यूटिंग और इलेक्ट्रॉनिक्स) (पहले अंदर, पहले बाहर) क्रम के अनुसार किया जाता है ;
- भंडारण, अर्थात कंटेनर की वस्तुओं को संग्रहित करने का तरीका है;
- ट्रैवर्सल, अर्थात कंटेनर की वस्तुओं को ट्रैवर्स करने का तरीका है।
निम्नलिखित करने के लिए कंटेनर क्लासेस से बनाएं, पढ़ें, अपडेट करें और हटाएं (सीआरयूडीजैसी) विधियों को प्रयुक्त करने की अपेक्षा की जाती है:
- एक रिक्त कंटेनर (निर्माता) बनाएं;
- वस्तुओं को कंटेनर में डालें;
- कंटेनर से वस्तुओं (ऑब्जेक्ट्स) को हटा दें;
- कंटेनर में सभी वस्तुओं को हटा दें (स्पष्ट);
- कंटेनर में वस्तुओं तक पहुंचें;
- कंटेनर में वस्तुओं की संख्या तक पहुँचें (गिनती)।
कंटेनरों को कभी-कभी पुनरावृत्तियों के साथ संयोजन में कार्यान्वित किया जाता है।
प्रकार
कंटेनरों को सिंगल-वैल्यू कंटेनर या सहयोगी कंटेनर के रूप में वर्गीकृत किया जा सकता है।
सिंगल-वैल्यू कंटेनर प्रत्येक ऑब्जेक्ट को स्वतंत्र रूप से संग्रह करते हैं। भाषा लूप निर्माण (जैसे लूप के लिए) या पुनरावर्तक के साथ वस्तुओं को सीधे एक्सेस किया जा सकता है।
एक साहचर्य कंटेनर कुंजी-मूल्य जोड़े से बना एक साहचर्य सरणी, मानचित्र या शब्दकोश का उपयोग करता है, जैसे कि प्रत्येक कुंजी कंटेनर में अधिकतम एक बार दिखाई देती है। कुंजी का उपयोग मूल्य, वस्तु को खोजने के लिए किया जाता है, यदि यह कंटेनर में संग्रहीत है। साहचर्य कंटेनरों का उपयोग प्रोग्रामिंग भाषाओं में क्लास टेम्प्लेट के रूप में किया जाता है।
कंटेनर सार डेटा प्रकारों में सम्मिलित हैं:
- कतार (सार डेटा प्रकार)
- ढेर (सार डेटा प्रकार)
- प्राथमिकता कतारें
- तालिका देखो (LUTs)
- साहचर्य सरणी | कुंजी-संबद्ध डेटा संरचनाएं
- सेट (सार डेटा प्रकार), मूल्य या विशिष्ट संपत्ति द्वारा वस्तुओं को युक्त और अनुक्रमित करना;
- मानचित्र (कंप्यूटर विज्ञान), प्रत्येक कुंजी को लुकअप के लिए एक मान से संबद्ध करता है
इन सार प्रकारों को प्रयुक्त करने के लिए उपयोग की जाने वाली सामान्य डेटा संरचनाओं में सम्मिलित हैं:
- सरणी डेटा संरचना और उनके डेरिवेटिव
- लिंक्ड सूचियाँ
- बाइनरी सर्च ट्री (BSTs), विशेष रूप से सेल्फ-बैलेंसिंग बाइनरी सर्च ट्री | सेल्फ-बैलेंसिंग BSTs
- हैश तालिका
ग्राफिक कंटेनर
विजेट टूलकिट कंटेनर का भी उपयोग करते हैं, जो अन्य विजेट जैसे विंडो (कंप्यूटिंग), पैनल (कंप्यूटर सॉफ्टवेयर) को समूहित करने के लिए विशेष विजेट (कंप्यूटिंग) हैं। उनके ग्राफिकल गुणों के अलावा, उनके पास कंटेनर क्लासेस के समान व्यवहार है, क्योंकि वे अपने बच्चों के विजेट (कंप्यूटिंग) की एक सूची रखते हैं, और अपने बच्चों के बीच विजेट (कंप्यूटिंग) को जोड़ने, हटाने या पुनर्प्राप्त करने की स्वीकृति देते हैं।
वैधानिक रूप से टाइप की गई भाषाओं में
कंटेनर एब्सट्रैक्शन वस्तुतः किसी भी प्रोग्रामिंग भाषा में लिखा जा सकता है, चाहे उसका टाइप सिस्टम कुछ भी हो।[3]: 273 हालांकि, मजबूत और कमजोर टाइपिंग|दृढ़ता से टाइप की गई वस्तु-उन्मुख प्रोग्रामिंग भाषाओं में एक डेवलपर के लिए पुन: प्रयोज्य सजातीय कंटेनर लिखना कुछ जटिल हो सकता है।
तत्व प्रकारों में अंतर के कारण यह प्रत्येक मौलिक प्रकार के लिए लिखने और कंटेनरों का संग्रह रखने की एक कठिन प्रक्रिया में परिणत होता है।[3]: 274–276 कई तात्विक प्रकार (जैसे पूर्णांक या फ्लोटिंग नंबर) एक दूसरे के साथ स्वाभाविक रूप से असंगत होते हैं क्योंकि वे मेमोरी आकार और उनके अर्थपूर्ण अर्थ के कारण होते हैं और इसलिए विभिन्न कंटेनरों की आवश्यकता होती है (विशेष रूप से, वे पारस्परिक रूप से संगत या परिवर्तनीय हैं)।[3]: 274–276 आधुनिक प्रोग्रामिंग भाषाएँ समस्या को हल करने में सहायता करने के लिए विभिन्न दृष्टिकोण प्रदान करती हैं:[3]: 274–281
- यूनिवर्सल बुनियादी प्रकार
- एक प्रकार जो सार्वभौमिक रूप से किसी अन्य (जैसे रूट ऑब्जेक्ट क्लास) द्वारा असाइन किया जा सकता है।
- डाउनकास्टिंग;
- कक्षा प्रतिस्थापन
- कमजोर टाइप की गई भाषाओं के लिए उपरोक्त पिछले तीन दृष्टिकोणों का उपयोग किया जाता है; ये सामान्य रूप से इन्हेरिटेड और बहुरूपता को प्रकारों द्वारा साझा करते हैं।
- संघ प्रकार (C/C++ भाषा)
- विभिन्न प्रकार के डेटा आकारों के भंडारण की स्वीकृति देता है; हालांकि, यह सुनिश्चित करना कठिन है कि पुनर्प्राप्ति पर संघ में किस प्रकार का संग्रह किया जाता है और इसका सावधानीपूर्वक अनुसरण किया जाना चाहिए।
- प्रकार रूपांतरण
- टेम्पलेट (सी ++)C++)s या सामान्य प्रोग्रामिंग
- पुन: प्रयोज्यता और प्रकार की सुरक्षा सुनिश्चित करता है; रिवर्स इन्हेरिटेड के रूप में सोचा जा सकता है। हालांकि, इस दृष्टिकोण को एक टेम्पलेट विशेषज्ञता को प्रयुक्त करने की आवश्यकता हो सकती है जो प्रतिष्ठित रूप से एक समय लेने वाली प्रक्रिया है जो उनके तरीकों में भिन्न होती है।[3]: 281
यह भी देखें
- डेटा संरचनाओं की सूची
- मानक टेम्प्लेट लाइब्रेरी#कंटेनर
- संग्रह (सार डेटा प्रकार)
- स्टैक (डेटा संरचना)
- जावा समवर्ती मानचित्र
संदर्भ
- ↑ Paul E. Black (ed.), entry for data structure in Dictionary of Algorithms and Data Structures. US National Institute of Standards and Technology.15 December 2004. Accessed 4 Oct 2011.
- ↑ Entry data structure in the Encyclopædia Britannica (2009) Online entry Accessed 4 Oct 2011.
- ↑ 3.0 3.1 3.2 3.3 3.4 Budd, Timothy (1997). An introduction to object-oriented programming (2nd ed.). Reading, Mass.: Addison-Wesley. ISBN 0-201-82419-1. OCLC 34788238.