C Sharp Basics – C# Sample Program

C Sharp Basics: किसी भी Programming Language द्वारा हमेंशा किसी Real World Problem को Solve किया जाता है और किसी Real World Problem को Solve करने के लिए उस Real World Problem से सम्बंधित विभिन्न जरूरी Data को Computer में Input करना पडता है, ताकि Computer उस Data पर Program Instructions के आधार पर Required Processing करके Appropriate Output Generate कर सके।

उदाहरण के लिए जब हम दो संख्‍याओं को जोडने के लिए कोई Program Create करना चाहते हैं, तब जोडने के लिए Input की जाने वाली दोनों संख्‍याऐं एक प्रकार का Number Type का Data होते हैं।

Data वास्तव में दो प्रकार के होते हैं, जिन्हें Primary DataSecondary Data के नाम से जाना जाता है और Computer Programming Languages में इन Data को सामान्‍यत: Standard Data TypesUser Defined Data Types के नाम से जाना जाता है।

Standard Data Type के अन्तर्गत Integer, Character, Long, Double आदि Data Types आते हैं और इन Primary Data Types को Programming Language का Compiler Internally समझता है। इसलिए जब हम Integer Type का Variable Declare करते हैं, तो Programming Language के Compiler को पता होता है कि हम किसी पूर्णांक संख्‍या के साथ प्रक्रिया करने हेतु Memory में Space Reserve करना चाहते हैं।

लेकिन सामान्‍यत: सभी प्रकार की Real World Problems दो संख्‍याओं को जोडने जितनी सरल नहीं होती। इसलिए जटिल प्रकार की समस्याओं को Handle करने के लिए एक Programmer हमेंशा Primary Data Types द्वारा Programs Develop नहीं कर सकता। क्योंकि Real World Problems में हमेंशा कई प्रकार के आपस में Logically Related Data के Group पर Processing करने की जरूरत पडती है।

परिणामस्वरूप एक ऐसे Programming Patterns की जरूरत होती है, जिसके माध्‍यम से Real World Problems से सम्बंधित “Logically Related Group of Data” को एक Data Bunch के रूप में Access व Manipulate किया जा सके। इस जरूरत को पूरा करने के लिए ही Object Oriented Programming System का विकास किया गया था।

Object Oriented Programming System एक ऐसा Programming Pattern है, जो किसी Real World Problem से सम्बंधित Objects व Data को Computer में Exactly उसी तरह से Represent करने की सुविधा देता है, जिस तरह से उस Problem से सम्बंधित Objects व Data Real World में होते हैं।

साथ ही इस OOPS Programming Pattern द्वारा Computer में Problem को Exactly वैसे ही Process व Solve किया जाता है, जिस तरह से उसी समस्या को Real World में Process व Solve किया जाता है।

Object Oriented Programming System में किसी भी Real World Problem को हमेंशा Objects में Divide किया जाता है और वे Objects जिस तरह से Real World में आपस में मिलकर किसी समस्या का एक Appropriate Solution Generate करते हैं, OOPS Rules द्वारा Computer में भी उस समस्या से सम्बंधित सभी Objects को आपस में उसी तरह से Interact करवाया जाता है, जिस तरह से Real World में उस Problem का Solution Generate किया जाता है।

उदाहरण के लिए Bank A/c में Amount Deposit करना एक प्रकार की समस्या है। इस समस्या के समाधान के रूप में Client अपने Bank Branch में जाता है और एक Deposit Form Fill करके Deposit Form व Amount, Cashier को देता है।

Cashier उस Filled Deposit Form के आधार पर Amount को Check करता है और उस Amount की Entry, Client के Account में कर देता है तथा Filled Form का एक हिस्सा Receipt के रूप में फिर से उसी Client को Return कर देता है, जो कि इस बात का Indication होता है कि Client का Amount उसके Account में Deposit हो चुका है।

ठीक इसी समस्या को जब Computer द्वारा Solve किया जाना होता है, तब OOPS के नियमों के आधार पर समस्या को विभिन्न Objects में Divide किया जाता है और उन Objects के बीच उसी तरह से Interaction करवाया जाता है, जिस तरह से उस समस्या को Solve करने के लिए Real World में विभिन्न Objects आपस में Interaction करते हैं।

