marq

Dr. Charles Simonyi is the Father of Modern Microsoft Excel                                           JavaScript was originally developed by Brendan Eich of Netscape under the name Mocha, later LiveScript, and finally renamed to JavaScript.                                           The word "Biology" is firstly used by Lamarck and Treviranus                                           Hippocrates (460-370 bc) is known as father of medicine.                                           Galene, 130-200 is known as father of Experimental Physology                                           Aristotle (384-322 BC) is known as Father of Zoology because he wrote the construction and behavior of different animals in his book "Historia animalium"                                           Theophrastus(370-285 BC) is known as father of Botany because he wrote about 500 different plants in his book "Historia Plantarum".                                           John Resig is known as Father of Jquery -                                          HTML is a markup language which is use to design web pages. It was invented in 1990 by Tim Berners-Lee.                                                                The Google was founded by Larry Page and Sergey Brin.                                                                Rasmus Lerdorf was the original creator of PHP. It was first released in 1995.                                                               Facebook was founded by Mark Zuckerberg                                                               Bjarne Stroustrup, creator of C++.                                                                Dennis Ritchie creator of C                                                                                                                              James Gosling, also known as the "Father of Java"                                          At 11.44%, Bihar is India's fastest growing state                                          Father of HTML -Tim Berners Lee                                          orkut was created by Orkut Büyükkökten, a Turkish software engineer                    Photoshop: It came about after Thomas Knoll, a PhD student at the University of Michigan created a program to display grayscale images on a monochrome monitor which at the time was called 'Display'.

Abstraction and ADT - Java in Hindi



Abstraction – The Problem Simplifying Process
किसी भी Real Life Problem को जब हमें Computer पर Logically Represent करना होता है, तो सबसे पहले हमें ये तय करना होता है कि समस्या से सम्बंधित वे जरूरी चीजें कौन-कौन सी हैं, जो समस्या के परिणाम को प्रभावित करती हैं। समस्या के समाधान को प्रभावित करने वाली जरूरी बातों को समस्या के समाधान को प्रभावित ना करने वाली बिना जरूरी बातों से अलग करने की प्रक्रिया को Abstraction कहते हैं। OOPS के इस Concept को हम पिछले उदाहरण द्वारा ही समझने की कोशिश करते हैं।

मानलो कि किसी Company के विभिन्न Employees के Bio – Data को Computer पर Store करना है। चूंकि इस काम को सम्पन्न करने के लिए एक निश्चित क्रम का पालन करना पडता है, इसलिए Computer के लिए ये काम एक प्रकार की समस्या है, जिसे Solve करना है। अब चूंकि हमारी समस्या का मुख्‍य Object Employee है, इसलिए उसके कई Attributes हो सकते हैं जो एक Employee को दूसरे Employee से Uniquely Identify करने में मदद करते हैं। Employee की विभिन्न Properties में से कुछ निम्नानुसार हो सकते हैं:
Employee’s First Name
Employee’s Last Name
Address
City
District
State
Date Of Birth
Qualification
Extra Ability
Degrees
Designation
Date Of Company Joining
Hobbies
Contact Number
No. of His Brothers and Sisters
His Father’s Date of Birth
His Father’s Name
His Friends Contact Number

