Generalization and Specialization

Generalization and Specialization: Computer के Inheritance को हम एक उदाहरण द्वारा समझने की कोशिश करते हैं। मानलो कि हम Railway Reservation का Software बना रहे हैं। इस Software में किसी भी समय दो तरह के Tickets हो सकते हैं:

  • Confirmed Ticket
  • Waiting Ticket

इन दोनों प्रकार के Tickets के कई अन्‍य Attributes हो सकते हैं। जैसे:

  • Train Number
  • Date
  • Time
  • Destination

फिर भी एक Confirmed Ticket में Seat Number नाम का एक Extra Attribute होगा, जबकि Waiting Ticket में एक Status Attribute होगा, जो Ticket की स्थिति को दर्शाएगा।

Generalization and Specialization

उपरोक्त चित्र में हमने दो Classes के Common Structure व Attributes को परिभाषित किया है, जो कि Super Class Represent करता है। यानी Ticket एक ऐसी Common Class है जिसके Attributes व Behaviors को इसके नीचे की दोनों Sub Classes Confirmed Ticket व Waiting Ticket प्राप्त करती हैं।

चूंकि Ticket Class को हम एक ऐसी Class के रूप में देख सकते हैं, जो कि इसके नीचे की दोनों Classes के लिए Common Attributes व Behaviors को Represent करता है, इसलिए इस Class को Generalized Class कहते हैं।

जबकि Confirmed Ticket व Waiting Ticket दो ऐसी Classes हैं, जो इसकी Super Class Ticket के Attributes व Behaviors को तो प्राप्त करते ही हैं, साथ ही इनके स्वयं के भी कुछ Attributes व Behaviors हो सकते हैं, यानी ये Classes ज्यादा Modified हो सकती हैं और किसी एक काम को ज्यादा Special तरीके से Represent कर सकती हैं, इसलिए इन Sub Classes को Specialized Class कहते हैं।

Super Class एक ऐसी Class होती है, जिससे अन्‍य Classes Common Properties को प्राप्त करती हैं। ये Classes अपनी Properties को अपने से Inherit होने वाली Classes के साथ Share करती हैं। जबकि एक Sub Class वह Class होती हैं, जो किसी Super Class की Properties यानी Attributes व Methods को प्राप्त करता है और ज्यादा Specialized तरीके से उन्हें Use करता है।

कोई भी Sub Class कभी भी अपनी Super Class के Constructors को Inherit नहीं करता है, क्योंकि Contractors का अपने Compiler के लिए विशेष Meaning होता है। Sub Classes के स्वयं के Constructors भी Create किए जा सकते हैं, जहां Super Class के Constructor के मानों को भी Initialize किया जाता है। एक Sub Class का उसकी Super Class के Data Members व Member Methods के अलावा स्वं; का भी Data Member व Method हो सकता है। सामान्‍यतया कई Programming Languages में Super Class को Base Class व Sub Class को Derived Class भी कहा जाता है।

पिछले चित्र में हमने देखा कि Ticket Class एक Generalized Class है। एक Generalized Class का प्रयोग इस प्रकार के Programs को लिखने के लिए किया जाता है जो कि बहुत ज्यादा General यानी Common रूप से काम में आते हैं।

मानलो कि हमने एक ऐसा Program बनाया जो कि User से Input के रूप में एक String प्राप्त करता है और Output में उस String को Screen पर Print कर देता है। लेकिन अब हमारी Requirement Change हो गई है और हमें Screen पर String के स्थान पर किसी Integer मान को Print करना है। इस स्थिति में हमें हमारी पिछली वाली Class को Modify करना होगा।

मानलो कि हमारे पास Super Class के रूप में Data Class है, जिसमें इसके मान को Display करने के लिए एक Method है। Data Class की Sub Class के रूप में हमारे पास Character व Float Class भी है।

अब एक Integer प्रकार के मान को Screen पर Print करने के लिए हमें एक Integer Class Create करनी होगी, जो कि Data Class की एक Sub Class है। Data Class में एक और Sub Class को Add करने पर Data Class की पहले से Created Character व Float Sub Class में कोई Effect नहीं होगा।

चूंकि Super Class Data में Character Class व Float Class के मानों को Screen पर Print करने का Method Super Class Data में पहले से ही लिखा जा चुका है, इसलिए हमें Integer प्रकार के मान को Screen पर Print करने के लिए भी अलग से Display() Method लिखने की जरूरत नहीं है। हम Data Super Class के Display() Method को Integer Class में Inherit करके एक Integer प्रकार के मान को भी Screen पर Print कर सकते हैं।

Generalization एक ऐसा तरीका है, जो हमें Abstraction करने में मदद करता है। OOPS में मुख्‍य महत्व ऐसी Classes Develop करने का होता है, जो आपस में Data व Methods को Share कर सकें, साथ ही Data की भी Security बनी रहे। यानी एक Unauthorized Class किसी भी तरह से किसी दूसरी Class के Data को Access नहीं कर सके। Encapsulation ही वह तरीका है, जिससे Data की Security को प्राप्त किया जा सकता है।

किसी Class को कब Generalized Form में Create करना चाहिए, इसका कोई निश्चित नियम नहीं है। इसलिए किस प्रकार की Class को Generalized करना है और किसे नहीं, इस बात का निर्णय लेने की क्षमता अनुभव से प्राप्त होती है। जावा में हम केवल Single Inheritance Concept को ही Use कर सकते हैं। यानी जावा में हम केवल एक ही Super Class के Attributes व Behaviors को नई Class में प्राप्त कर सकते हैं।

Types of Inheritance in Java
Inheritance in Java - Implementing Step by Step

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

Java Programming Language in Hindi | Page: 682 | Format: PDF

BUY NOW GET DEMO REVIEWS