यदि हम इस प्रक्रिया को पिछले उदाहरण द्वारा समझें तो Client Object अपने Bank Branch Object में जाता है और एक Deposit Form Object Fill करके Deposit Form Object व Amount Information, Cashier Object को देता है।

Cashier Object उस Filled Deposit Form Object के आधार पर Deposition Related विभिन्न Information को Check करता है और उन Information की Entry, Client Object के Account Object में कर देता है तथा Filled Form Object का एक हिस्सा Receipt Object के रूप में फिर से उसी Client Object को Return कर देता है।

किसी Real World Problem से सम्बंधित विभिन्न प्रकार के Objects, C# जैसी Object Oriented Programming Language में Define करने के लिए हमें User Defined Data Types Create करने पडते हैं, क्योंकि ये User Defined Data Types ही किसी Real World Object को Computer Program में Exactly उसी तरह से Represent करने की सुविधा देते हैं, जिस प्रकार से वे Objects Real World में होते हैं।

C# Programming Language किसी नए प्रकार के User Defined Data Type को Define करने के लिए Class, Interface, Structure, Enumeration या Delegate नाम के कई Programming Constructs Provide करवाता है।

C# एक Pure Object Oriented Programming Language है। इसलिए यदि हमें एक भी Line का Code लिखना हो, तो उस Code को किसी न किसी Class Definition के रूप में ही लिखना पडता है, जो कि एक प्रकार का Type Definition ही होता है।

Class Creation किसी भी Pure Object Oriented Programming Language का मूल Construct होता है, जिसे ठीक से समझने के लिए हमें Object Oriented Programming System के सारे Concepts को अच्छी तरह से समझना जरूरी होता है और इन Concepts को हम पुस्तक के आने वाले Chapters में Detail से समझेंगे।

लेकिन फिलहाल हम केवल उन Basic Object Oriented Programming System Concepts को समझने की कोशिश कर रहे हैं, जिनकी जरूरत एक Simple C# Program Create करने के लिए होती है, ताकि हम छोटे-छोटे Programs द्वारा C# Programming Language के विभिन्न Programming Constructs को समझ सकें और किसी Simplest C# Program का Basic Structure कुछ निम्नानुसार होता है:

C Sharp Basics - C# Sample Program - Hindi

using NamespaceName;

इस Statement द्वारा हम हमारे Current Program में Use होने वाले Types की Definition को अपने Current Program में Include करते हैं।

जैसाकि हमने Microsoft.NET Framework Discuss करते समय जाना था कि .NET Framework हमें बहुत सारी BCLFCL Classes Provide करता है, जिनमें हजारों Types (Classes, Interfaces, Structures, Enumerations, Delegates, etc…) को पहले से Define किया गया है और इन पहले से बने Types को यदि हम हमारे Current C# Program में Use करना चाहते हैं, तो ये जरूरी होता है कि हम C# Compiler को ये बताऐं कि हम जिस Type को अपने Current C# Program में Use कर रहे हैं, उसे किस Library में Define किया गया है।

.NET Framework में समान प्रकार की Functionality से सम्बंधित विभिन्न Types के समूह को Namespace नाम के Programming Construct के बीच Enclosed रखा जाता है, जिसे हम Java के Package के समान समझ सकते हैं।

उदाहरण के लिए .NET Framework में GUI Frontend Develop करने से सम्बंधित सभी जरूरी Types को System.Windows.Forms नाम के Namespace में Store किया गया है। इसलिए यदि हम हमारे Current C# Program में GUI Form Object Create करना चाहें, तो हमें हमारे Current Program में System.Windows.Forms नाम के Namespace को using Keyword के साथ Specify करना जरूरी होता है।

Namespace को हम C/C++ Programming Languages की Header Files के समान भी समझ सकते हैं, जिनमें Defined Functions/Classes को Use करने के लिए हमें अपने Current C/C++ Programs में उन Header Files को Include करना जरूरी होता है, जिनमें उन Functions /Classes को Define किया गया है, जिन्हें हम हमारे Current Program में Use करना चाहते हैं।

