Abstraction => Abstract Data Type => Class

Abstract Data Type in OOPS with Example: एक Programmer जब किसी Program को लिखना चाहता है तो सबसे पहली चीज जो उसे Handle करनी होती है वह होती है समस्या। सामान्यतया हम एक Real Life Problem को Face कर रहे होते हैं और हम चाहते हैं कि उस Real Life Problem को Solve करने के लिए एक Computer Program बना लिया जाए। लेकिन Real Life Problems की कई बातें होती हैं। कुछ बातें समस्या के समाधान के लिए जरूरी होती हैं तो कुछ बातें उस समस्या के समाधान के लिए फालतू होती हैं।

हमें जो भी Program बनाना होता है, उस “Real Life” से जुडी हुई समस्या को Computer में Data के रूप में Feed करना होता है, ताकि Computer उस Data पर Processing कर सके। समस्या को Data के रूप में विभाजित करने के लिए हमें समस्या को समझना होता है, ताकि समस्या की उन आवश्‍यक बातों को अनावश्‍यक बातों से अलग किया जा सके, जो उस समस्या के समाधान के लिए उपयोगी हो सकती हैं। समस्या को अच्छी तरह से समझने के बाद सारांश के रूप में जो आवश्‍यक Details हमें प्राप्त होती हैं, उन्हें Computer में Data के रूप में इस्तेमाल किया जा सकता है।

किसी “Real Life” Problem को समझ कर उसकी उन आवश्‍यक बातों को जो कि समस्या के समाधान के लिए उपयोगी हो सकती हैं, ले लेना और शेष अनावश्‍यक बातों को छोड देना, इस प्रक्रिया को Abstraction कहा जाता है। इसे निम्न चित्र में दर्शाया गया है-

किसी बिखरी हुई समस्या को सुलझाने के लिए उसे चित्र में बताए Model Box के अनुसार व्यवस्थित कर लेना समस्या का Abstraction कहलाता है। यहां ऊपर बताए गए चित्र में Model Box समस्या का Abstract View दर्शा रहा है, जहां Model Box में केवल समस्या से सम्बंधित Details ही होती हैं जो समस्या के समाधान को प्रभावित करती हैं। शेष अनावश्‍यक Details को हटा दिया गया होता है।

समस्या का Abstraction करने के बाद हमारे पास समस्या से सम्बंधित केवल उपयोगी जानकारी ही होती है और समस्या से सम्बंधित इन उपयोगी जानकारियों से हमें समस्या की विशेषताओं को परिभाषित करना होता है। इन विशेषताओं में हमें निम्न दो बातें तय करनी होती हैं-

  1. वे Data कौन से हैं, जो कि समस्या में प्रभावित हो रहे हैं। यानी किस Data पर प्रक्रिया हो रही है। और
  2. वे प्रक्रियाएं कौनसी हैं जो Data पर Operations करती हैं और Data की स्थिति को परिवर्तित करती हैं।

इस प्रक्रिया को समझने के लिए हम एक उदाहरण लेते हैं। माना किसी Company का Head आता है और आपसे एक ऐसा Program बनाने के लिए कहता है, जिससे वह अपने Employees के बारे में सारी जानकारी रख सके और जब जिस Employee के बारे में चाहे उसकी Detail प्राप्त कर सके।

इस समस्या में सबसे पहले हमारा काम इस समस्या के मूल उद्‌देश्‍य को जानना है। इस समस्या में Administrator आपसे अपने Employees का Bio-Data जानना चाहता है। यानी इस समस्या में Employee प्रभावित हो रहा है, इसलिए एक Employee के बारे में जो भी जानकारियां जरूरी हो सकती हैं, वे सभी Details Computer के लिए Data होंगी। चूंकि Employee एक “Real Person” है इसलिए हर Employee की कई विशेषताएं (Characteristics) हो सकती हैं जैसे

  • name
  • size
  • date of birth,
  • shape
  • social number
  • room number
  • hair color
  • hobbies
  • etc…

निश्चित रूप से Employee की इन सभी Qualities की Administrator को कोई जरूरत नहीं होगी। इनमें से केवल कुछ ही बातें Administrator की समस्या से सम्बंधित होंगी, जिन्हें वह जानना चाहेगा। परिणामस्वरूप समस्या के समाधान के लिए हम Employee का एक Model बनाते हैं। इस Model में Employee की केवल उन विशेषताओं (Properties) को ही लिया जाता है, जिसकी Administrator को जरूरत हो सकती है। जैसे Employee का नाम, उसकी जन्म तारीख और उसकी Qualification, इन Properties को Model (Employee) का Data कहते हैं।

यानी हम एक Employee की विभिन्न Properties में से केवल उन Properties को ही समस्या में उपयोगी मान रहे हैं, जिनकी जानकारी Properties के लिए उपयोगी हो सकती है। यानी एक Employee की केवल उन बातों को ले रहे हैं जिनकी Administrator को जरूरत है, शेष को छोड रहे हैं। इसी प्रक्रिया को Abstraction कहते हैं, जिसमें समस्या से सम्बंधित जरूरी चीजों को अन्य बिना जरूरत की चीजों से अलग किया जाता है।