हम देख सकते हैं कि इसी तरह से एक Employee की इससे भी ज्यादा Properties हो सकती हैं, जिनके आधार पर उसे Uniquely किसी दूसरे Employee से अलग Identify किया जा सके। लेकिन इस List में हम देख सकते हैं, कि Employee के कुछ Attributes ऐसे हैं, जिनका Employee के Bio – Data यानी मुख्‍य समस्या के परिणाम से कोई सम्बंध नहीं है। जैसे कि Employee के कितने भाई - बहन हैं, इस बात का Employee के Bio – Data से कोई सम्बंध नहीं है। इसी तरह से Employee के पिता के Date of Birth का Employee के Bio – Data से कोई सम्बन्ध नहीं है और Employee के दोस्त के Contact Number का कोई सम्बंध Employee के Bio – Data से नहीं हैं। यानी ये तीन Attributes ऐसे Attributes हैं, जिनका Employee के Bio – Data से कोई सम्बंध नहीं है। इसलिए इन बिना जरूरी Data को बाकी के जरूरी Data से अलग कर देने पर हमारे सामने निम्नानुसार Attributes आते हैं:
Employee’s First Name
Employee’s Last Name
Address
City
District
State
Date Of Birth
Qualification
Extra Ability
Degrees
Designation
Date Of Company Joining
Hobbies
Contact Number
His Father’s Name

इस प्रकार से हमने समस्या (Bio – Data of Employee) के परिणाम को प्रभावित करने वाले जरूरी Attributes को समस्या से असम्बंधित बिना जरूरी Attributes से अलग किया। इस प्रक्रिया को Abstraction कहते हैं और हमें समस्या के परिणाम को प्रभावित करने वाले जो जरूरी Attributes प्राप्त हुए हैं, इन Attributes को Abstract Attributes कहते हैं।


Abstract Data Type – Logical Representation of a Real World Object
हम देख सकते हैं कि Bio – Data Problem से सम्बंधित Attributes को प्राप्त करने के लिए हमने सबसे पहले किसी Employee के सभी Attributes पर विचार किया और फिर जरूरी Attributes को बिना जरूरी Attributes से अलग करके जरूरी Attributes को प्राप्त कर लिया। अब इसी समस्या के Employee Object को यदि Computer में Logically Represent करना हो, तो हमें इन Abstract Attributes के आधार पर एक Abstract Data Type बनाना होता है। इस Abstract Data Type को Object Oriented Programming Languages में Class भी कहते हैं।

Class एक नए प्रकार का User Defined Data Type होता है, जो समस्या से सम्बंधित किसी Real World Object को Computer में Logically Represent करने के लिए बनाया जाता है। Class एक Specification होता है, जो किसी समस्या से सम्बंधित किसी Real World Object के विभिन्न Abstract Attributes के मानों की Computer Memory में Representation को Specify करता है।


Attributes – The Data Members of The Class
किसी समस्या के परिणाम से सम्बंधित किसी Object के विभिन्न Attributes को जब Computer में Represent करना होता है, तब Computer में उस Object के Attributes में Store होने वाले Data के आधार पर हम ये तय करते हैं कि Object का कौनसा Attribute किस प्रकार के मान (Integer, Character या Float) द्वारा Represent हो सकता है। जो Attribute जिस प्रकार के मान द्वारा Represent हो सकता है, उस Attribute को उसी प्रकार के Data Type के साथ Declare कर दिया जाता है। Data Type के साथ Object के Attributes को Declare करने पर Object के विभिन्न Abstract Attributes Class के Data Members कहलाते हैं।


इसी बात को यदि हम दूसरे शब्दों में कहें तो Abstraction से प्राप्त Abstract Attributes किस प्रकार के Data Store करेंगे, इस तथ्य पर निर्भर करते हुए या इस बात को ध्यान में रखते हुए, इन विभिन्न Abstract Attributes के Basic Data Type को तय किया जाता है। जब इन Abstract Attributes को उनके Data Type के साथ Class में Specify किया जाता है, तब इन Abstract Attributes के Declaration को Class के Data Members कहते हैं।


Behaviors – The Methods of The Class
कोई Object जो काम करता है, उन कामों को उस Object का Behavior कहते हैं। लेकिन जब हम किसी Object को Computer में Represent करना चाहते हैं, तब हम ये नहीं देखते हैं कि Object वास्तव में क्या-क्या कर सकता है, बल्कि हम ये देखते हैं, कि Object के वे कौन से काम हैं, जिनके द्वारा एक Object अपने किसी उस Attribute को Change करता है, जिन्हें Abstraction की प्रक्रिया द्वारा Identify किया गया है।