namespace NewNamespaceName {

C# में हम जब भी कोई Program Create करते हैं, तो जैसाकि पिछले Section में हमने Discuss किया कि विभिन्न प्रकार की Real World Problems को Solve करने के लिए हमें विभिन्न प्रकार के नए User Defined Data Types Create करने पडते हैं, क्योंकि ये Types ही किसी Real World Problem से सम्बंधित Objects को Computer Program में Exactly समान प्रकार के Objects के रूप में Represent करने का तरीका होते हैं।

लेकिन .NET Framework में विभिन्न Namespaces में हजारों Types को पहले से ही Define किया जा चुका है। इसलिए जब हम हमारा Program Create करते हैं, तब सम्भावना रहती है कि हम जो नया Type Create कर रह हैं, उस नाम का कोई Type पहले से इन Namespaces में Exist हो। इस स्थिति में Name Conflict होने की सम्भावना हो जाती है, जो कि हमारे C# Program में Error के रूप में Reflect हो सकता है।

Name Conflict एक ऐसी Error को Represent करता है, जो C# Compiler को Confuse कर देता है कि वह किस Type को Use करे। उसे, जो कि .NET Framework में पहले से Exist है या उसे, जिसे हमने Current Program में Define किया है और इस प्रकार का Confusion होने पर Compiler Error Generate करता है।

Name Conflict की Error न हो, इसलिए C# हमें नया Namespace Create करने की सुविधा देता है। जब हम namespace Keyword के साथ किसी Unique NewNamespaceName को Specify कर देते हैं, तो इस नए Namespace के Curly Braces के बीच हम जिन Types को Define करते हैं, उनके समान नाम का Type यदि .NET Framework Library में पहले से किसी Namespace में Exist हो, तब भी C# Compiler किसी तरह का Error Generate नहीं करता। क्योंकि दो अलग Namespaces में Defined समान नाम की Classes को भी C# Compiler अलग-अलग Namespace होने की वजह से अलग-अलग Identify कर लेता है।

साथ ही Namespace Concept का प्रयोग करके हम हमारी जरूरत के अनुसार नए प्रकार के सभी Types को उनकी Functionality के आधार पर Group कर सकते हैं और EXE या DLL Assembly के रूप में Compile करके Future में जरूरत होने पर फिर से Reuse कर सकते हैं, जो कि Object Oriented Programming System का मूल Concept भी है।

class MainClassName {

C# में हम C/C++ Programming Language की तरह Global Functions या Global Variables Create नहीं कर सकते, बल्कि हमें Java Programming Language की तरह सभी DataFunctions को Class Block के बीच Enclosed रखना जरूरी होता है और इस प्रकार से Enclosed Data को Data Members तथा Functions को Methods के नाम से जाना जाता है।

C# Program में एक ऐसी Class जरूरी होती है, जिसमें Main(), WinMain() या DllMain() नाम का Class होता है, क्योंकि यही वह Method होता है, जिसे CLR, Program Execution के Entry Point के रूप में सबसे पहले Execute करता है। जबकि इस Main Class के अलावा हम समान Namespace में कई और Classes व अन्‍य प्रकार के Types को Define कर सकते हैं और ये सभी Types समान Namespace द्वारा Accessible रहते हैं।

public static void Main(String[ ] args) {

ये Method किसी Console Mode Application का Entry Point होता है, जिसे CLR, Current Assembly में सबसे पहले Search करके Execute करता है। यदि Windows Application Develop किया जा रहा हो, तो इस Main() Method के स्थान पर WinMain() Method को, जबकि यदि DLL Library Create करना हो, तो DllMain() Method को Entry Point के रूप में Specify किया जाता है।

जब हम Console Mode Application Create करते हैं, तब हम Main() Method को हमेंशा public रखते हैं, ताकि CLR के लिए Main() Method, Directly Access होने के लिए Publicly Available हो।

जबकि Main() Method को हमेंशा static Keyword के साथ ही Use किया जाता है, क्योंकि Main() Method एक ऐसा Method होता है, जो किसी भी C# Application में केवल एक ही बार Define हो सकता है और इसे हर .NET Application में Compulsory रूप से Define जरूरी होता है। क्योंकि CLR के लिए यही Method वह Entry Point होता है, जहां से C# Program का Execution शुरू होता है। साथ ही केवल static Method ही एक ऐसा Method होता है, जिसे बिना Class का Object Create किए हुए CLR द्वारा Directly Access किया जा सकता है।

जबकि C# व Java जैसी एक Pure Object Oriented Programming Language में कभी भी C/C++ की तरह Global Function Create नहीं किया जा सकताए इसलिए Main() Function को भी हमेंशा Class के अन्दर Define किया जाता है और Class के अन्दर Define किए गए Function को हमेंशा उस Class के किसी Object के माध्‍यम से ही Call किया जा सकता है।

लेकिन किसी Class के अन्दर Define किए गए जिन Functions के साथ static Keyword का प्रयोग किया गया होता है, उन Functions को उस Class का Object Create किए बिना भी Directly Call किया जा सकता है।

इसीलिए C# में Main() Method के साथ static Keyword का प्रयोग किया जाता है, ताकि CLR हमारे Current Program के Main() Method, जो कि CLR के लिए हमारे Console Program का Entry Point होता है, को Directly Access करके Current C# Program को Execute कर सके।

जब हम हमारे Console Mode Program को Compile करने के बाद Run करते हैं, तब Run करते समय हम हमारे Console Mode Programs को Command Line से अपनी जरूरत के अनुसार Command Line Arguments भी Pass कर सकते हैं।

हम Command Line से जो Arguments Pass करते हैं, वे सभी Arguments इस Main() Method के string Type के args नाम के एक Array में जाकर Store हो जाते हैं, जिन्हें हम हमारी जरूरत के अनुसार अपने C# Program में Use कर सकते हैं।

जबकि इस Main() Method की Body में ही हमें उन Codes को Enclosed रखना होता है, जो हमारे मूल C# Program को Represent करते हैं।

यदि हम एक Simple Program द्वारा इस C# Program Anatomy को समझने की कोशिश करें, तो हमारा First Practical C# Program कुछ निम्नानुसार हो सकता है:

// File Name: HelloCSharp.cs
using System;

namespace CSharpFundamentals
{
    class HelloCSharp
    {
        private static void Main(string[] args)
        {
            Console.WriteLine("Hello C#.");
        }
    }
}

इस Program में सबसे पहले हमने System Namespace को using Keyword के साथ Specify किया है। System Namespace में Basic Input/Output व Collections से सम्बंधित Types को Define किया गया है, जिनकी जरूरत किसी भी Basic C# Program के लिए Compulsory रूप से होती है।

फिर हमने CSharpFundamentals नाम का एक Namespace Create किया है, ताकि हम जो भी नया Type Create करें, वह इसी Namespace से Bind रहे।

फिर हमने HelloCSharp नाम की एक Class Create की है, जो कि एक प्रकार का नया User Defined Data Type है। क्योंकि C# एक Pure Object Oriented Programming Language है और इसमें लिखे जाने वाले सारे Codes किसी ना किसी Type का हिस्सा होते हैं यानी Type के रूप में Encapsulated होते हैं।

चूंकि HelloCSharp नाम की जो Class हमने Create की है, उसी Class को हमें हमारे Program की Main Class बनानी है, इसलिए इसी Class के अन्दर हमने Main() Method को भी Define किया है।

Main() Method के Curly Braces के बीच हम जो भी Codes लिखते हैं, C# Compiler उन्हीं Codes को CLR पर Execute होने के लिए भेजता है क्योंकि Main() Method ही CLR के लिए Execution का Entry Point होता है।

चूंकि हम हमारे Console में एक Simple Message के रूप में “Hello C#.” Message Display करना चाहते हैं, इसलिए हमने निम्नानुसार Console.WriteLine() Statement को Use किया है:

            Console.WriteLine(“Hello C#.”);

इस Statement में Console वह Class है, जो कि हमारे Computer के Keyboard व Screen यानी Standard Input व Output Devices को Represent करता है और इस Class को System नाम के Namespace में Define किया गया है, जिसे हमने using Keyword के माध्‍यम से अपने C# Program में Include किया है, ताकि हम Console नाम की Class के DataMethods को Use कर सकें।

Console नाम की इस Class में ReadLine()WriteLine() नाम के Methods को Define किया गया है, जिनका प्रयोग करके हम हमारे Current C# Program में Input के रूप में Keyboard से Data को Receive कर सकते हैं तथा Processed Result को Output के रूप में Screen पर Display कर सकते हैं।

यानी ReadLine() Method Keyboard से को Represent करता है जबकि WriteLine() Method Screen को Represent करता है। इसीलिए जब उपरोक्त Code Line को CLR Execute करता है, तो Screen पर हमें Output के रूप में “Hello C#.” Message दिखाई देता है।

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

C#.NET in Hindi | Page:908 | Format: PDF

BUY NOW GET DEMO REVIEWS