हालांकि इस समस्या के लिए Employee की जिन Properties को छोडा जा रहा है, हो सकता है कि किसी अन्य समस्या के समाधान में उन्हीं Properties की जरूरत हो। तो उस किसी दूसरी समस्या के Abstraction में प्राप्त होने वाली जरूरी बातें इस समस्या की जरूरी बातों से अलग होंगी।

इस उदाहरण से हम समझ सकते हैं कि किस प्रकार से एक Abstract Model का प्रयोग करके एक “Real World Object” यानी एक व्यक्ति को Describe कर सकते हैं और फिर उस Real World Object को Computer में Logically Represent कर सकते हैं।

हालांकि अभी भी ये विवरण पूर्ण नहीं है। यहां कुछ Operations भी परिभाषित किए जाने चाहिएं, जिससे Administrator उस Abstract Employee को Handle कर सके। उदाहरण के लिए यहां एक ऐसा Operation होना चाहिए, जिससे जब कोई नया व्यक्ति Company में आए तो Program में भी नए Employee को Create किया जा सके।

यानी हमें ऐसे Operations को भी तय करना होगा जिनको Abstract Employee पर Perform किया जा सके। हमें ये भी तय करना होगा कि Company के Employees के Data को केवल वे ही Operations Access कर सकें, जिन्हें ऐसा करने के लिए Define किया गया है। ऐसा करने पर हमेंशा ये निश्चित रहेगा कि Data Elements उनकी सही स्थिति में हैं।

सारांश में कहें तो Abstraction एक ऐसा तरीका है जिससे जटिल “Real Life” Problem को उनके Data और (Data के मान को Change करने वाले) Operations द्वारा एक Well Defined Unit या Entity के रूप में व्यवस्थित किया जा सकता है, जिसमें समस्या के Data व Data पर काम करने वाले Operations सम्मिलित रूप से एक साथ Combined रहते हैं।

जब किसी समस्या से प्रभावित होने वाले विभिन्न Data व उन Data पर काम करने वाले विभिन्न Operations को एक इकाई के रूप में परिभाषित किया जाता है, तो इस प्रक्रिया को Encapsulation कहते हैं और इस Unit को Entity या Object कहा जाता है।

C++ में हम जो Class Develop करते हैं, वह एक Abstract Data Type या नए प्रकार का Data Type होता है। जिस तरह से यदि हमें Integer प्रकार के मान को Computer में Manage करना हो तो हम int Class के Data Type का एक Instance या Object Create करते हैं और यदि हमें किसी नाम को Computer में Store करके Manage करना हो तो हम String Class का एक Object Create करते हैं, उसी तरह से C++ में जो Class बनाई जाती है, वह Class भी एक नए प्रकार का Data Type होता है और हम इस Class के भी Objects Create करके उसे Computer में Store व Manage कर सकते हैं।

यहां आपके दिमाग में एक सवाल आ सकता है, कि जब हमारे पास Basic प्रकार के Data Type हैं तो हमें नए Data Type बनाने की क्या जरूरत है?

इसका जवाब ये है कि Basic प्रकार के Data Type के Objects की एक परेशानी ये है कि हम Computer में कोई भी मान स्वतंत्र रूप से Store नहीं करते हैं। हर मान का किसी दूसरे मान से सम्बंध होता है। यदि हमें केवल एक संख्‍या को Computer में Store करना हो, तो हम int या float या double प्रकार का Object Create करके मान को Computer में Store कर सकते हैं।

यदि हमें एक ही Data Type के कई मान Computer में Store करके Manage करने हों तो हम Array का प्रयोग कर सकते हैं, लेकिन जब हमें कई प्रकार के मानों को एक समूह के रूप में Computer में Store व Manage करना हो, तब हमें एक ऐसे तरीके की जरूरत पडती है, जिससे हम विभिन्न प्रकार के Data Types का प्रयोग कर सकें और उन्हें एक साथ एक ही Object के सन्दर्भ में Use कर सकें।

उदाहरण के लिए यदि हमें केवल एक Student के Roll Number को Computer में Store करना हो, तो हम एक int प्रकार का Variable Declare कर सकते हैं। यदि हमें दस Students के Roll Number Store करने हों तो हम int प्रकार का एक Array Create कर सकते हैं, लेकिन यदि हमें एक Student के नाम, Address, Contact Number, Class, City, State आदि कई प्रकार के Data को Computer में Store करना हो, तो हमारे पास एक ऐसा तरीका होना चाहिए, जिससे हम एक ही समय पर आवश्‍यकतानुसार int, float, double, char सभी प्रकार के Data के समूह के साथ प्रक्रिया कर सकें।

यदि ऐसा तरीका ना हो तो हम ये किस तरह से ये तय करेंगे कि हम जिस Student के नाम को Access कर रहे हैं, उसके पिता का वही नाम Computer Return करेगा जो हमने Feed किया था। ऐसा तभी हो सकता है, जब हर Student के Record के सभी Fields एक दूसरे से Related हों और सभी Fields एक साथ Access होते हों। Class हमें यही सुविधा प्रदान करता है। (Abstract Data Type in OOPS with Example)

CPP Programming Language in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook C++ Programming Language in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C++ Programming Language in Hindi | Page: 666 | Format: PDF

BUY NOW GET DEMO REVIEWS