किसी समस्या से सम्बंधित Abstract Attributes को उस Object के जो Behaviors प्रभावित करते हैं, Object के वे Behaviors ही उस समस्या से सम्बंधित Behaviors हैं। जावा में Object की Class द्वारा इन Behaviors को Represent करने के लिए हमें Methods का प्रयोग करना होता है। Methods जावा के वे Code Segments होते हैं, जो किसी Object के किसी ना किसी Abstract Attribute के मान को किसी ना किसी प्रकार से Change करते हैं। यानी वे Operations जिन्हें सम्पन्न करने पर Object के किसी ना किसी Abstract Attribute के मान में परिवर्तन हो, Methods कहलाते हैं।


Problem Design (OOPS) v/s Problem Implementation (OOPL)
OOPS व OOPL दोनों के आधार पर हमेंशा किसी भी OOPS Concept की दो परिभाषाएं बनती हैं। एक परिभाषा केवल OOPS के Concept को Represent करने का काम करती है जबकि दूसरी परिभाषा उस पहली परिभाषा के आधार पर किसी Programming Language में OOPS के उस Concept को Implement करने से सम्बंधित होती है। जब हम OOPS के सम्बंध में कोई परिभाषा देते हैं, तो वह परिभाषा किसी Real World समस्या व उससे सम्बंधित किसी Real World Physical Object के सम्बंध में और किसी Software को Design करने के सम्बंध में होती है। लेकिन जब हम OOPS की विभिन्न परिभाषाओं को किसी Programming Language में Implement करते हैं, तब OOPS का मुख्‍य Purpose ये होता है कि किसी Real World Object को Best तरीके से किसी Programming Language में Logically Represent किया जाए, ताकि समस्या से सम्बंधित किसी Real World Object को Computer में एक नए Data Type जिसे Abstract Data Type कहते हैं, के रूप में Represent किया जा सके।

किसी समस्या को Solve करने के लिए हम दो Approach Use कर सकते हैं। पहला Approach पूरी तरह से OOPS के Concepts पर आधारित होता है और Problem के Solution को Design करने से सम्बधित होता है। यानी हम एक भी Line की Coding लिखे बिना भी किसी Software को OOPS के Concept के आधार पर Design कर सकते हैं। अन्तर केवल इतना होगा कि इस Design का कोई प्रत्यक्ष परिणाम हमें प्राप्त नहीं होगा। जबकि OOPS के आधार पर हम जिस Modal को बनाएंगे उस Modal को यदि किसी OOPL Language में Implement कर दिया जाए तो हमें समस्या का प्रत्यक्ष परिणाम प्राप्त हो जाएगा।

इस बात को सरल तरीके से कहें तो दो संख्‍याओं को जोडने का Algorithm लिख देने से हमें दो संख्‍याओं का योग प्राप्त नहीं होगा बल्कि दो संख्‍याओं का योग करने के लिए किस प्रकार से काम करना होगा, उस काम करने की Process का पता चलेगा। जबकि इस Algorithm के आधार पर किसी Programming Language में Computer Codes लिख दिए जाएं तो हमें दो संख्‍याओं की Actual जोड प्राप्त हो जाएगी। यानी Algorithm बनाना Problem Design करने से सम्बंधित काम है जबकि Program बनाना उस Algorithm को Implement करने से सम्बंधित काम है। इसी तरह से OOPS के Concept को Apply करना Problem Design करने से सम्बंधित है जबकि OOPS के Concept के आधार पर बनने वाले Design को Computer Language में Implement करना Problem Solve करने से सम्बंधित काम है।

