कंटेनर (सार डेटा प्रकार): Difference between revisions
No edit summary |
(→प्रकार) |
||
Line 2: | Line 2: | ||
''कंटेनर (कंप्यूटर विज्ञान)" यहां पुनर्निर्देश करता है। प्रारूप सिद्धांत में कंटेनरों की अमूर्त धारणा के लिए, कंटेनर (प्रारूप सिद्धांत) देखें। अन्य उपयोगों के लिए, कंटेनर (बहुविकल्पी) देखें।'' | ''कंटेनर (कंप्यूटर विज्ञान)" यहां पुनर्निर्देश करता है। प्रारूप सिद्धांत में कंटेनरों की अमूर्त धारणा के लिए, कंटेनर (प्रारूप सिद्धांत) देखें। अन्य उपयोगों के लिए, कंटेनर (बहुविकल्पी) देखें।'' | ||
[[कंप्यूटर विज्ञान]] में, | [[कंप्यूटर विज्ञान]] में, '''कंटेनर''' एक क्लास (कंप्यूटर विज्ञान) या [[डेटा संरचना]] है<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> जिनके उदाहरण अन्य वस्तुओं का संग्रह हैं। दूसरे शब्दों में, वे वस्तुओं को एक संगठित तरीके से संग्रहीत करते हैं जो विशिष्ट अभिगम्य नियमों का अनुसरण करते हैं। | ||
कंटेनर का आकार इसमें सम्मिलित वस्तुओं (तत्वों) की संख्या पर निर्भर करता है। विभिन्न कंटेनर प्रकारों के अंतर्निहित (इन्हेरिटेड) कार्यान्वयन आकार, जटिलता और भाषा के प्रारूपो में भिन्न हो सकते हैं, लेकिन कई स्थितियों में वे किसी भी परिदृश्य के लिए सही कार्यान्वयन को चयन करने में नम्यता प्रदान करते हैं। | कंटेनर का आकार इसमें सम्मिलित वस्तुओं (तत्वों) की संख्या पर निर्भर करता है। विभिन्न कंटेनर प्रकारों के अंतर्निहित (इन्हेरिटेड) कार्यान्वयन आकार, जटिलता और भाषा के प्रारूपो में भिन्न हो सकते हैं, लेकिन कई स्थितियों में वे किसी भी परिदृश्य के लिए सही कार्यान्वयन को चयन करने में नम्यता प्रदान करते हैं। | ||
Line 8: | Line 8: | ||
कंटेनर डेटा संरचनाएं सामान्य रूप से कई प्रकार की [[प्रोग्रामिंग भाषा]]ओं में उपयोग की जाती हैं। | कंटेनर डेटा संरचनाएं सामान्य रूप से कई प्रकार की [[प्रोग्रामिंग भाषा]]ओं में उपयोग की जाती हैं। | ||
== | == फ़ंक्शन और गुण == | ||
कंटेनरों को निम्नलिखित तीन गुणों द्वारा चित्रित किया जा सकता है: | कंटेनरों को निम्नलिखित तीन गुणों द्वारा चित्रित किया जा सकता है: | ||
* अभिगम्य, अर्थात कंटेनर की वस्तुओं तक अभिगम्यता का तरीका है। सरणियों की स्थिति में, ऐरे इंडेक्स (अनुक्रमणिका) के साथ अभिगम्य किया जाता है। स्टैक की स्थिति में, एलआईएफओ (कंप्यूटिंग) (अंतिम अंदर प्रथम बाहर) क्रम के अनुसार अभिगम्य की जाती है और | * अभिगम्य, अर्थात कंटेनर की वस्तुओं तक अभिगम्यता का तरीका है। सरणियों की स्थिति में, ऐरे इंडेक्स (अनुक्रमणिका) के साथ अभिगम्य किया जाता है। स्टैक की स्थिति में, एलआईएफओ (कंप्यूटिंग) (अंतिम अंदर प्रथम बाहर) क्रम के अनुसार अभिगम्य की जाती है और श्रेणी की स्थिति में यह [[फीफो (कंप्यूटिंग और इलेक्ट्रॉनिक्स)]] (पहले अंदर, पहले बाहर) क्रम के अनुसार किया जाता है ; | ||
* भंडारण, अर्थात कंटेनर की वस्तुओं को संग्रहित करने का तरीका है; | * भंडारण, अर्थात कंटेनर की वस्तुओं को संग्रहित करने का तरीका है; | ||
* ट्रैवर्सल, अर्थात कंटेनर की वस्तुओं को ट्रैवर्स करने का तरीका है। | * ट्रैवर्सल, अर्थात कंटेनर की वस्तुओं को ट्रैवर्स करने का तरीका है। | ||
निम्नलिखित करने के लिए कंटेनर क्लासेस | निम्नलिखित करने के लिए कंटेनर क्लासेस से [[CRUD|बनाएं, पढ़ें, अपडेट करें और हटाएं]] (सीआरयूडीजैसी) विधियों को प्रयुक्त करने की अपेक्षा की जाती है: | ||
* एक रिक्त कंटेनर (निर्माता) बनाएं; | * एक रिक्त कंटेनर (निर्माता) बनाएं; | ||
* वस्तुओं को कंटेनर में डालें; | * वस्तुओं को कंटेनर में डालें; | ||
Line 25: | Line 25: | ||
== प्रकार == | == प्रकार == | ||
कंटेनरों को | कंटेनरों को एकल-मूल्य वाले कंटेनरों या सहयोगी कंटेनरों के रूप में वर्गीकृत किया जा सकता है। | ||
एकल-मूल्य वाले कंटेनर प्रत्येक वस्तु को स्वतंत्र रूप से संग्रहीत करते हैं। ऑब्जेक्ट्स को प्रत्यक्ष रूप से एक भाषा लूप निर्माण (जैसे लूप के लिए) या एक इटरेटर (पुनरावर्तक) के साथ अभिगम्य किया जा सकता है। | |||
सहयोगी कंटेनर कुंजी-मूल्य जोड़े से बना एक साहचर्य सरणी, मानचित्र या शब्दकोश का उपयोग करता है, जैसे कि प्रत्येक कुंजी कंटेनर में अधिकतम एक बार दिखाई देती है। कुंजी का उपयोग मान, वस्तु को खोजने के लिए किया जाता है, यदि यह कंटेनर में संग्रहीत है। साहचर्य कंटेनरों का उपयोग प्रोग्रामिंग भाषाओं में क्लास टेम्प्लेट के रूप में किया जाता है। | |||
कंटेनर | कंटेनर अमूर्त डेटा प्रकार में सम्मिलित हैं: | ||
* [[कतार (सार डेटा प्रकार)]] | * [[कतार (सार डेटा प्रकार)|फीफो श्रेणी]] | ||
* [[ढेर (सार डेटा प्रकार)]] | * [[ढेर (सार डेटा प्रकार)|लिफो स्टैक]] | ||
* [[प्राथमिकता कतार]] | * [[प्राथमिकता कतार|प्राथमिकता]] श्रेणी | ||
* | * लुकअप तालिकाएँ (एलयूटी) | ||
* | * कुंजी-संबंधित डेटा संरचनाएं | ||
** | ** मूल्य या विशिष्ट संपत्ति द्वारा वस्तुओं को निर्धारित करना, युक्त करना और अनुक्रमण करना; | ||
** [[मानचित्र (कंप्यूटर विज्ञान)]], प्रत्येक कुंजी को लुकअप के लिए एक मान से संबद्ध करता है | ** [[मानचित्र (कंप्यूटर विज्ञान)]], प्रत्येक कुंजी को लुकअप के लिए एक मान से संबद्ध करता है | ||
इन | इन अमूर्त प्रारूप को प्रयुक्त करने के लिए उपयोग की जाने वाली सामान्य डेटा संरचनाओं में सम्मिलित हैं: | ||
* [[सरणी डेटा संरचना]] और उनके डेरिवेटिव | * [[सरणी डेटा संरचना]] और उनके डेरिवेटिव ( व्युत्पन्न शब्द) | ||
* | * लिंक की गई सूचियां | ||
* | * बाइनरी सर्च ट्री (बीएसटी), विशेष रूप से स्व-संतुलन वाले बीएसटी | ||
* [[हैश तालिका]] | * [[हैश तालिका|हैश सारणी]] | ||
== ग्राफिक कंटेनर == | == ग्राफिक कंटेनर == | ||
[[विजेट टूलकिट]] कंटेनर का भी उपयोग करते हैं, जो अन्य विजेट जैसे [[विंडो (कंप्यूटिंग)]], [[पैनल (कंप्यूटर सॉफ्टवेयर)]] को समूहित करने के लिए विशेष [[विजेट (कंप्यूटिंग)]] हैं। उनके ग्राफिकल गुणों के | [[विजेट टूलकिट]] कंटेनर का भी उपयोग करते हैं, जो अन्य विजेट जैसे [[विंडो (कंप्यूटिंग)]], [[पैनल (कंप्यूटर सॉफ्टवेयर)]] को समूहित करने के लिए विशेष [[विजेट (कंप्यूटिंग)]] हैं। उनके ग्राफिकल गुणों के अतिरिक्त, उनके पास कंटेनर क्लासेस के समान गतिविधि है, क्योंकि वे अपने बच्चों के विजेट (कंप्यूटिंग) की एक सूची रखते हैं, और अपने बच्चों के बीच विजेट (कंप्यूटिंग) को जोड़ने, हटाने या पुनर्प्राप्त करने की स्वीकृति देते हैं। | ||
== वैधानिक रूप से टाइप की गई भाषाओं में == | == वैधानिक रूप से टाइप की गई भाषाओं में == | ||
{{See also| | {{See also|वैधानिक रूप से टाइप की गई प्रोग्रामिंग भाषा और प्रबल और दुर्बल टाइपिंग}} | ||
तत्व | कंटेनर एब्सट्रैक्शन वस्तुतः किसी भी प्रोग्रामिंग भाषा में लिखा जा सकता है, तथापि उसका टाइप सिस्टम कुछ भी हो।<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-281}} | |||
:; सार्वभौमिक मूल प्रारूप | |||
:: प्रारूप जो सार्वभौमिक रूप से किसी अन्य (जैसे रूट ऑब्जेक्ट क्लास) द्वारा निर्देश्य किया जा सकता है। | |||
:; [[डाउनकास्टिंग]]; | :; [[डाउनकास्टिंग]]; | ||
:; | :; क्लास प्रतिस्थापन | ||
:: | :: दुर्बल टाइप की गई भाषाओं के लिए उपरोक्त पूर्व तीन दृष्टिकोणों का उपयोग किया जाता है; ये सामान्य रूप से इन्हेरिटेड और बहुरूपता को प्रारूपों द्वारा साझा करते हैं। | ||
:; [[संघ प्रकार]] (C/C++ भाषा) | :; [[संघ प्रकार|संघ]] प्रारूप (C/C++ भाषा) | ||
:: विभिन्न प्रकार के डेटा आकारों के भंडारण की स्वीकृति देता है; हालांकि, यह सुनिश्चित करना कठिन है कि पुनर्प्राप्ति पर संघ में किस | :: विभिन्न प्रकार के डेटा आकारों के भंडारण की स्वीकृति देता है; हालांकि, यह सुनिश्चित करना कठिन है कि पुनर्प्राप्ति पर संघ में किस प्रारूप का संग्रह किया जाता है और इसका सावधानीपूर्वक अनुसरण किया जाना चाहिए। | ||
:; | :; प्रारूप रूपांतरण | ||
:; [[टेम्पलेट (सी ++)]]C++)s या [[सामान्य प्रोग्रामिंग]] | :; [[टेम्पलेट (सी ++)|टेम्पलेट (C ++)]]C++)s या [[सामान्य प्रोग्रामिंग]] | ||
:: पुन: प्रयोज्यता और | :: पुन: प्रयोज्यता और प्रारूप की सुरक्षा सुनिश्चित करता है; प्रतिकृति इन्हेरिटेड के रूप में विचार किया जा सकता है। हालांकि, इस दृष्टिकोण को [[टेम्पलेट विशेषज्ञता]] को प्रयुक्त करने की आवश्यकता हो सकती है जो विशेष रूप से एक समय लेने वाली प्रक्रिया है जो उनके तरीकों में भिन्न होती है।{{r|Budd1997|pages=281}} | ||
Line 71: | Line 73: | ||
* [[डेटा संरचनाओं की सूची]] | * [[डेटा संरचनाओं की सूची]] | ||
*मानक टेम्प्लेट लाइब्रेरी#कंटेनर | *मानक टेम्प्लेट लाइब्रेरी#कंटेनर | ||
* [[संग्रह (सार डेटा प्रकार)]] | * [[संग्रह (सार डेटा प्रकार)|संग्रह (अमूर्त डेटा प्रारूप)]] | ||
* [[ढेर (डेटा संरचना)|स्टैक (डेटा संरचना)]] | * [[ढेर (डेटा संरचना)|स्टैक (डेटा संरचना)]] | ||
* [[जावा समवर्ती मानचित्र]] | * [[जावा समवर्ती मानचित्र]] |
Revision as of 20:20, 25 February 2023
कंटेनर (कंप्यूटर विज्ञान)" यहां पुनर्निर्देश करता है। प्रारूप सिद्धांत में कंटेनरों की अमूर्त धारणा के लिए, कंटेनर (प्रारूप सिद्धांत) देखें। अन्य उपयोगों के लिए, कंटेनर (बहुविकल्पी) देखें।
कंप्यूटर विज्ञान में, कंटेनर एक क्लास (कंप्यूटर विज्ञान) या डेटा संरचना है[1][2] जिनके उदाहरण अन्य वस्तुओं का संग्रह हैं। दूसरे शब्दों में, वे वस्तुओं को एक संगठित तरीके से संग्रहीत करते हैं जो विशिष्ट अभिगम्य नियमों का अनुसरण करते हैं।
कंटेनर का आकार इसमें सम्मिलित वस्तुओं (तत्वों) की संख्या पर निर्भर करता है। विभिन्न कंटेनर प्रकारों के अंतर्निहित (इन्हेरिटेड) कार्यान्वयन आकार, जटिलता और भाषा के प्रारूपो में भिन्न हो सकते हैं, लेकिन कई स्थितियों में वे किसी भी परिदृश्य के लिए सही कार्यान्वयन को चयन करने में नम्यता प्रदान करते हैं।
कंटेनर डेटा संरचनाएं सामान्य रूप से कई प्रकार की प्रोग्रामिंग भाषाओं में उपयोग की जाती हैं।
फ़ंक्शन और गुण
कंटेनरों को निम्नलिखित तीन गुणों द्वारा चित्रित किया जा सकता है:
- अभिगम्य, अर्थात कंटेनर की वस्तुओं तक अभिगम्यता का तरीका है। सरणियों की स्थिति में, ऐरे इंडेक्स (अनुक्रमणिका) के साथ अभिगम्य किया जाता है। स्टैक की स्थिति में, एलआईएफओ (कंप्यूटिंग) (अंतिम अंदर प्रथम बाहर) क्रम के अनुसार अभिगम्य की जाती है और श्रेणी की स्थिति में यह फीफो (कंप्यूटिंग और इलेक्ट्रॉनिक्स) (पहले अंदर, पहले बाहर) क्रम के अनुसार किया जाता है ;
- भंडारण, अर्थात कंटेनर की वस्तुओं को संग्रहित करने का तरीका है;
- ट्रैवर्सल, अर्थात कंटेनर की वस्तुओं को ट्रैवर्स करने का तरीका है।
निम्नलिखित करने के लिए कंटेनर क्लासेस से बनाएं, पढ़ें, अपडेट करें और हटाएं (सीआरयूडीजैसी) विधियों को प्रयुक्त करने की अपेक्षा की जाती है:
- एक रिक्त कंटेनर (निर्माता) बनाएं;
- वस्तुओं को कंटेनर में डालें;
- कंटेनर से वस्तुओं (ऑब्जेक्ट्स) को हटा दें;
- कंटेनर में सभी वस्तुओं को हटा दें (स्पष्ट);
- कंटेनर में वस्तुओं तक पहुंचें;
- कंटेनर में वस्तुओं की संख्या तक पहुँचें (गिनती)।
कंटेनरों को कभी-कभी पुनरावृत्तियों के साथ संयोजन में कार्यान्वित किया जाता है।
प्रकार
कंटेनरों को एकल-मूल्य वाले कंटेनरों या सहयोगी कंटेनरों के रूप में वर्गीकृत किया जा सकता है।
एकल-मूल्य वाले कंटेनर प्रत्येक वस्तु को स्वतंत्र रूप से संग्रहीत करते हैं। ऑब्जेक्ट्स को प्रत्यक्ष रूप से एक भाषा लूप निर्माण (जैसे लूप के लिए) या एक इटरेटर (पुनरावर्तक) के साथ अभिगम्य किया जा सकता है।
सहयोगी कंटेनर कुंजी-मूल्य जोड़े से बना एक साहचर्य सरणी, मानचित्र या शब्दकोश का उपयोग करता है, जैसे कि प्रत्येक कुंजी कंटेनर में अधिकतम एक बार दिखाई देती है। कुंजी का उपयोग मान, वस्तु को खोजने के लिए किया जाता है, यदि यह कंटेनर में संग्रहीत है। साहचर्य कंटेनरों का उपयोग प्रोग्रामिंग भाषाओं में क्लास टेम्प्लेट के रूप में किया जाता है।
कंटेनर अमूर्त डेटा प्रकार में सम्मिलित हैं:
- फीफो श्रेणी
- लिफो स्टैक
- प्राथमिकता श्रेणी
- लुकअप तालिकाएँ (एलयूटी)
- कुंजी-संबंधित डेटा संरचनाएं
- मूल्य या विशिष्ट संपत्ति द्वारा वस्तुओं को निर्धारित करना, युक्त करना और अनुक्रमण करना;
- मानचित्र (कंप्यूटर विज्ञान), प्रत्येक कुंजी को लुकअप के लिए एक मान से संबद्ध करता है
इन अमूर्त प्रारूप को प्रयुक्त करने के लिए उपयोग की जाने वाली सामान्य डेटा संरचनाओं में सम्मिलित हैं:
- सरणी डेटा संरचना और उनके डेरिवेटिव ( व्युत्पन्न शब्द)
- लिंक की गई सूचियां
- बाइनरी सर्च ट्री (बीएसटी), विशेष रूप से स्व-संतुलन वाले बीएसटी
- हैश सारणी
ग्राफिक कंटेनर
विजेट टूलकिट कंटेनर का भी उपयोग करते हैं, जो अन्य विजेट जैसे विंडो (कंप्यूटिंग), पैनल (कंप्यूटर सॉफ्टवेयर) को समूहित करने के लिए विशेष विजेट (कंप्यूटिंग) हैं। उनके ग्राफिकल गुणों के अतिरिक्त, उनके पास कंटेनर क्लासेस के समान गतिविधि है, क्योंकि वे अपने बच्चों के विजेट (कंप्यूटिंग) की एक सूची रखते हैं, और अपने बच्चों के बीच विजेट (कंप्यूटिंग) को जोड़ने, हटाने या पुनर्प्राप्त करने की स्वीकृति देते हैं।
वैधानिक रूप से टाइप की गई भाषाओं में
कंटेनर एब्सट्रैक्शन वस्तुतः किसी भी प्रोग्रामिंग भाषा में लिखा जा सकता है, तथापि उसका टाइप सिस्टम कुछ भी हो।[3]: 273 हालांकि, |दृढ़ता से टाइप की गई वस्तु-उन्मुख प्रोग्रामिंग भाषाओं में एक विकासक के लिए पुन: प्रयोज्य सजातीय कंटेनर लिखना कुछ जटिल हो सकता है।
तत्व प्रारूप में अंतर के कारण यह प्रत्येक मौलिक प्रकार के लिए लिखने और कंटेनरों का संग्रह रखने की एक कठिन प्रक्रिया में परिणत होता है।[3]: 274–276
कई तात्विक प्रारूप (जैसे पूर्णांक या फ्लोटिंग (चल) संख्या) एक दूसरे के साथ स्वाभाविक रूप से असंगत होते हैं क्योंकि वे मेमोरी आकार और उनके अर्थपूर्ण अर्थ के कारण होते हैं और इसलिए विभिन्न कंटेनरों की आवश्यकता होती है (विशेष रूप से, वे पारस्परिक रूप से संगत या परिवर्तनीय हैं)।[3]: 274–276 आधुनिक प्रोग्रामिंग भाषाएँ समस्या को संशोधित करने में सहायता करने के लिए विभिन्न दृष्टिकोण प्रदान करती हैं:[3]: 274–281
- सार्वभौमिक मूल प्रारूप
- प्रारूप जो सार्वभौमिक रूप से किसी अन्य (जैसे रूट ऑब्जेक्ट क्लास) द्वारा निर्देश्य किया जा सकता है।
- डाउनकास्टिंग;
- क्लास प्रतिस्थापन
- दुर्बल टाइप की गई भाषाओं के लिए उपरोक्त पूर्व तीन दृष्टिकोणों का उपयोग किया जाता है; ये सामान्य रूप से इन्हेरिटेड और बहुरूपता को प्रारूपों द्वारा साझा करते हैं।
- संघ प्रारूप (C/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.