हम ऐसा भी कह सकते हैं कि जब किसी Problem को Real World में Define करना होता है, तब Problem के विभिन्न Objects को Physical रूप में Identify कर सकते हैं, लेकिन जब उसी Problem को Computer में Logical रूप में Define करना होता है, तब Problem को एक नए Data Type के रूप में Represent करना होता है, जिसे हम किसी Computer Programming Language में Abstract Data Type या Object की Class के रूप में Identify करते हैं।


Encapsulation - The Utilization of Attributes and Behaviors
जैसाकि हमने पहले कहा कि OOPS व OOPL के आधार पर हर OOPS Concept की दो परिभाषाएं होती हैं। यही नियम OOPS के Encapsulation Concept के सम्बंध में भी लागू होती है। जब हम OOPS के सम्बंध में देखते हैं, तो किसी Object की Internal Workings को या उसके काम करने के जटिल तरीकों को समझे बिना उसे उपयोग में लेने के लिए कुछ व्यवस्थाएं कर देना, इस प्रक्रिया को Encapsulation कहते हैं। इस Concept को समझने के लिए एक उदाहरण देखते हैं।

मान लो कि हमारे पास एक Computer है। अब जब हम Computer को Switch ON करते हैं, तो ये जाने बिना कि Computer किस प्रकार से ON होता है, हम Computer को उपयोग में लेते रहते हैं। इसी तरह से किसी Car के Accelerator को Press करने पर Car की Speed किस प्रकार से बढती है, ये जाने बिना एक Driver Car को चलाता रहता है। इन दोनों उदाहरणों में Computer व Car दो Encapsulated Objects हैं जिनके काम करने के तरीके यानी Internal Working को जाने बिना उन्हें आसानी से उपयोग में लिया जाता है।

अब यदि हम इसी Concept को Java Programming Language के सन्दर्भ में समझें, तो परिभाषा बदल जाती है। Programming Language जावा के सम्बंध में जब हम Encapsulation को परिभाषित करना होता है, तो हम इस Concept को अग्रानुसार परिभाषित करते हैं।

समस्या से सम्बंधित Abstracted Attributes को उनके Data Type के साथ Specify करने की Process से उस Object के Data Members प्राप्त होते हैं और समस्या से सम्बंधित जिन Operations को Perform करके कोई Object अपने किसी Abstract Attribute की स्थिति या मान में परिवर्तन करता है, उस Operation को Object का Behavior कहते हैं, जिसे जावा में Implement करने के लिए जिन Codes को लिखते हैं, उन Code Block को Methods कहते हैं।

यानी किसी समस्या से सम्बंधित Object के Physical Attributes व Behaviors को Java में Implement करने पर Object के समस्या से सम्बंधित विभिन्न Abstracted Attributes को Data Members व विभिन्न Attributes को Change करने वाले Operations को Methods के रूप में Specify करते हैं।

किसी भी Object के गुण यानी उसके Attributes व उसके Behaviors दोनों किसी एक ही Physical Object के हिस्से होते हैं। इसलिए Object के Attributes को Represent करने वाले Data Members व Behaviors को Represent करने वाले Methods दोनों को एक इकाई के रूप में Specify करने की प्रक्रिया को OOPL में Encapsulation कहते हैं।

Encapsulation के बाद यानी Computer में किसी समस्या से सम्बंधित Object के विभिन्न Data Members (Attributes) व Methods (Behaviors) को Combine करके एक Unit के रूप में Encapsulate करने के बाद जो Specification हमें प्राप्त होता है, उस Specification को यदि एक नाम दे दिया जाए, तो वह Specification समस्या से सम्बंधित किसी Object की Class का Representation होता है। जावा के लिए ये एक नए प्रकार का Data Type होता है, जो किसी Real World समस्या से सम्बंधित किसी Real World Object को Computer में Logically Represent करने में सक्षम होता है। इसे Abstract Data Type भी कह सकते हैं, क्योंकि ये किसी समस्या के Abstraction से प्राप्त Abstracted Attributes के आधार पर बनता है।

No comments:

Post a Comment