Friday, February 27, 2015

प्रोग्रामिंग क्या है:2015

प्रोग्रामिंग क्या है: 
 सामान्य जीवन में हम किसी कार्य विशेष को करने का निश्चय करते हैं तो उस कार्य को करने से पूर्व उसकी रूपरेखा सुनिश्चित की जाती है। कार्य से सम्बन्धित समस्त आवश्यक शर्तों का अनुपालन उचित प्रकार हो एवं कार्य में आने वाली बाधाओं पर विचार कर उनको दूर करने की प्रक्रिया भी रूप रेखा तैयार करते समय महत्वपूर्ण विचारणीय विषय होते हैं। कार्य के प्रारम्भ होने से कार्य के सम्पन्न होने तक के एक-एक चरण (step) पर पुनर्विचार करके रूपरेखा को अन्तिम रूप देकर उस कार्य विशेष को सम्पन्न किया जाता है। इसी प्रकार कम्प्यूटर द्वारा, उसकी क्षमता के अनुसार, वांछित कार्य कराये जा सकते हैं। इसके लिए आवश्यकता है कम्प्यूटर को एक निश्चित तकनीक व क्रम में निर्देश दिए जाने की, ताकि कम्प्यूटर द्वारा इन निर्देशों का अनुपालन कराकर वांछित कार्य को सम्पन्न किया जा सके। सामान्य बोल-चाल की भाषा में इसे प्रोग्रामिंग कहा जाता है।



कम्प्यूटर को निर्देश किस प्रकार दें: कम्प्यूटर को निर्देश योजनाबद्ध रूप में, अत्यन्त स्पष्ट भाषा में एवं विस्तार से देना अत्यन्त आवश्यक होता है। कम्प्यूटर को कार्य विशेष करने के लिए एक प्रोग्राम बनाकर देना होता है। दिया गया प्रोग्राम जितना स्पष्ट, विस्तृत और सटीक होगा, कम्प्यूटर उतने ही सुचारू रूप से कार्य करेगा, उतनी ही कम गलतियां करेगा और उतने ही सही उत्तर देगा। यदि प्रोग्राम अस्पष्ट होगा और उसमें समुचित विवरण एवं स्पष्ट निर्देश नहीं होंगे तो यह सम्भव है कि कम्प्यूटर बिना परिणाम निकाले ही गणना करता रहे अथवा उससे प्राप्त परिणाम अस्पष्ट और निरर्थक हों। कम्प्यूटर के लिए कोई भी प्रोग्राम बनाते समय निम्न बातों को ध्यान में रखना आवश्यक है:
  • समस्या का सावधानीपूर्वक अध्ययन करके निर्देशों को निश्चित क्रम में क्रमबद्ध करना।
  • निर्देश इस प्रकार लिखना कि उनका अक्षरशः पालन करने पर समस्या का हल निकल सके। 
  • प्रत्येक निर्देश एक निश्चित कार्य करने के लिए हो।

Saturday, September 18, 2010

OPERATING SYSTEM.

ऑपरेटिंग सिस्टम एक सिस्टम सॉफ्टवेयर है, जो कम्प्यूटर सिस्टम के हार्डवेयर रिसोर्सेस, जैसे-मैमोरी, प्रोसेसर तथा इनपुट-आउटपुट डिवाइसेस को व्यवस्थित करता है। ऑपरेटिंग सिस्टम व्यवस्थित रूप से जमे हुए साफ्टवेयर का समूह है जो कि आंकडो एवं निर्देश के संचरण को नियंत्रित करता है। ऑपरेटिंग सिस्टम, कम्प्यूटर सिस्टम के प्रत्येक रिसोर्स की स्थिति का लेखा - जोखा रखता है तथा यह निर्णय भी लेता है कि किसका कब और कितनी देर के लिए कम्प्यूटर रिसोर्स पर नियंत्रण होगा। एक कम्प्यूटर सिस्टम के मुख्य रूप से चार घटक हैं
  • हार्डवेयर
  • ऑपरेटिंग सिस्टम
  • एप्लीकेशन प्रोग्राम
  • यूजर्स
आपरेटिंग सिस्टम की आवश्यकता: आपरेटिंग सिस्टम हार्डवेयर एवंसाफ्टवेयर के बीच सेतु का कार्य करता है कम्पयुटर का अपने आप मे कोई अस्तित्व नही है। यह केवल हार्डवेयर जैसे की-बोर्ड, मानिटर, सी.पी.यू इत्यादि का समूह है आपरेटिंग सिस्टम समस्त हार्डवेयर के बिच सम्बंध स्थापित करता है आपरेटिंग सिस्टम के कारण ही प्रयोगकर्ता को कम्युटर के विभिन्न भागो की जानकारी रखने की जरूरत नही पडती है साथ ही प्रयोगकर्ता अपने सभी कार्य तनाव रहित होकर कर सकता है यह सिस्टम के साधनो को बांटता एवं व्यवस्थित करता है। आपरेटिंग सिस्टम के कई अन्य उपयोगी विभाग होते है जिनके सुपुर्द कई काम केन्द्रिय प्रोसेसर द्वारा किए जाते है। उदाहरण के लिए प्रिटिंग का कोई किया जाता है तो केन्द्रिय प्रोसेसर आवश्यक आदेश देकर वह कार्य आपरेटिंग सिस्टम पर छोड देता है और वह स्वयं अगला कार्य करने लगता है।  इसके अतिरिक्त फाइल को पुनः नाम देना, डायरेक्टरी की विषय सूचि बदलना, डायरेक्टरी बदलना आदि कार्य आपरेटिंग सिस्टम के द्वारा किए जाते है।
इसके अन्तर्गत निम्न कार्य आते है
  • फाइल पद्धति: फाइल बनाना, मिटाना एवं फाइल एक स्थान से दूसरे स्थान ले जाना। फाइल निर्देशिका को व्यवस्थित करना।
  • प्रक्रिया: प्रोग्राम एवं आंकडो को मेमोरी मे बाटना एवं प्रोसेस का प्रारंभ एवं समानयन करना। प्रयोगकर्ता मध्यस्थ फाइल की प्रतिलिपी, निर्देशिका, इत्यादि के लिए निर्देश, रेखाचित्रिय डिस्क टाप आदि.  
  • इनपुट/आउटपुट: मोनिटर प्रिंटर डिस्क आदि के लिए मध्यस्थ.
विशेषताएं
  • मेमोरी प्रबंधन: प्रोग्राम एवं आकडो को क्रियान्वित करने से पहले मेमोरी मे डालना पडता है अधिकतर आपरेटिंग सिस्टम एक समय मे एक से अधिक प्रोग्राम को मेमोरी मे रहने की सुविधा प्रदान करता है आपरेटिंग सिस्टम यह निश्चित करता है कि प्रयोग हो रही मेमोरी अधिलेखित न हो प्रोग्राम स्माप्त होने पर प्रयोग होने वाली मेमोरी मुक्त हो जाती है। 
  • मल्टी प्रोग्रामिंग: एक ही समय पर दो से अधिक प्रक्रियाओ का एक दूसरे पर प्रचालन होना मल्टी प्रोग्रामिंग कहलाता है। विशेष तकनिक के आधार पर सी.पी.यू. के द्वारा निर्णय लिया जाता है कि इन प्रोग्राम मे से किस प्रोग्राम को चलाना हैएक ही समय मे सी.पी. यू. किसी प्रोग्राम को चलाता है आउटपुट प्रभाग सम्पन्न हुए प्रोग्राम का परिणाम सी.पी.यू से प्राप्त करता है तथा इनपुट प्रभाग किसी अन्य प्रोग्राम को सी . पी. यू मे प्रवेश कराता है। इस प्रकार इस प्रक्रिया मे सी.पी.यू का सभी भाग पूर्ण रूप से व्यस्त रहता है।  
  • मल्टी प्रोसेसिंग: एक समय मे एक से अधिक कार्य के क्रियान्वयन के लिए सिस्टम पर एक से अधिक सी.पी.यू रहते है। इस तकनीक को मल्टी प्रोसेसिंग कहते है। मल्टी प्रोसेसिंग सिस्टम का निर्माण मल्टी प्रोसेसर सिस्टम को ध्यान मे रखते हुए किया गया है अतः एक से अधिक प्रोसेसर उपल्ब्ध होने के कारण इनपुट आउटपुट एवं प्रोसेसींगतीनो कार्यो के मध्य समन्वय रहता है। एक ही तरह के एक से अधिक सी.पी. यू का उपयोग करने वाले सिस्टम को सिमिट्रिक मल्टी प्रोसेसर सिस्टम कहा जाता है। 
  • मल्टी टास्किंग: मेमोरी मे रखे एक से अधिक प्रक्रियाओ मे परस्पर नियंत्रण मल्टी टास्किंग कहलाता है. किसी प्रोग्राम से नियत्रण हटाने से पहले उसकी पूर्व दशा सुरक्षित कर ली जाती है जब नियंत्रण इस प्रोग्राम पर आता है प्रोग्राम अपनी पूर्व अवस्था मे रहता है। मल्टी टास्किंग मे यूजर को ऐसा प्रतित होता है कि सभी कार्य एक साथ चल रहे है।  
  • मल्टी थ्रेडिंग: यह मल्टी टास्किंग का विस्तारित रूप है एक प्रोग्राम एक से अधिक थ्रेड एक ही समय मे चलाता है। उदाहरण के लिए एक स्प्रेडशिट लम्बी गरणा उस समय कर लेता है जिस समय यूजर आंकडे डालता है.
  • रियल टाइम: रियल टाइम आपरेटिंग सिस्टम की प्रक्रिया बहुत ही तीव्र गति से होती है रियल टाइम आपरेटिंग सिस्टम का उपयोग तब किया जाता है जब कम्पयुटर के द्वारा किसी कारेय विशेष का नियंत्रण किया जा रहा होता है। इस प्रकार के प्रयोग का परिणाम तुरंत प्राप्त होता है । और इस परिणाम को अपनी गरणा मे तुरंत प्रयोग मे लाया जाता है। आवशअयकता पडने पर नियंत्रित्र की जाने वाली प्रक्रिया को बदला जा सकता है। इस तकनीक के द्वारा कम्पयुटर का कार्य लगातार आंकडे ग्रहण करना उनकी गरणा करना मेमोरी मे उन्हे व्यवस्थित करना तथा गरणा के परिणाम के आधार पर निर्देश देना है.
उपयोगकर्ता की गिनती के आधार पर ऑपरेटिंग सिस्टम को दो भागो मे विभाजित किया गया है
  • एकल उपयोगकर्ता: एकल उपयोगकर्ता आपरेटिंग सिस्टम वह आपरेटिंग सिस्टम है जिसमे एक समय मे केवल एक उपयोगकर्ता काम कर सकता है। 
  • बहुल उपयोगकर्ता: वह आपरेटिंग सिस्टम जिसमे एक से अधिक उपयोगकर्ता एक ही समय मे काम कर सकते कर सकते है.
काम करने के मोड के आधार पर भी इसे दो भागो मे विभाजित किया गया है
  • कैरेक्टर यूजर इंटरफेस: यहा पर उपयोगकर्ता सिस्टम को कैरेक्टर की श्रृंखला के रूप मे कमाण्ड देता है। जब उपयोगकर्ता सिस्टम के साथ कैरेक्टर के द्वारा सूचना देता है तो इस आपरेटिंग सिस्टम को कैरेक्टर यूजर इंटरफेस कहते है उदाहरण डॉस.
  • ग्राफिकल यूजर इंटरफेस: जब उपयोग कर्ता कम्पयुटर से चित्रो के द्वारा सूचना का आदान प्रदान करता है तो इसे ग्राफिकल यूजर इंटरफेस (GUI) कहा जाता है। उदाहरण विन्डो.
अधिकांश सी.पी.यू. दो मोड पर कार्य करते है: युजर मोड तथा कर्नल मोड. कर्नल मोड सभी निर्देशो के प्रचालन की सुविधा प्रदान करता है। सुरक्षा की दृष्टी से युजर मोड कुछ निर्देशोके प्रचालन की सुविधा प्रदान करता है। सामान्यतया प्रोग्राम यूजर मोड मे ही प्रचालित होते है । आपरेटिंग सिस्टम कर्नल मोड पर प्रचालित होते है। प्रोसेसर शिड्युलिंग, मेमोरी मैनेजमेंट,  फाइल मैनेजमेंट तथा इनपुट /आउटपुट मैनेजमेंट के आधार पर ऑपरेटिंग सिस्टम को निम्नलिखित वर्गों मेंवर्गीकृत किया जा सकता है:
  • बैच ऑपरेटिंग सिस्टम: कम्प्यूटर के शुरूआती दिनों में कम्प्यूटर सिस्टम में इनपु डिवाइस के रूप में कार्ड-रीडर्स तथा टेप ड्राइव्स एवम् आउटपुट डिवाइस के प्रयोग हुआ करते थे। उस समय यूजर कम्प्यूटर सीधे-सीधे इन्ट्रैक्ट न कर, एक जॉब तैयार किया करते थे,जो प्रोग्राम डेटा ऑर कंट्रोल इन्फॉमेशन का बना हुआ होता था। यूजर अपने जॉब को तैयार करने के पश्चात् कम्पयूटर औपरेटर को सौंप देता था। इसी प्रकार दूसरा, तीसरा या अन्य यूजर अपने अपने जॉब तैयार कर कम्पयूटर ऑपरेटर को सौंप देते थे। जॉब्स, पंच कार्ड्स पर तैयार किए जाते थे। कम्पयूटर ऑपरेटर सभी जौब्स क एक साथ लोड कर उन्हें प्रोसेस करता था। कुछ मिनटों, घंटो या दिनों के पश्चात् जॉब्स प्रोसेस होकर आउटपुट देते थे। आउटपुट में प्रोग्राम के परिणाम के साथ साथ मेमोरी की अंतिम स्तिथि की डम्प तथा रजिस्टर के कनटेन्ट्स भी होते थे, जो प्रोग्राम की डिबगिंग में सहायक होते थे। प्रोसेसिंग स्पीड को बढाने के लिए कम्पयूटर ऑपरेटर समान प्राथमिकता वाले जॉब्स को एक साथसमुहित करके, उन्हें समूह में कम्पयूटर द्वारा रन करेहैं। बैच प्रोसेसिंग में सीपीयू के आइडल टाइम को कम करने के लिए रेसिडेंट मॉनिटर नामक एक प्रोग्राम क्रिएट किया गया,जो हमेशा रेसिडेंट मेमोरी में निवास करता था। रेसिडेंट मॉनिटर प्रोग्रामर द्वारा कन्ट्रोल कार्ड्स के माध्यम से दिए गए कमान्ड के अनुसार कार्य करता था। बैच प्रोसेसिंग इन्वारमेंट में अक्सर आइडल रहता था, क्योंकि इनपुट/आउटपुट डिवाइसेस की गति की गति की तुलना में काफी धीमी होती है। कम्पयूटर सिस्टम के रिसोर्सेस का अधिकतम उपयोग करने के लिए इनपुट/आउटपुट और प्रोसेसिंग ऑपरेशन को एक दुसरे से ओवरलैप करने के लिए चैनल्स पेरिफेरल कंट्रोलर्स तथा समर्पित इनपुट/आउटपुट प्रोसेसर्स का विकास हुआ। इसी दिशा में का भी विकास हुआ जो बिना के हस्तक्षेप के सीधे सीधे अपने बफर से डेटा के पूरे ब्लॉक को मेन मैमोरी में स्थानान्तरित कर सकता था। जब एक्जक्यूट कर रहा होता है, तो इनपुट/आउटपुट डिवाइसेस और मेन मैमोरी के बीच डेटा स्थानान्तिरित कर सकता है। कम्पयूटर सिस्टम के परफॉमेन्स को बढाने के लिए, के अलावा बफरिंग और स्पूलिंग नामक दो अन्य एप्रोच भी विकसित किए गए। बफरिंग में डेटा को इनपुट डिवाइस से रीड करने के पश्चात् इसे प्रोसेस करता है तथा प्रोसेसिंग के शुरू होने से ठीक पहले इनपुट डिवाइस अगले इनपुट की रीड करने के लिए ऑपरेटिंग सिस्टम द्वारा निर्देशित किया जाता है। इस प्रकार और इनपुट डिवाइस दोनों ही व्यस्त रहते हैं। प्रोसेस्ड डेटा को तब बफर में स्टोर करके रखता है, जब तक कि ये डेटा आउटपुट डिवाइस द्वारा स्वीकार नहीं करलिए जाते है। स्पूलिंग़, साइमलटैनिस पेरिफेरल ऑपरेशन ऑन लाइन का संक्षिप्त रूप है, स्पूलिंग भी एक मैथड है जिसके द्वारा सीपीयू एक से अधिक जॉब के इनपुट, प्रोसेसिंग और आउटपुट के बीच ओवरलैप करता है। स्पूलिंग की प्रक्रिया को कार्यान्वित करने के लिए ऑपरेटिंग सिस्टम, स्पूलर का प्रयोग करता है। 
  • मल्टीप्रोग्राम्ड ऑपरेटिंग सिस्टम: मल्टीप्रोग्राम्ड ऑपरेटिंग सिस्टम में मल्टीप्रोग्रामिंग टेकनीक निम्न तरीके से कार्य करती है:
    • मल्टीप्रोग्राम्ड ऑपरेटिंग सिस्टम एक से अधिक जॉब्स को मेमोरी में एक लोड करता है। 
    • ऑपरेटिंग सिस्टम इसमें से एक को एक्जक्यूट करना शुरू करता है। 
    • जब कोइ जॉब एक्जक्यूट कर रहा होता है, तो ऑपरेटिंग सिस्टम उन सभी का एक क्यू मेनटेन करता है, जो सीपीयू की उपलब्घता के लिए प्रतीक्षा कर रहे होते हैं।
    • जब वर्तमान में एक्जक्यूट हो रहे जॉब में इनपुट-आउटपुट ऑपरेटिंग की आवश्यकता होती है, तो ऑपरेटिंग सिस्टम अगले जॉब की प्रोसेसिंग के लिए सीपीयू को उस जॉब पर स्थानान्तरित कर देते हैं।
    • जॉब पहले वाले जॉब के इनपुट-आउटपुट आपरेश्न समाप्त होता है, टो ऑपरेटिंग सिस्टम पुनः इसे क्यू में रख देता है ताकि जब सीपीयू उपलब्घ हो तो इसकी बाकी प्रोसेसिंब पुरी की जा सके।
    • इस प्रकार ऑपरेटिंग सिस्टम सीपीयू के कंट्रोल को एक जॉब से दुसरे जॉबपर स्थानान्तरित करता रहता है। परिणामस्वरूप सीपीयू कभी भी आइडल स्थिति में नहीं रहता है।
  • टाइम शेयरिंग ऑपरेटिंग सिस्टम: टाइम शेयरिंग ऑपरेटिंग सिस्टम प्रत्येक यूजर के लिए एक क्रम में सीपीयू समय की एक समान मात्रा एलोकेट करता है। ऑपरेटिंग सिस्टम द्वारा प्रत्येक यूजर को सीपीयू द्वारा दिया जाने वाला समय टाइम-स्लाइस कहलाता है। यह टाइम- स्लाइस, 5 से 100 मिलीसेकण्ड्स तक का होता है।टाइम-शेयरिंग ऑपरेटिंग सिस्टम में उचित रिस्पॉन्स टाइम को प्राप्त करने के लिए जॉब्स को मेन मैमोरी से डिस्क में और डिस्क से मेन मैमोरी में स्वैप करने की आवश्यकता होती है। वर्चुअल मेमोरी इसी प्रकार का एक टेकनीक है, जो वैसे जॉब्स को प्रोसेस करने के लिए प्रयुक्त होता है, जो मेन मेमोरी में पूर्णरूपेण नहीं होते हैं. अतः वर्चुअल मेमोरी मेथड द्वारा वैसे जॉब्स को प्रसेस किया जाता है, जिनका साइज फिजिकल मेमोरी से बड़ा होता है।
बूटिंग: कम्प्यूटर के ऑन होने पर मॉनीटर स्क्रीन पर डॉस प्रॉम्ट प्रदर्शित होने तक की क्रिया को बूटिंग कहा जाता है । ऑपरेटिंग सिस्टम विन्डोज 95 अथवा इसके बाद के संस्करणों में विन्डोज के खुलने तक की क्रिया को बूटिंग कहा जाता है । बूटिंग दो प्रकार की होती है
  • कोल्ड बूटिंग: जब कम्प्यूटर को उसके पावर स्विच को ऑफ करने के बाद पुनः ऑन करके बूट किया जाता है, तो इस प्रकार की बूटिंग को कोल्ड बूटिंग कहा जाता है। 
  • वार्म बूटिंग: जब कम्प्यूटर को उसकी प्रोसेसिंग यूनिट के सामने वाले भाग पर दिए गए रीसेट बटन दबाकर अथवा ‘की-बोर्ड’ पर Ctrl, Alt और Del तीनों ‘कीज’ को एक साथ दबाकर बूट किया जाता है, तो इस प्रकार की बूटिंग को वॉर्म बूटिंग कहा जाता है। कम्प्यूटर को बूट करने के लिए एम एस-डॉस की तीन फाइल्स-MS_DOS.SYS, IO.SYS एवं COMMAND.COM होनी आवश्यक है। इनमें से पहली दो फाइल्स हिडन यानी छुपी हुई फाइल्स होती हैं एवं COMMAND.COM एक सामान्य फाइल होती है । ये फाइल्स, यदि डॉस कम्प्यूटर की हार्डडिस्क में स्थापित है, तो हार्डडिस्क में और यदि नहीं है, तो िजस फ्लॉपी से कम्प्यूटर को चालू (बूट) किया जा रहा है, अर्थात् बूटेबल फ्लापी डिस्क में होनी चाहिए।
ऑपरेटिंग सिस्टम सीधे - सीधे कम्प्यूटर हार्डवेयर रिसोर्सेस को नियंत्रित करता है तथा अन्य प्रोग्राम्स आपरेटिंग सिस्टम के माध्यम से कम्प्यूटर सिस्टम के रिसोर्सेस को एक्सेस करते हैं। यूजर दो तरीकों से आपरेटिंग सिस्टम से इन्ट्रैक्ट कर सकता है-
  • सिस्टम कॉल के द्वारा: सिस्टम कॉल प्रोसेस तथा आपरेटिंग सिस्टम के बीच इन्टरफेस प्रदान कर सकते हैं। ज्ञातव्य हो कि जब कोई प्रोग्राम रन कर रहा होता है. तो उसे प्रोसेस कहते हैं। पहले सिस्टम कॉल्स को एसेम्बली लैंग्वेज में लिखा जाता था, परन्तु आजकल ये हाई-लेवल-लैंग्वेजस जैसे- C,C++,Pascal इत्यादि में भी लिखे जा सकते हैं। सिस्टम कॉल को पाँच श्रोणियों में समूहित किया जा सकता है
    • प्रोसेस कंट्रोल: किसी भी प्रोग्राम के रनिंग स्टेटस को प्रोसेस कहा जाता है। किसी भी रनिंग प्रोग्राम के एक्जक्यूशन को या तो साधारणतया उसके एक्जक्यूशन के समाप्ति पर या एक्जक्यूशन के बीच से ही अर्थात् एबोर्ट करके हाल्ट किया जा सकता है। यदि कोई सिस्टम कॉल किसी रन कर रहे प्रोग्राम अर्थात् प्रोसेस को बीच में ही एबोर्ट कर, उसके एक्जक्यूशन को टरमिनेट करता है, तो आपरेटिंग सिस्टम, मेमोरी के डम्प को लेकर डिस्क में लिख देता है तथा एक एरर मैसेज जनरेट करते है। डिस्क में लिखा गया मेमोरी डम्प, डिबगर द्वारा समस्या के कारण को सुनिश्चित करने के लिए निरीक्षित किया जाता है। प्रोसेस के नार्मल या एबनार्मल दोनों ही टरमिनेशन की परिस्थितियों में आपरेटिंग सिस्टम कमाण्ड इन्टरप्रेटर को कन्ट्रोल ट्रान्सफर करता है। इसके बाद कमाण्ड इन्टरप्रेटर अगले कमाण्ड को रीड करते है। इन्टरैक्टिव सिस्टम में कमाण्ड इन्टरप्रेटर अगले कमाण्ड को रीड कर एक्जक्यूट करते है,जबकि बैच सिस्टम में कमाण्ड इन्टरप्रेटर पूरे जॉब को टरमिनेट कर अगले जॉब को रीड कर एक्जक्यूट करता है।
    • फाइल प्रबंधन: इस श्रोणी के अन्तर्गत वैसे सिस्टम काँल आते हैं, जो फाइल को किएट, डिलीट, काँपी तथा फाइल के को देखने तथा सेट करने के लिए प्रयोग किये जाते हैं । किसी भी फाइल को क्रिएट करने के लिए जहाँ सिस्टम काल में फाइल के नाम को निर्दिष्ट करने की आवश्यकता होती है, वही पाइल को डिलीट करने के लिए फाइल के नाम के साथ-साथ उनके एट्रीब्यूट्स को भी चेक करने जरूत पड़ती हैकिसी भी पाइल को क्रिएट करने के पश्चात् उसे ओपन कर,रीड या राइट या रिवाइन्ड किया जा सकता है। अन्त में फाइल को बन्द करने की आवश्यकता होती है। ये सभी प्रक्रियाए सिस्टम काँल के द्वारा पूरी की जा सकती हैं। ज्ञातव्य हो कि पाइल एट्रीब्यूट्स के अन्तर्गत फाइल का नाम, फाइल का टाइप, प्रोटेक्शन कोड़ इत्यादि आते हैं।
    • डिवाइस प्रबंधन
    • सूचना प्रबंधन
    • कम्यूनिकेशन्स
  • ऑपरेटिंग सिस्टम कमाण्ड्स के द्वारा: यूजर,सिस्टम काल्स के अलावा आपरेटिंग सिस्टम से आपरेटिगं सिस्टम के कमाण्ड्स के द्वारा भि इन्ट्रैक्ट कर सकता है। उदाहरणस्वरूप यदि आप MS DOS में किसी डाइरेक्ट्री के फाइलों या सब डाइरैक्ट्रीज को देखना चाहते है,तो आप DIR कमाण्ड का आह्वान कर सकते हैं। आपरेटिंग सिस्टम अपने कमण्ड्स के द्वारा यूजर और कम्प्यूर सिस्टम के हार्डवेयर के बीच कॉम्यूनिकेट करता हैं। ऑपरेटिंग सिस्टम के प्रमुख उद्देश्य यूजर की समस्या का समधान करना है, अतः ज्यादातर आपरेटिगं सिस्टम के साथ सर्वसाधारण समस्या को हल करने के प्रोग्राम्स की अपूर्ति की जाती है। इन प्रोग्राम्स के अन्तर्गत वेब ब्राउजर्स, टेक्स्ट र्फार्मेटस, वर्ड-प्रोसेसर्स, कम्पाइलर्स, डेटाबेस सिस्टम स्प्रेडशीट्स इत्यादी आते हैं। ये प्रोग्राम सिस्टम यूटिलिटीज या एप्लीकेशन प्रोग्राम्स के नाम से जाने जाते हैं। कमाण्ड इन्टंरप्रेटर किसी भी आपरेटिंग सिस्टम का सबसे महत्वपूर्ण प्रोग्राम होता है। कमाण्ड इन्टरप्रेटर का प्रमूख कार्य द्वारा दिए गए कमाण्ड को स्वीकार कर एक्जक्यूट ना होता हैं। कुछ आपरेटींग सिस्टम के कमाण्ड इन्टरप्रेटर कमाण्ड्स को एक्जक्यूट करने का कोड अपने आप मे साधरण करता है, जबकि कुछ ऑपरेटिंग सिस्टम मे कमाण्ड इन्टरप्रेटर दिए गए कमाण्ड कोफाईल सिस्टम मे खोज कर मेमोरी में लोड कर, कमाण्ड के साथ दिए गए पैरामिटर के साथ एक्जक्यूट करता है। उदहारणस्वरुप MS-DOS का कमाण्ड इन्टरप्रेटर, जो command.com है, अनेको कमाण्डस को एक्जक्यूट करने का कोड धारण करता है। जैसे यूजर द्वारा किसी फाइंल को डिलीट करन के लिए दिया गया DEL कमाण्ड, कमाण्ड इन्टरप्रेटर (command.com) द्वारा स्विकार कर एक्जक्युट भी किया जाता है। जबकि UNIX में यदि abc नामक फाइल को डिलीट करने के लिए कमाण्ड्स यूजर द्वारा दिया जाता है, तो का कमाण्ड इन्टरप्रेटर, नामक फाइल को फाइल सिस्टम से खोज कर,इसे मिमोरी मे लोड कर, abc पैरामिटर के साथ एक्जक्यूट करता है। अतः इस निष्कर्ष पर पहुंचते है कि UNIX में किसी कमाण्ड की क्रियात्मकता अलग-अलग फाइल में परिभाषित की जाती, ना कि कमाण्ड इन्टरप्रेर में।
चूँकि ऑपरेटिंग सिस्टम एक बड़ा और जटिल सॉफ्टवेयर है, जो बड़ी संख्या में फंक्शन्स का समर्थन करता है। अतः ऑपरेटिंग सिस्टम का विकास एक मोनोलिथिक सॉफ्टवेयर के रूप में न होकर कई छोटे-छोटे मॉड्यूल्स के कलेक्शन के रूप में होना चाहिए। इनमें से प्रत्येक मॉड्यूल के इनपुट्स, आउटपुट्स तथा कार्य अच्छी तरह से परिभाषित होने चाहिए।
  • लेयर्ड स्ट्रक्चर एप्रोच: लेयर्ड स्ट्रक्चर एप्रोच, ऑपरेटिंग सिस्टम को विभिन्न सतहों में विभाजित कर, उसे डेवलप करने की एक विधि है। प्रत्येक सतह नीचे वाली सतह के शीर्ष पर बनाई जाती है। सबसे नीचे की सतह हार्डवेयर की होती है। जबकि सबसे ऊपर की सतह यूज़र इंटरफेस की होती है। लेयर्ड स्ट्रक्चर एप्रोच के तहत THE नामक ऑपरेटिंग सिस्टम, एक बैच ऑपरेटिंग सिस्टम था, जिसमें छः सतहें थीं। 
  • कर्नल एप्रोच: कर्नल एप्रोच में ऑपरेटिंग सिस्टम दो अलग-अलग भागों का बना होता है। पहले भाग को कर्नल कहा जाता है और दूसरे भाग में सिस्टम प्रोग्राम्स होते हैं। कर्नल, सिस्टम प्रोग्राम्स और हार्डवेयर के मध्य अवस्थित होता है। कर्नल हार्डवेयर सिस्टम से इंटरफेस स्थापित करता है। 
  • वर्चुअल मशीन: वर्चुअल मशीन एक कॉनसेप्ट है, जो वास्तविक मशीन की जगह अनेक वास्तविक मशीनों के होने का भ्रम उत्पन्न करता है। वर्चुअल मशीन तकनीक का सबसे महत्वपूर्ण पहलू यह है कि प्रत्येक यूज़र अपनी इच्छा के अनुसार ऑपरेटिंग सिस्टम को रन कर सकता है।
ऑपरेटिंग सिस्टम के कार्य: ऑपरेटिंग सिस्टम के निम्नलिखित कार्य हैं
  • प्रोसेस मैनेजमैंट: जब भी कोइ प्रोग्राम मैनेजमेंट एक्जक्यूट कर रहा होता है,तो उस प्रोग्राम को प्रोसेस कहा जाता है।किसी क्रार्य को पूरा करने के लिए किसी भी प्रोग्रेस के लिए किसी भी प्रोग्रेस को निश्चित रिसोर्सेस की आवश्यकता होती है। रिसोर्सेस की आवश्यकता होती है। रिसेर्सेस के अन्तर्गत सी.पी.यू का टाइम,मेमोरी ,फाइल्स और इनपुट या आउटपुट डिवाइसेस आते हैं।ये रिसोर्सेस किसी भ प्रोसेस को ऑपरेटिंग सिस्टम द्वारा तब एलोकेट किए जाते हैं,जब प्रोग्रेस रन कर रहा होता है। प्रोग्रेस दो प्रकार के होते हैं--ऑपरेटिंग सिस्टम के प्रोसेसेस और यूजर सिस्टम के प्रोसेसेस। ऑपरेटिंग सिस्टम के प्रोसेसेस सिस्टम कोड को एक्जक्यूट करते हैं,जबकि यूजर के प्रोसेसेस यूजर के कोड को एक्जक्यूट करते हैं।ये सभी प्रोसेसेस CPU को द्वारा विभाजित कर एक साथ एक्जक्यूट करता हैं। प्रोसेस मैनेजमें के संर्दभ में ऑपरेटिंग सिस्टम निम्नलिखित कार्यों के लिए उत्तरदायी होता है- यूजर और सिस्टम प्रोसेसेस क्रिएट तथा डिलीट करना प्रोसेसेस को ससपेन्ड और रिज्यूम करना प्रोसेस कॉम्यूनिकेशन के लिए मेकेनिज्म प्रदान करना। प्रोसेस सिनक्रोनाइजेशन के लिए मेकेमिज्म प्रदान करना डेडलॉक हैन्डलिंग के लिए मेकेनिज्म प्रदान करना। 
  • मेन-मोमेरी मैनेजमेंट: किसी भी आधुनिक कम्पयूटर सिस्टम में किसी भी ऑपरेशन को स्मपादित करने मेंन-मेमोरी की महत्वपूर्ण भूमिका होती है;क्योंकि मेन मेमोरी ही वह जगह है,जहा से CPU और I/Q डिवाइसेस डेटा को तेजी से एक्सेस कर सकते हैं। मेन-मेमोरी के वर्ड्स या बाइट्स का बहुत बड़ा एरे कहा जा सकता है,जिसमे प्रत्येक वर्ड या बाइट का अपना एड्रेस होता है।इन्सद्रकशन -फेच साइकल के समय CPU मेन-मेमोरी से ही इन्सट्रक्शन्स को रीड करता है।तथा डेटा -फेच साइकल के समय CPU ,मेन-मेमोरि से डेटा रीड/राइड करता है।यहां तक कि DMA के माध्यम से किए जाने वाले I/Q ऑपरेशन्स भी मेन-मेमोरी रीड -राइट ऑपरेशन कहत हैं। अतः हम यह कह सकते है कि मेन-मेमोरी एक बहुत बड़ा स्टोरेज डिवाइस है,जिसको CPU एड्रेस कर सकता है तथा सीधे-सीधे एक्सेस कर सकता है। उदाहरणस्वरूप यदी डिस्क में स्टेर्ड डेटा प्रोसेस करना है तो सर्वप्रथम डेटा को डिस्क से मेन-मेमोरी में स्थानान्तरित करना होगा । इस स्थानान्तरित कोप्रोसेस करने के लिए इन्सट्रक्शन्सनिश्चित रूप से मेमोरी में विधमान होना चाहिए,जो (CPU) द्वारा एक्जक्यूट किए जा सकें । किसी भी प्रोग्राम को एक्जक्यू करने के लिए प्रोग्राम को मेमोरी में लोड किया जाता है,परन्तु इससे पूर्व प्रोग्राम को एबसॉल्यूट एड्रेस से मैप किया जाना आवश्यक हता है। जब प्रोग्रोम एक्जक्यूट करता है, तो उस प्रोग्राम इन्सट्रक्शन्स और डेटा को मेन-मेमोरी से एक्सेस करता है अन्त मे जब प्रोग्राम टरमिनेट होता है, तो मेन-मेमोरी का स्पेस खाली हो जाता है,जो अगले प्रोग्राम के लिए उपलब्ध होता है। अतः उसमें अगले प्रोग्राम को लोड कर एक्जकयूट किया जा सकता है। ज्ञातव्य हो CPU का अधिकतम उपयोग करने के लिए मेमोरी में एक साथ एक से अधिक प्रोग्राम्स को स्टोर किया जाता है। इसके लिए विभिन्न मैनेजमेंट टेकनीक का प्रयोग किया जाता । इन मेमोरी मैनेजमेंट टेकनीक में किसी भी टेकनीक का चुनाव कम्पयुटर सिस्टम के हार्डवेयर डिजाइन को ध्यान मे रखकर करना पड़ता है। मेमोरी मैनेजमेंट के सदंर्भ में ऑपरेटिंग सिस्टम निम्नलिखित कार्यों के लिए उत्तरदायी है
    • वर्तमान में मेमोरी का कौन सा हिस्सा किस प्रोसेस द्वारा उपयोग हो रहा है.
    • मेमोरी स्पेस उपल्ब्ध होने पर यह निर्णय लेना कि मेमोरी में किन प्रोसेस को लोड किया जाएगा.
    • आवश्यकतानुसार मेमोरी स्पेस को एलोकेट और डिएलोकेट करना। 
  • फाइल मैनेजमेंट: फाइस मैनेजमेंट ऑपरेटिंग सिस्टम का सबसे दृश्य कम्पोनेन्ट है। फाइल,बाइट्स की एक माला होती है। दूसरे शब्दो मे कह सकते हैं कि,फाइल, सम्बन्धित इन्फरमेशन का एक कॉलेक्शन है,जो इसके बनाने वाले द्वारा परिभाषित किया जाता है। प्रत्येक फाइल जो सेकेण्डरी स्टोरेज डिवाइस में स्टोर की जाती है, उसका कुछ नाम होता है, जिस नाम से उसे निर्दिष्ट किया जाता है।प्रत्येक फाइल सेकण्डरी स्टोरेज डिवाइस में किसी डाइरेक्ट्री के अधीन स्टोर की जाती है।प्रत्येक फाइल की अपनी प्रॉपर्टीज अर्थात एर्टीब्यूट्स होती है। फाइल मैनेजमेंटके सन्दर्भ में ऑपरेटिंग सिस्टम निम्नलिखित कार्यों के लिए उत्तरदायी है
    • फाइलों को क्रिएट तथा डिलीट करना।
    • डाइरेक्ट्रीज को क्रिएट तथा डिलीट करना।
    • फाइल्स तथा डाइरेक्ट्रीज के मैनिपुलेशन को समर्थन करना।
    • फाइलों को सेकेण्डरी स्टोरेज पर मैप करना।
    • फाइलों के बैकअप का समर्थन करना।
  • सेकेन्डरी स्टोरेज मैनेजमेंट: चूकीं मेन -मेमोरी का साइज इतना बड़ा है वह सभी डेटा और प्रोग्राम को स्टोर कर सके ,साथ ही इसकी प्रकृति उध्र्वनशील होती है। ज्ञातव्य हो की उध्र्वनशील मेमोरी वह मेमोरी होती है, जिसमें स्टोर किए गए डेटा और प्रोग्राम पावर के गायब होने की स्थिती में नष्ट हो जाते हैं। अतः कम्प्यूटर सिस्टम में मेन-मोमेरी स्टोर्ड डेटा और प्रोग्राम को स्थायी रूप से स्टोर कर ने के लिए सेकेण्डरी स्टोरेज का होना आवश्यक होता है। आजकल कम्प्यूटर सिस्टम में डिस्क का उपयोग डेटा और प्रोग्राम को स्टोर कर ने के लिए ऑन-लाइन स्टोरेज मीडिया के रूप मे किया जाता है।डिस्क मैनेजमेंट के संर्दभ में ऑपरेटिंग सिस्टम निम्नलिखित कार्यों के लिए उत्तरदायी हैं
    • डिस्क के फ्री-स्पेस को मैनेज करने के लिए।
    • स्टोरेज स्पेस को एलोकेट करने के लिए।
    • डिस्क शिड्युलिंग के लिए।
मेमोरी मैनेजमेंट: सीपीयू(CPU) को एक से अधिक प्रोसेसेस के बीच शेयर कर इसके उपयोग और परफॉर्मेंस को बढ़या जा सकता है। सीपीयू(CPU) के उपयोग और परफॉर्मेंस को बढ़ाने के लिए, सभी प्रोसेसेस को एक साथ प्राइमरी मैमोरी में रखा जाता है। अतः सीपीयू(CPU) के परफॉर्मेंस को बढ़ाने के लिए मैनोरी की शेयरिंग आवश्यक होती है। मेन मैमोरी का ऑर्गेनाइजेशन ऐर मैनेजनेंट ऑपरेटिंग सिस्टम की डिजाइनिंग को प्रभावित करने वाला सबसे प्रमुख कारक रहा है। प्राथमिक रूप से मैमोरी मैनेजमेंट का संबंध रिक्वेस्टिंग प्रोसेस के लिए मेन मैमोरी को एलोकेट करना है, क्योंकि कोई भी प्रोसेस तब तक रन नहीं कर सकता है, जब तक उसके लिए मैमोरी को एलोकेट नहीं किया जाता है।

मैमोरी मैनेजमेंट की स्कीम्स
  • सिंगल प्रोसेस मॉनिटरिंग: सिंगल प्रोसेस मॉनिटर सबसे सरल मैमोरी मैनेजमेंट एप्रोच है। इस एप्रोच में, मैमोरी को दो भागों में विभाजित किया जाता है, जिसमें पहला भाग ऑपरेटिंग सिस्टम प्रोग्राम के लिए होता है, जिसे मॉनिटर भी कहा जाता है। जबकि दूसरा भाग यूज़र प्रोग्राम के लिए होता है। इस प्रकार के एप्रोच में, ऑपरेटिंग सिस्टम, मैमोरी के पहले और अंतिम लोकेशन का आंकड़ा यूज़र प्रोग्राम के लोकेशन के लिए रखता है। यूज़र प्रोग्राम के लिए कन्टिग्युअस एरिया(area) प्रदन करने के लिए, ऑपरेटिंग सिस्टम मैमोरी के शीर्ष (Top) या गर्त (Bottom) में लोड किया जाता है। चूँकि इन्ट्रप्ट वेक्टर, लो मैमोरी में रहता है। अतः ऑपरेटिंग सिस्टम प्रोग्राम, जिसे मॉनिटर भी कहा जाता है, को लो मैमोरी में ही रखा जाता है।
  • मल्टीप्रोग्रामिंग: मल्टीप्रोग्रामिंग इनवायरमेंट में एक से अधिक प्रोग्राम एक साथ प्राथमिक मैमोरी में रखे जाते हैं तथा सीपीयू तेजी से एक प्रोग्राम से दूसरे प्रोग्राम के बीच कंट्रोल को पास करता है। मल्टीप्रोग्रामिंग में पूरे मेन मैमोरी को कई भागों में बाँट दिया जाता है तथा प्रत्येक भाग, एक-एक प्रोसेस एलोकेट कर दिया जाता है।  
मैमोरी पार्टिशनिंग दो प्रकार की हो सकती है
  • स्टैटिक पार्टिशनिंग: स्टैटिक पार्टिशनिंग में सिस्टम जनरेशन प्रोसेस के समय ही अर्थात् प्रारम्भ में ही, मैमोरी को विभिन्न साइज के पार्टिशन्स में बाँट दिया जाता है तथा इन पार्टिशन्स के साइज में कोई परिवर्तन नहीं किया जा सकता है।
  • डायनेमिक पार्टिशनिंग: डायनेमिक पार्टिशनिंग में मैमोरी को विभिन्न पार्टिशन्स में, रन टाइम में बाँटा जाता है, साथ ही इन पार्टिशन्स के साइज़ का निर्धारण भी ऑपरेटिंग सिस्टम द्वारा किया जाता है।
रिलोकेशन: रिलोकेशन का तात्पर्य किसी भी प्रोग्राम को वांछित मैमोरी पार्टिशन में लोड कर एक्ज़िक्यूट करने से है। प्राथमिक मैमोरी के वरिचुअल एड्रेस का वास्तविक एड्रेस या फिज़िकल एड्रेस में ट्रान्सलेट कब और कैसे होता है, के आधार पर, प्रोसेस या प्रोग्राम रिलोकेशन दो प्रकार के हो सकते हैं-स्टैटिक रिलोकेशन और डायनेमिक रिलोकेशन। यदि रिलोकेटिंग लिंकर या रिलोकेटिंग लोडर द्वारा किसी प्रोग्राम को मैमोरी में लोड करते समय या पहले रिलोकेट किया जाता है, तो रिलोकेशन के इस एप्रोच को स्टैटिक रिलोकेशन कहते हैं।

डायनेमिक रिलोकेशन: डायनेमिक रिलोकेशन में जब किसी प्रोसेस को शिड्यूल किया जाता है, तो बेस रजिस्टर को स्टार्टिंग एड्रेस के साथ लोड किया जाता है। प्रत्येक मैमोरी एड्रेस जो स्वतः जेनरेट होते हैं) को मेन मैमोरी में भेजने से पहले, बेस रजिस्टर के कन्टेन्ट्स से जोड़ दिया जाता है।

डायनेमिक पार्टिशनिंग: फिक्स्ड साइज पार्टिशनिंग में सबसे बड़ी समस्या यह है कि इसमें पार्टिशन की साइज के छोटे होने की स्थिति में मैमोरी का वेस्टेज होता है। इस समस्या को दूर करने के लिए डायनेमिक पार्टिशनिंग नामक मैमोरी मैनेजमेंट एप्रोज का प्रयोग किया जाता है। डायनेमिक पार्टिशनिंग(या वैरिएबल पार्टिशनिंग) में प्रत्येक रिक्वेस्टिंग प्रोसेस की जरूरतों के अनुसार डायनेमिक ढ़ग से पार्टिशन्स क्रियेट किये जाते हैं। जब कोई प्रोसेस टर्मिनेट या स्वैप-आउट होता है, तो मैमोरी मैनेजर उस पार्टिशन के खाली स्पेस को फ्री-मैमोरी एरिया को लौटा सकता है, जिसमें पार्टिशन्स का एलोकेशन किया जाता है। डायनेमिक पार्टिशनिंग में न तो डायनेमिकली एलोकेटेड पार्टिशन की साइज और न ही पार्टिशन की संख्या की कोई सीमा होती है। क्योंकि मैमोरी मैनेजर, रिक्वैस्टिंग प्रोसेस के लिए तब तक पार्टिशन को क्रियेट और एलोकेट करता रहता है, जब तक कि फिजिकल मैमोरी का पूरा स्पेस पूरी तरह नहीं भर जाता है।

पेजिंग: पेजिंग एक मैमोरी मैनेजमेंट तकनीक है, जिसके द्वारा किसी प्रोसेस के फिजिकल एड्रेस को फिजिकल मैमोरी में नॉन-कन्टिग्युअस ढ़ंग से स्टोर किया जाता है। अर्थात् पेजिंग के द्वारा किसी भी प्रोसेस के लिए मैमोरी के किसी भी संभावित फिजिकल एड्रेस को एलोकेट किया जा सकता है। पेजिंग में सर्वप्रथम फिजिकल मैमोरी को फिक्स्ड साइज के ब्लॉक्स में विभाजित कर दिया जाता है, जिन्हें फ्रेम्स कहते हैं। इसके बाद लॉजिकल मैमोरी को फिक्स्ड साइज के ब्लॉक्स में विभाजित कर दिया जाता है, जिन्हें पेजेस कहते हैं। जब किसी प्रोग्राम को रन करना होता है, तो इसके पेजेस डिस्क या किसी भी बैकिंग स्टोरेज से किसी मैमोरी फ्रेम में लोड हो जाते हैं। डिस्क या बैकिंग स्टोरेज को फिक्स्ड-साइज के ब्लॉक्स में विभाजित किया जाता है। इन ब्लॉक्स की साइज मैमोरी फ्रेम्स की साइज के बराबर होता है।

सेगमेन्टेशन: सेगमेन्टेशन एक मैमोरी मैनेजमेन्ट स्कीम है, जो मैमोरी को प्रोग्रामर के सोचने की दृष्टि का समर्थन करता है। कोई भी प्रोग्राम, ट्रान्सलेशन टाइम में लॉजिकली रिलेटेड इन्टिटीज़ को एक साथ ग्रुप कर सेगमेन्ट्स को बनाया जाता है। इन सेगमेन्ट्स का फॉर्मेशन कम्पाइलर के अनुसार वैरी करता है।

वर्चुअल मैमोरी: वर्चुअल मैमोरी एक ऐसी मैमोरी मैनेजमेंट तकनीक है, जो प्रोग्राम को टुकड़ों में विभाजित करने तथा इसे स्वैप-इन और स्वैप-आउट करने का कार्य करता है। वर्चुअल मैमोरी के द्वारा वैसे प्रोग्राम्स को भी मैमोरी में लोड या एक्जिक्यूट किया जा सकता है, जिनकी साइज फिजिकल मैमोरी से अधिक हो। वर्चुअल मैमोरी को छोड़ कर अन्य सभी मैमोरी मैनेजमेंट तकनीकों में सभी प्रोसेसेस को उनके एक्जिक्यूट होने से पहले मैमोरी में रहना या रखना आवश्यक होता है। परन्तु वर्चुअल मैमोरी द्वारा उन प्रोसेसेस को भी एक्जिक्यूट किया जा सकता है, जो पूर्णरूपेण मैमोरी में नहीं रखे गये हों। इस प्रकार वर्चुअल मैमोरी प्रोग्रामर के लिए फिजिकल मैमोरी के वास्तविक साइज से अधिक होने का भ्रम उत्पन्न करता है। वर्चुअल मैमोरी को पेज्ड या सेगमेन्टेड मैमोरी मैनेजमेंट तकनीक के विस्तार के रूप में भी कार्यान्वित किया जा सकता है, डिमाण्ड पेजिंग या डिमाण्ड सेगमेन्टेशन कहते हैं।

फ़ाइल मैनेजमेंट: फाइल, संबंधित सूचनाओं का एक समूह है। प्रत्येक फाइल का एक नाम होता है, जिसके द्वारा इन्हें निर्दिष्ट किया जाता है। फाइल मैनेजमेंट किसी भी ऑपरेटिंग सिस्टम एक महत्वपूर्ण पहलू है, जो डाटा और प्रोग्राम को सेकेण्डरी स्टोरेज डिवाइस में स्टोर करने से लेकर उसे मैनेज करने तक का कार्य करता है। फाइल मैनेजमेंट सिस्टम निम्नलिखित कार्यों के लिए उत्तरदायी होता है
  • लॉजिकल फाइल एड्रेस से फिजिकल डिस्क एड्रेस की मैपिंग के लिए।
  • डिस्क स्पेस के मैनेजमेंट, एलोकेशन और डिएलोकेशन के लिए।
  • सिस्टम की सभी फाइलों की जानकारी रखने के लिए।
  • फाइलों की शेयरिंग और प्रोटेक्शन के लिए।
फाइल: कोई भी फाइल, बिट्स या बाइट्स या रिकॉर्ड्स के सिक्वेंस का कलेक्शन होता है। किसी फाइल में कोई आवेदन, रिपोर्ट, कोई एक्जिक्यूटेबल प्रोग्राम या फिर लाइब्रेरी फंक्शन्स को स्टोर किया जा सकता है।

डाईरेक्टरी: ज्यादातर ऑपरेटिंग सिस्टम में डायरेक्टरी को फाइल के रूप में व्यवस्थित किया जाता है। कोई भी डायरेक्टरी अपने से संबंधित फाइलों की जानकारी रखती है। कोई भी डायरेक्टरी एक फ्लैट डायरेक्टरी या फिर हैरारिकल डायरेक्टरी हो सकती है। फ्लैट डायरेक्टरीज़ वे डायरेक्टरीज़ हैं, जिनमें रूट डायरेक्टरी सभी सिस्टम फाइल्स को धारण करती है तथा जिनमें कोई भी सब-डायरेक्टरी नहीं होती है। हैरारिकल डायरेक्टरीज़, डायरेक्टरीज़ तथा सब-डायरेक्टरीज़ का एक समूह होती हैं। फाइल को ज्यादातर हैरारिकल डायरेक्टरी में ही ऑर्गेनाइज किया जाता है।

डिस्क ऑर्गेनाइजेशन: किसी डिस्क पर स्टोर की गई सूचनाओं को उस डिस्क के ड्राइव नम्बर, सतह तथा ट्रैक द्वारा निर्दिष्ट किया जाता है। डिस्क प्लैटर का बना होता है। प्रत्येक प्लैटर की दो सतहें होती हैं। अतः यदि किसी डिस्क में 6 प्लैटर हैं, तो उसमें 12 सतहें होंगी। परन्तु रीड-राइट ऑपरेशन में केवल 10 सतहें ही काम आयेंगी, क्योंकि सबसे ऊपरी प्लैटर की ऊपरी सतह और सबसे नीचे वाले प्लैटर के नीचे वाली सतह पर रीड-राइट ऑपरेशन नहीं किया जा सकता है। सभी प्लैटर एक साथ उदग्र रूप से, सेलेण्डर का निर्माण करते हैं। डिस्क सतह, ट्रैक्स में बंटा होता है तथा ट्रैक्स सैक्टर में बंचे होते हैं। इनपॉर्मेशन को डिस्क पर किसी ट्रैक में ब्लॉक्स के रूप में स्टोर किया जाता है। ब्लॉक्स की साइज सैक्टर साइज के बराबर होनी चाहिए।

डिस्क स्पेस मैनेजमेंट: ऑपरेटिंग सिस्टम डिस्क के फ्री-स्पेसेस की एक लिस्ट मेनटेन करता है, जिससे वह डिस्क के अप्रयुक्त डिस्क-ब्लॉक्स की जानकारी रखता है। नयी फाइल को क्रियेट करने के लिए प्री डिस्क स्पेस की लिस्ट को सर्च किया जाता है तथा नयी फाइल को प्री डिस्क स्पेस एलोकेट किया जाता है। नयी फाइल को एलोकेट किये गये डिस्क स्पेस की साइज की मात्रा को फ्री डिस्क स्पेस की लिस्ट से हटा दिया जाता है। जब किसी फाइल तो डिलिट किया जाता है, तो उस फाइल द्वारा छेंके गये डिस्क स्पेस को फ्री डिस्क स्पेस की लिस्ट में जोड़ दिया जाता है।

बिट वेक्टर: ज्यादातर डिस्क के फ्र स्पेस को बिट वेक्टर या बिटमैप के रूप में कार्यान्वित किया जाता है। बिट वेक्टर मैथड में डिस्क के प्रत्येक ब्लॉक को एक बिट से दर्शाया जा सकता है.

डिस्क एलोकेशन मैथड
  • कन्टिग्युअस एलोकेशन
  • लिंक्ड एलोकेशन
  • इन्डेक्स्ड एलोकेशन
फाइल प्रोटेक्शन: मल्टीयूज़र इनवायरमेंट में फाइल की सुरक्षा आवश्यक होती है, इसमें फाइलों की शेयरिंग एक से अधिक यूज़रों के द्वारा की जाती है। फाइलों की सुरक्षा के लिए विभिन्न प्रोटेक्शन मैकेनिज्म उपयोग किये जाते हैं-
  • पासवर्ड
  • एक्सेस लिस्ट
  • एक्सेस ग्रुप
प्रोसेस मैनेजमेंट: ऑपरेटिंग सिस्टम प्रत्येक रिसोर्स की स्थिति की जानकारी रखता है और निश्चित पॉलिसी के आधार पर विभिन्न प्रोसेसेस के लिए रिसोर्सेस को बांटता है तथा यह निर्णय भी लेता है कोई प्रोसेस कितनी देर तक रिसोर्सेस का प्रयोग करेगा। अंत में यह बांटे गये रिसोर्सेस को डिएलोकेट भी करता है। ऑपरेटिंग सिस्टम द्वारा फिजिकल प्रोसेसरेस का प्रबंधन अर्थात् प्रोसेसेस या टास्क्स या जॉब्स के लिए प्रोसेसर को एलोकेट करना ही प्रोसेसर मैनेजमेंट कहलाता है।

प्रोसेस कॉनसेप्ट: प्रोग्राम की एक्जिक्यूट कर रही अवस्था ही प्रोसेस है। प्रोग्राम जहाँ पैसिव इन्टिटी है, जैसे, डिस्क पर प्रोग्राम कोड्स को फाइलके रूप में स्टोर करना। वहीं प्रोसेस एक एक्टिव इन्टिटी है, जिसके साथ एक प्रोग्राम काउन्टर होता है, जो अगले इन्सट्रक्शन को एक्जिक्यूट करने को निर्दिष्ट करता है तथा प्रोसेस से संबंधित रिसोर्सेस का सेट होता है। केवल एक प्रोसेसर को कई प्रोसेसेस के बीच शिड्यूलिंग नीति द्वारा शेयर किया जा सकता है।

प्रोसेसेस हैरारिकीज़: जब कोई प्रोसेस क्रियेट होता है तो वह अन्य प्रोसेसे को क्रियेट करता है और फिर नये प्रोसेस अन्य प्रोसेस को क्रियेट कर सकते हैं। क्रियेटिंग प्रोसेस को पैरेंट प्रोसेस तथा नये प्रोसेस को उस प्रोसेस का चाइल्ड प्रोसेस कहा जाता है। इस प्रकार एक प्रोसेस द्वारा अन्य प्रोसेसेस को क्रियेट करने के कारण प्रोसेस ट्री का निर्माण होता है।

प्रोसेस स्टेट्स: किसी प्रोसेसे की जीवनावधि को कई पड़ावों में बांटा जा सकता है। ये पड़ाव किसी प्रोसेस के स्टेट्स कहे जाते हैं। जब कोई प्रोसेस एक्जिक्यूट करता है, तो उसका स्टेट परिवर्तित होता है। कोई प्रोसेस न्यू, रेडी, रनिंग, वेटिंग या टर्मिनेटेड में से किसी भी एक स्टेट में हो सकता है.

प्रोसेसर शिड्यूलिंग: शिड्यूलिंग का प्रमुख उद्देश्य, सीपीयू की उपयोगिता तथा सिस्टम की कार्य क्षमता को दिये गये समय में थ्रोपुट को बढ़ाना है। ऑपरेटिंग सिस्टम द्वारा प्रोसेस शिड्यूलिंग की प्रक्रिया शिड्यूलर द्वारा संपादित की जाती है। शिड्यूलर ऑपरेटिंग सिस्टम का एक प्रोग्राम या मॉड्यूल है, जो प्रोसेस को एक्जिक्यूट करने के लिए प्रोसेसे को जॉब क्यू से सिलेक्ट करता है। शिड्यूलर्स निम्न प्रकार के होते हैं
  • लॉन्ग टर्म शिड्यूलर
  • मिडियम टर्म शिड्यूलर
  • शॉर्ट टर्म शिड्यूलर
शिड्यूलिंग और परफार्मेंस क्राइटेरिया
  • सीपीयू यूटिलाइजेशन
  • थ्रोपुट
  • टर्नअराउण्ड टाइम
  • वेटिंग टाइम
  • रिस्पॉन्स टाइम
शिड्यूलिंग एल्गोरिदम
  • फर्स्ट-कम-फर्स्ट-सर्व्ड शिड्यूलिंग
  • शॉर्टकट-जॉब-फर्स्ट शिड्यूलिंग
  • राउण्ड-रॉबिन शिड्यूलिंग
  • प्रायोरेटी बेस्ड शिड्यूलिंग
  • मल्टीलेवल क्यू शिड्यूलिंग
डिस्क आपरेटिंग सिस्टम: हर छोटा-बड़ा कम्प्यूटर अपने आपरेटिंग सिस्टम के नियंत्रण में ही काम करता है। पीसी के लिए भी आपरेटिंग सिस्टम की जरूरत होती है। जो आपरेटिंग सिस्टम अपने काम में बार-बार डिस्क की मदद लेता है। उसे डिस्क आपरेटिंग सिस्टम या डॉस कहा जाता है । डॉस छोटे-बड़े हर तरह के कम्प्यूटर के लिए हो सकता है। आई.बी.एम. के पर्सनल कम्प्यूटरों के लिए माइक्रो सॉफ्ट नामक कम्पनी ने जो ऑपरेटिंग सिस्टम बनाया है उसे पर्सनल कम्प्यूटर-डिस्क ऑपरेटिंग सिस्टम या पीसी- डॉस कहा गया है। बाद में माइक्रो सॉफ्ट नामक कम्पनी ने सभई तरह के आईबीएम-पीसी कॉम्पैटीबल कम्प्यूटरों के लिए जो आपरेटिंग सिस्टम तैयार किया उसका नाम माइक्रो सॉफ्ट-डिस्क आपरेटिंग सिस्टम या एमएस-डॉस रखा। एमएस-डॉस के आदेश दो प्रकार के होते है
  • आन्तरिक आदेश: ये ऐसे आदेश है जो एमएस-डॉस की मुख्य फाइल Command.com में पहले से होते हैं क्योंकि ये सबसे महत्वपूर्ण हैं और बार-बार देने पड़ते हैं । ये आदेश कम्प्यूटर की मुख्य मेमोरी में हर समय उपलब्ध रहते हैं तथा इन्हें चलाने के लिए किसी और फाइल की आवश्यकता नहीं होती है इसलिए इन्हें आन्तरिक आदेश कहा जाता है। एमएस-डॉस संस्करण 6.0 के कुछ आन्तरिक आदेश हैं - BREAK, COPY, ERASE, LOADHIGH, RD, SHIFT, CALL CTTY, EXIT, MD, REM, TIME, CD, DATE, FOR, MKDIR, REN, TYPE, CHCP, DEL, GOTO, PATH, RENAME, VER, CHDIR, DIR, IF, PAUSE, RMDIR, VERIFY, CLS, ECHO, LH, PROMPT, SET, VOL इत्यादि. 
  • बाह्य आदेश: ये ऐसे आदेश हैं जे कम्प्यूटर की मुख्य मैमोरी में उपलब्ध नहीं रहते बल्कि अलग प्रोग्राम फाइलों के रूप में डिस्क पर रहते हैं। जैसे ही आप कोई बाह्य आदेश देते हैं, कमान्ड प्रोसेसर उसकी सम्बन्धित फाइल को डिस्क पर ढूंढता है और मिल जाने पर मैमोरी में लोड कर देता है। इसके साथ ही उस कमान्ड का पालन शुरू हो जाता है । इनको चलाने के लिए यह आवश्यक है कि इनका संस्करण वही होना चाहिए जो आपके एमएस-डॉस का है, नहीं तो ‘Incorrect Version’ अर्थात् ‘गलत संस्करण’ का संदेश आएगा और आदेश रद्द हो जाएगा। एमएस-डॉस के मुख्यबाह्य आदेश हैं - APPEND, DOSKEY, HELP, MOVE, SORT, ATTRIB, DOSSHELL, KEYB, MSAV, SYS, CHKDSK, EXPAND, LABEL, NLSFUNC, TREE, DELTREE, FASTOPEN, MEM, MSBACKUP, UNDELETE, DISKCOMP, FORMAT, MEMMAKER, PRINT, XCOPY, DISKCOPY, GRAPHICS, MORE, RESTORE इत्यादि.
AUTOEXEC.BAT: जब पीसी की बूटिंग की जाती है तो एमएस-डॉस रूट डायरेक्टरी में एक फाइल की खोज करता है। जिसका नाम है AUTOEXEC.BAT. यह एक बैच फाइल है, जिसमें कुछ ऐसे आदेश होते हैं, जिन्हें आप पीसी चालू करते ही उनका पालन कराना चाहते हैं।

DATABASE MANAGEMENT SYSTEM

डाटाबेस व्यवसाय, स्वास्थ्य,शिक्षा, सरकार और पुस्तकालय सहित सभी प्रकार के संगठनों में डाटा को स्टोर, मेनिप्यूलेट, तथा रिट्राइव करने के लिए प्रयुक्त होता है। नेटवर्क सर्वर्स द्वारा कई व्यक्ति वर्क - ग्रुप में डाटाबेस को इस्तमाल करते हैं तथा कर्मचारी संगठन में डिस्ट्रिब्यूटेड एप्लिकेशन द्वारा डाटाबेस को एक्सेस करते हैं। डाटाबेस संबंधित डाटा का संग्रह है। डाटा से आशय है अपूर्ण ज्ञात तथ्य व आंकडें जिन्हें रिकॉर्ड किया जा सकता है, और जो कुछ परिणाम दे सकते हैं।

डाटाबेस के गुण
  • एक डाटाबेस वास्तविक दुनिया के कुछ पहलू प्रस्तुत करता है।
  • एक डाटाबेस को कुछ खास उद्देश्य के लिए डिजाइन किया जाता है, बनाया जाता है और डाटा से युक्त किया जाता है। 
  • डाटाबेस डाटा का तर्कसंगत संग्रह है।
  • डाटाबेस किसी भी आकार का और अस्थिर रूप से जटिल हो करता है। सिस्टम के यूजर को फाईलों पर कई प्रकार के कार्य करने की सुविधा दी जाती है जैसे
    • डाटाबेस में नई फाईलें जोड़ना।
    • पहले से उपस्थित फाईलों में नया डाटा डालना।
    • मौजूद फाईलों से डाटा प्राप्त करना।
    • मौजूद फाईलों में डाटा को अपडेट करना। 
    • फाईलों से डाटा को डिलिट करना।
    • डाटाबेस से मौजूद फाईलों को हटाना।
फाईलों के प्रयोग के दौरान होने वाली कठिनाईयाँ
  • अनियंत्रित प्रतिलिपि बनाना
    • स्थान व्यर्थ करता है। 
    • सभी फाईलों को अपडेट करने में कठिनाई.
    • इनकंसिटेंट डाटा.
  • कठोरता
    • डाटा परिवर्तन में कठिनाई.
    • प्रोग्राम परिवर्तन में कठिनाई.
    • सीमित डाटा शेयरिंग.
    • अधिक प्रोग्राम नियंत्रण.
    • डाटा एक्सेस में कठिनाईयाँ.
    • सुरक्षा कठिनाई.
डाटाबेस के प्रमुख भाग: डाटाबेस मेनेजमेंट सिस्टम(डीबीएमएस) एक ऐसा साफ्टवेयर है जो डाटाबेस को परिभाषित करता है, डाटा को स्टोर करता है, क्वैरी भाषा को सपोर्ट करता है, रिपोर्ट बनाता है और डाटा इन्ट्री की स्क्रीन बनाता है। डाटाबेस मेनेजमेंट सिस्टम (डीबीएमएस) ऐसे प्रोग्राम्स का संग्रह है जो यूजर को डाटाबेस की रचना करने व उसका रख-रखाव करने की क्षमता प्रदान करतें हैं । इसलिए डीबीएमएस एक जनरल पर्पस साफ्टवेयर सिस्टम है जो विभिन्न एप्लिकेशन्स के लिए डाटाबेस को बनाने की, मेनिप्यूलेट करने की व परिभाषित करने की प्रक्रिया को सुगम बनाता है । डाटाबेस के अन्तर्गत चार प्रमुख भाग होते है:
  • डाटा: डाटाबेस सिस्टम्स उन मशीनों पर उपलब्ध हैं, जो या तो सिंगल यूजर सिस्टम्स हैं, या मल्टीयूजर्स सिस्टम्स हैं। सिंगल यूजर सिस्टम वह सिस्टम हैं जिसमें एक समय पर केवल एक यूजर ही सिस्टम को एक्सेस कर सकता है। मल्टीयूजर सिस्टम वह सिस्टम हैं जिसमें कई यूजर्स एक साथ एक ही समय पर डाटाबेस को एक्सेस कर सकते हैं। डाटा के दो प्रमुख गुण होने चाहिए - इन्टीग्रेटेड तथा शेयर्ड. इन्टीग्रेटेड से आशय है कि डाटाबेस कई फाईलों का यूनिफिकेशन है, जो कि अलग-अलग है, और कोई भी समानताऐं पूर्णतः या आंशिक रूप से मिटा दी जाती हैं। शेयरिंग का अर्थ है डाटा का व्यक्तिगत भाग जो विभिन्न यूजर्स द्वारा आपस में बाँटा जा सकता है, और इन यूजर्स में से प्रत्येक को उस भाग तक एक्सेस प्राप्त है, (या अलग-अलग) यूजर्स एक ही डाटा को अलग-अलग कार्य के लिए एक ही समय पर प्रयोग कर सकते हैं।
  • हार्डवेयर: हार्डवेयर सेकेण्डरी स्टोरेज वाल्यूम, मुविंग हेड, डिवाइस कंट्रोलर, इनपुट-आउटपुट चैनल्स और मेग्नेटिक डिस्क जो डाटा को एक साथ थामे रखने के उपयोग में आती है आदि से मिलकर बनती है। प्रोसेस और एसोसिएटेड मुख्य मेमोरी, जिनका प्रयोग डाटाबेस सिस्टम सॉफ्टवेयर के संपादन का सपोर्ट करने मेंहोता है।
  • साफ्टवेयर: फिजीकल डाटाबेस और उसके यूजर के मध्य की एक परत होती है, जिसे डीबीएमएस कहा जाता है। यूजर्स द्वारा डाटाबेस को एक्सेस करने हेतु , किये गये सभी आग्रहों को डीबीएमएस हैंडल करता है।
  • यूजर: यूजर्स तीन प्रकार के होते हैं:
    • डाटाबेस एडमिनिस्ट्रेटर: डीबीए डाटाबेस के उपयोग को अधिकृत करने के लिए, समन्वित करने के लिए और इसके उपयोग को मोनिटर करने के लिए जिम्मेदार होता है। तथा सॉफ्टवेयर एवं हार्डवेयर को प्राप्त करने के लिए भी जिम्मेदार है। डाटाबेस डिजाइनर वे व्यक्ति हैं जो डाटाबेस में स्टोर किये जाने वाले डाटा को पहचानने के लिए जिम्मेदार हैं। डाटाबेस एडमिनिस्ट्रेटर वह व्यक्ति या व्यक्तियों का समूह है, जो संगठन के डाटा संबंधी नीतिगत निर्णय लेता है, और इन निर्णयों को लागू करने हेतु आवश्यक तकनिकी समर्थन प्रदान करता है। इस प्रकार यह वह व्यक्ति है जिसका सिस्टम पर पूर्णतः नियंत्रण होता है। डीबीए के कुछ कार्य हैं आन्तरिक स्कीमा को परिभाषित करना, विचार संबंधी स्कीमा को परिभाषित करना, डाटा एक्सेस के लिए अधिकृति प्रदान करना, बैकअप और रिकवरी प्रक्रियाओं को परिभाषित करना, पर्फामेंस को मॉनिटर करना और आवश्यकताओं में बदलाव को रिसपॉण्ड करना तथा इन्टेग्रीटी के नियमों और सुरक्षा को डिफाइन करना।
    • एप्ळिकेशन प्रोग्रामर / सिस्टम एनेलिस्ट:  सिस्टम एनेलिस्ट अंतिम यूजर की आवश्यकताओं को तय करता है,और इन आवश्यकताओं की पूर्ति के लिए निर्धारणों को विकसित करता हैं। एप्ळिकेशन प्रोग्रामर्स ने हैं जो इन निर्धारणों को प्रोग्राम की तरह लागू करते हैं, और फिर वे इन ट्रांजेक्शन को टेस्ट, डिबग, डाक्यूमेंट और मेन्टेन करता हैं।
    • एन्ड यूजर: अंतिम यूजर्स वे हैं जो डाटाबेस का उपयोग क्वैरिंग, अपडेटिंग और रिपोर्ट जनरेटिंग के लिए करते हैं । अंतिम यूजर्स की कुछ श्रेणियाँ अनऔपचारिक अंतिम यूजर्स, अत्याधुनिक अंतिम यूजर्स तथा स्टैण्ड अलोन यूजर हैं.
डी बी एम एस के लाभ
  • रिडण्डेंसी नियंत्रण: इसका अर्थ है एक ही डाटा को बार -बार स्टोर करना। इससे कई समस्याऐं उत्पन्न होता हैं - ऐसी हर फाईल में सिंगल लॉजिकल अपडेट करने की आवश्यकता होती है जहाँ एक ही डाटा स्टोर होता है। इससे डाटा का डुप्लीकेशन होता है। जब एक ही डाटा कई बार स्टोर किया जाता है तो स्टोरेज स्पेस व्यर्थ होती है। वे फाईलें इन्कन्सीस्टेन्ट (परस्पर विरोधी) हो सकती हैं जो एक ही डाटा को रिप्रेसेन्ट करती हैं। ऐसा इसलिए क्योंकि एक अपडेट एक फाईल को सप्लाई की जा चुकी है, परन्तु अन्य को नहीं अर्थात् रिडण्डेंसी के कारण कुछ डाटा अपडेट किये गये होते हैं और कुछ नहीं। यही डाटा को इन्कन्सीस्टेन्ट बना देता है। इस समस्या को हल करने, व क्वैरिज की कार्यक्षमता को सुधारने के लिए, रिडण्डेंसी को नियंत्रित करना पड़ता है।
  • अनाधिकृत एक्सेस प्रतिबंधन: जब अनेक यूजर्स, एक डाटाबेस को आपस में बाँटते हैं, तब संभव है कि कुछ यूजर्स डाटाबेस पर उपलब्ध पूरी जानकारी को एक्सेस करने का अधिकार नहीं रखते हों। इसलिए, एक्सेस ऑपरेशन का प्रकार भी नियंत्रित होना चाहिए। डीबीएमएस को एक सुरक्षा और प्राधिकरण सबसिस्टम प्रदान करना चाहिए, जिसके प्रयोग डीबीए खाते बनाने और सीमाऐं निर्धारित करने के लिए करे। अधिकतर डाटाबेस एप्लीकेशन्स के कुछ इन्टेग्रीटी कन्सट्रेन्ट्स होते हैं- जो डाटा पर लागू होने चाहिए। एक डीबीएमएस को इन प्रतिबंधों को परिभाषित व लागू करने की क्षमताऐं प्रदान करना चाहिए। सबसे साधारण प्रकार के इन्टेग्रीटी कन्सट्रेन्ट्स के अन्तर्गत हर डाटा आईटम का डाटा टाइप निर्धारित करना आता है। इन्टेग्रीटी की समस्या, यह सुनिश्चित समस्या है - कि डाटाबेस में स्टोर किया गया डाटा सटीक है या नहीं। 
  • स्टैण्डर्डस लागू किये जा सकते हैं: डाटाबेस केन्द्रीय नियंत्रण के साथ, डीबीए यह सुनिश्चित कर सकता है कि डाटा के रिप्रेजेन्टेशन को स्टैण्डराइज करना, विभिन्न सिस्टम्स के मध्य डाटा के इन्टरचेंज में उपयोगी होता है। 
  • बैकअप और रिकवरी प्रदान करना: डीबीएमएस का बैकअप और रिकवरी सबसिस्टम, रिकवरी के लिए जिम्मेदार होता है। साथ ही रिकवरी सबसिस्टम यह भी सुनिश्चित करता है कि प्रोग्राम उसी बिन्दु से दोबारा प्रारंभ हो जहां पर वह रूका था ताकि इसका पूरा प्रभाव डाटाबेस पर रिकॉर्ड हो जाए। 
  • एप्लीकेशन डेवलपमेंट टाईम को कम करना: एक बार जब डाटाबेस तैयार हो जाता है, तब वह नये डाटाबेस की डिजाइनिंग और इम्प्लीमेंटिंग की अपेक्षा कम समय लेता है। 
  • सरलता (फ्लेक्सिब्लिटि): डीबीएमएस स्टोर किये जा चुके डाटा या उपस्थित एप्लीकेशन प्रोग्राम को प्रभावित किये बिना डाटा के स्ट्रक्चर में कुछ बदलावों की आज्ञा देता है। 
 डी बी एम एस की हानियाँ: डीबीएमएस के प्रयोग के अनेक लाभों के बावजूद, ऐसी कुछ परिस्थितियाँ हैं जिनमें यह सिस्टम कुछ अनावश्यक खर्चों को बढ़ा देता है जो परंपरागत सिस्टम में जरूरी नहीं होते। डीबीएमएस में अतिरिक्त लागत निम्न कारणों से है
  • हार्डवेयर, सॉफ्टवेयर और प्रशिक्षण में उच्च प्रारंभिक निवेश।
  • वह जनरेलिटि () जो डीबीएमएस डाटा को परिभाषित और प्रोसेस करने के लिए प्रदान करता है।
  • सुरक्षा, कॉन्करैन्सी कंट्रोल, रिकवरी और इन्टैग्रीटी कन्सट्रैन्ट्स प्रदान करने के लिए होने वाले व्यय।
  • कुछ प्रोग्राम्स के लिए कुछ वास्तविक समय की आवश्यकताऐं(रियल टाईम रिक्वायरमेंट्स) होती हैं, जो डीबीएमएस के अतिरिक्त व्ययों के चलते पूरी नहीं की जा सकतीं।
डाटा माडल: यह उन विचारों का संग्रह है जो डाटाबेस के स्ट्रक्चर के वर्णन करने में किये जा सकते हैं अर्थात् इसका उपयोग डाटा का वर्णन करने, डाटा के मध्य संबंधों का वर्णन करने इन्टरफेस, डाटा सिमेन्टिक्स और कन्सिस्टैन्सी कन्सट्रैन्ट्स का वर्णन करने के कार्य के लिए होता है। डाटा मॉडल तीन समूहों में विभाजित होता है: 
  • ऑब्जक्ट बेस्ड लॉजिकल मॉडल: इसका उपयोग विचार संबंधी व्यू स्तर पर डाटा का वर्णन करने के लिए किया जाता है। ये निम्न प्रकार के होते हैं:
    • इन्टीटी रिलेशनशिप मॉडल
    • ऑब्जक्ट ओरिइन्टेड मॉडल
    • बाइनरी मॉडल
    • सिमेन्टिक्स डाटा मॉडल
    • फंक्शनल डाटा मॉडल 
  • रिकॉर्ड बेस्ड लॉजिकल मॉडल: इसका प्रयोग भी विचार संबंधी (conceptual) व्यू स्तर पर डाटा का वर्णन करने हेतू होता है। यह स्थाई फार्मेट रिकॉर्ड टाइप में प्रयोग किया जाता है। प्रत्येक रिकॉर्ड टाइप में एट्रीब्यूट्स की संख्या या फिल्ड्स होती हैं और हर फिल्ड निश्चित लंबाई की होती है। इसमें तीन मॉडल होते हैं:
    • रिलेशनल मॉडल
    • नेटवर्क मॉडल
    • हाइरारिकल मॉडल 
  • फिजिकल डाटा मॉडल: इसका प्रयोग, आन्तरिक स्तर पर न्यूनतम स्तर पर डाटा का वर्णन करने हेतु किया जाता है।
    • इंटिटि: यह वास्तविक दुनिया की वस्तुओं को दर्शाती है। 
    • एट्रीब्यूट: यह उपभोक्ता का नाम, पता आदि जैसी इंटिटि का वर्णन करता है। 
    • इंटिटि सेट: यह एट्रीब्यूट्स और फिल्ड्स का संग्रह है।
    • रिलेशनलशीप: यह इंटिटिज के मध्य परस्पर संबंधों को दर्शाता है।
    • रिलेशनलशीप सेट: एक ही प्रकार की रिलेशनलशीप का समूह है। दो इंटिटि सेट के मध्य के संबंध को रिलेशनलशीप सेट कहते हैं।
डी बी एम एस की संरचना:  
  • आन्तरिक स्तर(Internal level): इस स्तर में, यह डाटाबेस के भौतिक संग्रहण संरचना का वर्णन करता है। वह डाटा संग्रहण की पूर्ण जानकारी का और डाटाबेस के लिए एक्सेस पाथ का वर्णन करता है। वह यह भी निर्धारित करता है कि कौन सी इन्डेक्सेस मौजूद हैं, स्टोर किए गए रिकॉर्ड किस क्रम में हैं आदि। 
  • बाहरी स्तर(External level): इस स्तर में, डाटा व्यक्तिगत यूजर द्वारा उपयोग में लाया जाता है। यह डाटाबेस के उस भाग का वर्णन करता है जो यूजर के लिए उपयोगी होती है। यह डाटाबेस की सूची को यूजर से छिपाता है। यह स्तर अलग -अलग यूजर के लिए अलग -अलग होता है। 
  • विचार संबंधी स्तर(Conceptual level): इस स्तर में, पूर्ण डाटाबेस की संरचना का वर्णन होता है। इसमें बाहरी स्तर से विचार संबंधी स्तर तक की मैपिंग होती है, और विचार संबंधी स्तर से आन्तरिक स्तर तक की मैपिंग होती है। यह स्तरों के मध्य जानकारी के रूपान्तरण की प्रक्रिया है।
  • विचार संबंधी - आंतरिक मैपिंग: यह, कॉन्सेप्चुअल व्यू को और स्टोर किए जा चुके डाटाबेस के मध्य अनुकूलता को परिभाषित करता है। यह ये निर्धारित करता है कि कॉन्सेप्चुअल रिकॉर्ड्स और फिल्ड्स आन्तरिक स्तर पर कैसे प्रदर्शित किए जा सकते हैं। अगर स्टोर किए जा चुके डाटाबेस की संरचना बदलती है या डाटाबेस में कोई परिवर्तन किया जाता है, तब इसके अनुसार ही कॉन्सेप्चुअल-आन्तरिक मैपिंग को भी परिवर्तित किया जाना चाहिए, ताकि कॉन्सेप्चुअल स्कीमा अनुकूल रहे। 
  • बाहरी-कॉन्सेप्चुअल मैपिंग: यह एक विशिष्ट बाहरी व्यू और कॉन्सेप्चुअल व्यू के मध्य परस्पर अनुकूलता को परिभाषित करता है। एक ही समय पर बाहरी व्यू की कोई भी संख्या मौजूद हो सकती है, किसी भी संख्या में यूजर्स दिए गए एक बाहरी व्यू को आपस में बाँट सकते हैं।
स्कीमॉस और इंटेन्सेस: डाटाबेस का वर्णन डाटाबेस स्कीमा कहलाता है, जो डाटाबेस डिजाइन के दौरान निर्धारित किया जाता है, और जिसके अधिक आवृति से बदलने की आशंका नहीं होती। डिस्प्ले किये गये स्कीमा को स्कीमा डिजाइन कहा जाता है। एक स्कीमा चित्र स्कीमा के केवल कुछ ही पहलुओं को दर्शाता है जैसे रिकॉर्ड टाइप्स के नाम, डाटा आइटम्स, और कन्सट्रैन्ट्स के कुछ प्रकार। डाटाबेस का वास्तविक डाटा अधिक आवृत्ति से बदलता है - क्योंकि हमें हर समय नये रिकॉर्ड की आवश्यकता होती है। डाटाबेस में एक विशिष्ट समय बिन्दु पर रखे डाटा को डाटाबेस में इन्सटेन्स कहा जाता है। इसे डाटाबेस स्टेट या स्नैपशॉट भी कहा जाता है। हर समय जब हम रिकॉर्ड को इन्सर्ट या डिलिट करते हैं या रिकॉर्ड में डाटा आईटम की वेल्यू को बदलते हैं तो डाटाबेस की एक स्टेट को दूसरी स्टेट में बदलते हैं, जिसे डाटाबेस स्टेट कहते हैं।

स्वतंत्रता (Independence): नॉन-डीबीएमएस सिस्टम पर लागू किए गए एप्लीकेशन्स डाटा आश्रित होते हैं अर्थात् वह तरीका जिससे सेकेण्डरी स्टोरेज पर संगठित किया जाता है, और उसे एक्सेस करने की तकनीक, दोनों ही बातें विचाराधीन एप्लीकेशन की आवश्यकताओं द्वारा वर्णित की जाती है। डाटा संगठन और वह एक्सेस तकनीक, एप्लीकेशन तर्क और कोड में बनाई जाती है। स्टोरेज स्ट्रक्चर या एक्सेस तकनीक को एप्लीकेशन को प्रभावित किए बिना परिवर्तित करना असंभव है। परन्तु डाटा स्वतंत्रता दो कारणों से महत्वपूर्ण है
  • अलग अलग एप्लीकेशन को एक ही डाटा के अलग अलग व्यू की आवश्यकता होगी, जिसके लिए संगठन डाटाबेस की रचना करता है।
  • डीबीए को बदलती आवश्यकताओं को ध्यान में रखतचे हुए स्टोरेज स्ट्रक्चर या एक्सेस तकनीक को परिवर्तित करने की स्वतंत्रता होनी चाहिए।
डाटा स्वतंत्रता के प्रकार 
  • तर्कसंगत डाटा स्वतंत्रता: तर्कसंगत डाटा स्वतंत्रता, बाहरी स्कीमा और एप्लीकेशन प्रोग्राम को परिवर्तित किए बिना ही, आन्तरिक स्कीमा को परिवर्तित करने की क्षमता - को कहते हैं। कॉन्सेप्चुअल स्कीमा को, रिकॉर्ड या डाटा आईटम को हटाने अथवा डाटाबेस का विस्तार करने के लिए, परिवर्तित किया जाता है-परन्तु एडीशन और डिलीशन बाहरी न्यू पर कोई प्रभाव नहीं डालता।  
  • भौतिक डाटा स्वतंत्रता: भौतिक डाटा स्वतंत्रता, कॉन्सेप्चुअल अथवा बाहरी स्कीमा में, कोई भी परिवर्तन किए बिना, आन्तरिक स्कीमा को परिवर्तित करने की क्षमता - को कहते हैं। आन्तरिक स्कीमा में परिवर्तन इसलिए आवश्यक होते हैं क्योंकि कुछ भौतिक फाईलों को पुनर्गठित किया जाना होता है। इसलिए, डाटा स्वतंत्रता में, जब स्कीमा किसी स्तर पर परिवर्तित की जाती है, तो अगले उच्च स्तर की स्कीमा अपरिवर्तित रहती है, केवल दो स्तरों के मध्य की मैपिंग परिवर्तित होती है। इसलिए उच्च स्तर स्कीमा को रिफर करने वाले एप्लीकेशन्स प्रोग्राम्स को परिवर्तित करने की आवश्यकता नहीं होती है। 
डाटाबेस की भाषाएँ
  • डाटा डेफिनेशन लेंग्वेज: इसका उपयोग डाटा स्ट्रक्चर, टेबल, व्यू और इन्डाइसिस को परिभाषित करने हेतु होता है। इसमें डाटा डिक्शनरी भी होती है। 
  • डाटा मेनिप्यूलेशन लेंग्वेज (डीएमएल): इसका प्रयोग डाटा के इन्सर्शन, डिलिशन, मॉडिफिकेशन के लिए, टेबल से जानकारी को रिट्राइव करने के लिए होता है। यह दो प्रकार की होती है
    • प्रोसिजरल डीएमएल: इसमें यूजर व्यक्तिगत रिकॉर्ड्स प्राप्त करता है या आब्जेक्ट्स को डाटाबेस से प्राप्त करता है और उसेअलग से प्रोसेस करता है। यूजर यह निर्धारित करता है कि उसे किस प्रकार का डाटा चाहिए और कैसे।
    • नॉन-प्रोसिजरल डीएमएल: इसमें यूजर यह निर्धारित करता है कि उसे किस प्रकार का डाटा चाहिए, पर यह निर्धारित नहीं कर सकता कि वह डाटा कैसे प्राप्त किया जाए। 
  • डाटा कंट्रोल लेंग्वेज: इसका उपयोग यूजर को डाटाबेस तक एक्सेस करने में नियंत्रित करने के लिए होता है। डाटाबेस को सभी सुरक्षाऐं डाटा कंट्रोल लिंग्वेज द्वारा प्रदान की जाती हैं।
डाटाबेस सिस्टम इन्वाइरोमेंट: डाटाबेस एक जटिल सॉफ्टवेयर सिस्टम है। डाटाबेस और डीबीएमएस केटलॉग सामान्यतः डिस्क पर स्टोर रहते हैं। डिस्क उस ऑपरेटिंग सिस्टम द्वारा नियंत्रित होता है जो इसके इनपुट और आउटपुट का नियंत्रण करता है। डीबीएमएस के मुख्य कम्पोनेंट्स
  • डीडीएल कंपायलर
  • रन टाईम डाटाबेस प्रोसेसर
  • क्वैरी कंपायलर
  • प्री-कंपायलर 
रिलाशनल माडल लेंग्वेजेस और सिस्टम्स: रिलेशनल डाटाबेस मैनेजमेण्ट सिस्टम(आरडीबीएमएस) एक सॉफ्टवेयर है जो कि रिलेशनल डाटाबेस को मैनेज करता है। रिलेशनल डाटाबेस, डाटाबेस का एक प्रकार है जो कि रिलेशनल मॉडल पर आधारित है। आरडीबीएमएस आर्किटेक्चर के दो मुख्य अंग हैं, कर्नल जो कि सॉफ्टनेयर है और डाटा डिक्शनरी जो कि सिस्टम लेवल डाटा स्ट्रक्चर से बनी है जिसे कर्नल डाटाबेस को मैनेज करने के लिए उपयोग करता है।

आरडीबीएमएस की विशेषताऐं 
  • रिलेशनल डाटा मैनेजमेण्ट मॉडल ने सभी पेरेन्ट-चाइल्ड रिलेशनशीप को मिटा दिया और इसके स्थान पर उसने डाटाबेस में सभी डाटा को डाटा वेल्यूस की साधारण रो-कॉलम सारणियों की तरह दर्शाया।
  • रिलेशन, डाटा वेल्यूस की रो-कॉलम सारणियों के समान है। सारणी की पंक्तियों को ट्यूपल्स कहा जाता है और कॉलम को एट्रीब्यूट्स कहा जाता है।
  • हर टेबल का अपना स्वतंत्र अस्तित्व होता है और इनमें कोई फिजिकल रिलेशनशिप नहीं होती है।
  • रिलेशनल मॉडल पर आधारित अधिकतर डाटा मैनेजमेण्ट सिस्टम्स में एसक्यूएल और क्यूबीई जैसी क्वैरी लैंग्वेजेस के लिए एक बिल्ट इन सपोर्ट होता है।
  • डाटा मैनेजमेण्ट रिलेशनल मॉडल, सैट थ्योरी पर आधारित है।
  • रिलेशनल मॉडल के साथ उपयोग में आने वाला यूजर इन्टरफेस नॉन-प्रोसिजरल है।
रिलेशनल डाटाबेस की संरचना: रिलेशनल मॉडल डाटाबेस को रिलेशन्स के संग्रह की तरह दर्शाता है। जब रिलेशन को टेबल की तरह देखा जाता है तो टेबल में प्रत्येक पंक्ति (row),संबंधित डाटा वेल्यूज के संग्रह को दर्शाती है। टेबल का नाम और कॉलम के नामों का प्रयोग हर पंक्ति के वेल्यूज के अर्थ को समझाने के लिए होता है। औपचारिक रिलेशन मॉडल शब्दों में, एक पंक्ति को ट्यूपल कहा जाता है, एक कॉलम को एट्रीब्यूट कहा जाता है और टेबल को रिलेशन कहा जाता है। एक कॉलम में आ सकने वाली वेल्यूस के प्रकार का वर्णन करने वाले डाटा टाईप को डोमेन कहा जाता है।

रिलेशनल डाटाबेस स्कीमा: एक रिलेशनल डाटाबेस, रिलेशन्स की संख्या से बना हुआ हो सकता है। डाटाबेस के स्ट्रक्चर का निरूपण कॉन्सेप्चुअल स्कीमा के उपयोग द्वारा किया जाता है जो डाटाबेस के पूर्ण लॉजिकल स्ट्रक्चर का वर्णन है। एक कॉन्सेप्चुअल स्कीमा को व्यक्त करने की सामान्य विधियाँ निम्न हैं
  • शॉर्ट टेक्स्ट स्टेटमेंट, जिनमें प्रत्येक रिलेशन का नाम होता है और इसके एट्रीब्यूट्स का नाम कोष्ठक में बाद में लिखा जाता है।
  • एक ग्राफिकल प्रस्तुति जिसमें प्रत्येक रिलेशन को एक आयत द्वारा दर्शाया जाता है, जिसमें रिलेशन के एट्रीब्यूट होते हैं।
रिलेशनल कन्स्ट्रैन्ट्स और की: एक रिलेशन में, एक डाटा की पंक्ति को, उस पंक्ति में स्टोर की जा चुकी डाटावेल्यूज के आधार पर रिट्राइव करने की क्षमता होनी चाहिए। टेबल में अंडरलाइन किया गया एट्रीब्यूट उस पंक्ति को अद्वितिय रूप से पहचानता है। ये एट्रीब्यूट की कहलाता है। एट्रीब्यूट का कोई समूह, जो रिलेशन में हर ट्यूपल को अद्वितिय रूप से पहचानता है, उसे सुपर की कहा जाता है। एक कंपोजिट की वह प्राइमरी की है जो एक से अधिक एट्रीब्यूट से बनी है। फॉरेन की डाटाबेस में वह रिलेशन है जो उसी डाटाबेस में अन्य रिलेशन की प्राइमरी की (key) की तरह काम करता है। फॉरेन की का प्रयोग दो सारणियों और रिलेशन्स के बीच संबंधों को दर्शाता है। कन्स्ट्रैन्ट्स वह नियम है, जो उन वेल्यूस को सीमित करता है जो डाटाबेस में उपस्थित हो सकती है। कॉड्स के रिलेशनल डाटा मॉडल में ऐसे कन्स्ट्रैन्ट्स शामिल हैं जो डाटाबेस में डाटा की मान्यता को जांचने के लिए उपयोग किये जाते हैं। कन्स्ट्रैन्ट्स तीन प्रकार के होते हैं-
  • एंटीटी इंटीग्रीटी
  • रिफ्रेन्शियल इंटीग्रीटी
  • फंक्शनल डिपेंडेंसी
रिलेशनल एलजेबरा: यह एक प्रोसिजरल क्वैरी लैंग्वेज है । यह ऑपरेशन्स के ऐसे समूह से मिलकर बनती है, जो एक या दो रिलेशन पर इनपुट की तरह कार्य करते हैं और परिणाम प्राप्त करने के लिए नए रिलेशन्स की रचना करते हैं । मूल ऑपरेशन्स निम्न हैं
  • सलेक्ट ऑपरेशन: इसे एक ऐसा ट्यूपल चुनने के लिए उपयोग में लाया जाता है, जो एक दी गई शर्त(कंडीशन) को पूरा करता हो । इसे सिग्मा नोटेशन से दर्शाया जाता है।  
  • प्रोजेक्ट ऑपरेशन: यह एक यूनरी ऑपरेटर है, प्रोजेक्ट ऑपरेशन टेबल में से कुछ कॉलम्स को सलेक्ट करता है और अन्य को छोड़ देता है। इसे पाई नोटेशन से दर्शाया जाता है। 
  • सेट ऑपरेशन: यह उस ट्यूपल को दोनों रिलेशन्स में ज्ञात करता है। इस यूनियन ऑपरेशन को सेट थ्योरी की तरह U से दर्शाया जाता है। सेट ऑपरेशन के प्रकार निम्न हैं-
    • यूनियन ऑपरेशन: इस स्थिति में कहा जा सकता है कि दोनों रिलेशन में ट्यूपल उपस्थित हैं। इसे U द्वारा दर्शाया जाता है।
    • सेट इन्टरसेक्शन ऑपरेशन: इसमें केवल वे ट्यूपल्स शामिल हैं जो दोनो रिलेशन्स में मौजूद (कॉमन) हैं। 
    • सेट डिफरेन्स ऑपरेशन: इस स्थिति में हम देखते हैं कि ट्यूपल एक रिलेशन में तो उपस्थित है परन्तु दूसरे में नहीं। इसे (-) से दर्शाया जाता है।
  • कार्टिसिअन प्रोडक्ट: यह ऑपरेशन हमें दो रिलेशन्स से मिली जानकारी को जोड़ने की अनुमति देता है। इसे X द्वारा दर्शाया जाता है। 
  • रिनेम ऑपरेशन: यह रिलेशन नेम या एट्रीब्यूट नेम को या फिर दोनों को रिनेम कर सकता है। 
  • नेचुरल ज्वाइन ऑपरेशन: यह एक बाइनरी ऑपरेशन है। यहाँ ये सलेक्शन और कार्टिसिअन प्रोडक्ट को एक ऑपरेशन में मिला देता है। इसे JOIN चिन्ह द्वारा दर्शाया जाता है।
टपल रिलेशनल कैल्कुलस: एक कैल्कुलस एक्सप्रेशन यह निर्धारित करता है कि क्या रिट्राइव किया जाना है, वह यह निर्धारित नहीं करता कि कैसे रिट्राइव करना है। रिलेशनल कैल्कुलस को एक नॉन-प्रोसिजरल लैंग्वेज माना जाता है। यह रिलेशनल एलजेब्रा से अलग होता है जहां हमें रिट्राइव रिक्वेस्ट निर्धारित करने के लिए ऑपरेशन का क्रम(सिक्वेंस) लिखना होता है, इस कारण इसे क्वैरी निर्दिष्ट करने के एक प्रोसिजरल तरीके की तरह माना जा सकता है।

डोमेन रिलेशनल कैल्कुलस: डोमेन रिलेशनल कैल्कुलस, टपल रिलेशनल कैल्कुलस से भिन्न है क्योंकि इसमें प्रयुक्त होने वाले वेरियबल के टाइप भिन्न-भिन्न होते हैं, यहाँ वेरियबल ट्यूपल पर रेन्ज नहीं करते अपितु वेरियबल एट्रीब्यूट के डोमेन से सिंगल विल्यू पर रेन्ज करते हैं। 

इंटीटी रिलेशनशिप माडल: इन्टीटी रिलेशनशिप मॉडल, वास्तविक दुनिया के बोध(पर्सेप्शन) पर आधारित है जो ऑब्जेक्ट्स के समूह से बनता है।इन्टीटी रिलेशनशिप मॉडल (ई-आर) के मूल घटक (कम्पोनेन्ट्स) हैं-
  • इन्टीटी: यह एक स्थान कॉन्सेप्ट, घटना, व्यक्ति, वस्तु को प्रदर्शित करता है। इन्टीटी के प्रकार निम्न हैं
    • स्ट्रॉग इन्टीटी सेट: वह इन्टीटी सेट जिसमें प्राइमरी की होती है, उसे स्ट्रॉग इन्टीटी सेट कहते हैं। यह एक स्वतंत्र इन्टीटी सेट है।
    • वीक इन्टीटी सेट: वह इन्टीटी सेट जिसमें प्राइमरी की नहीं होती है, उसे वीक इन्टीटी सेट कहते हैं। यह एक डिपेन्डेन्ट इन्टीटी सेट है।
    • एसोसिएटिव इन्टीटी: एसोसिएटिव इन्टीटी वह इन्टीटी टाइप है जो एक या कई इन्टीटी टाइप्स के इन्सटेंसेस को जोड़ती है और इसमें वे एट्रीब्यूटभी होते हैं जो उन इन्टीटी इन्सटेंसेस के बीच रिलेशन्स के लिए विशिष्ट होते हैं। 
  • एट्रीब्यूट: हर इन्टीटी टाइप के साथ एक एट्रीब्यूट्स का सेट जुड़ा होता है। एक एट्रीब्यूट इन्टीटी टाइप की कोई विशेषता या गुण होता है जो ऑर्गेनाइजेशन के लिए महत्वपूर्ण होता है। एट्रीब्यूट के प्रकार निम्न हैं
    • सिन्गल वैल्यूड एट्रीब्यूट: सिन्गल वैल्यूड एट्रीब्यूट वह एट्रीब्यूट है जो कि एक इन्टीटी इन्सटेंस के लिए एक ही वैल्यू ग्रहण कर सकता है।
    • मल्टीवैल्यूड एट्रीब्यूट: मल्टीवैल्यूड एट्रीब्यूट वह एट्रीब्यूट है जो कि एक इन्टीटी इन्सटेंस के लिए एक से अधिक वैल्यूस ग्रहण कर सकता है।
    • स्टोर्ड एट्रीब्यूट: स्टोर्ड एट्रीब्यूट वह एट्रीब्यूट है जो डाटाबेस में स्टोर्ड होते हैं।
    • डिराइव्ड एट्रीब्यूट: डिराइव्ड एट्रीब्यूट वह एट्रीब्यूट है जिसकी वैल्यू संबंधित एट्रीब्यूट वैल्यूस द्वारा ज्ञात की जा सकती है। 
  • रिलेशनशिप: रिलेशनशिप वे तत्व हैं जो एक ई-आर मॉडल के विभिन्न कम्पोनेन्ट्स को एक-दूसरे से जोड़े रहते हैं। रिलेशनशिप एक या अधिक इन्टीटी टाईप्स के इन्सटेंसेस के मध्य वह संबंध है जो ऑर्गेनाइजेशन के लिए महत्व रखता है।रिलेशनशिप इन्टीटी टाईप्स के मध्य सार्थक संबंध है। 
रिलेशनशिप की डिग्री: रिलेशनशिप की डिग्री, उस रिलेशनशीप में सम्मिलित इन्टीटी टाइप्स की संख्या है। ई-आर मॉडल में तीन सर्वाधिक सामान्य रिलेशनशिप्स हैं
  • यूनरी रिलेशनशिप: यूनरी रिलेशनशिप, सिंगल इन्टीटी टाइप के इन्सटेंसेस के मध्य रिलेशनशिप है।
  • बाइनरी रिलेशनशिप: दो इन्टीटी टाइप के इन्सटेंसेस के मध्य बाइनरी रिलेशनशिप, डाटा कॉडलिंग में उपयोग होने वाली सर्वाधिक सामान्य रिलेशनशिप है।
  • टर्नरी रिलेशनशिप: टर्नरी रिलेशनशिप एक ही समय पर तीन इन्टीटी टाइप के इन्सटेंसेस के मध्य रिलेशनशिप है।
एट्रीब्यूट इन्हेरिटेन्स: एट्रीब्यूट इन्हेरिटेन्स वह गुण है जिसके द्वारा सबटाइप इन्टीटीज़, सुपरटाइप के सभी एट्रीब्यूट्स की वैल्यू को इन्हेरिट करती है। यह महत्वपूर्ण गुण सुपरटाइप एट्रीब्यूट्स को सबटाइप्स में रिडण्डेटली शामिल करने को आवश्यक बना देता है। दो प्रक्रियाऐं जो सबटाइप-सुपरटाइप रिलेशनशिप के लिए एक मेन्टल मॉडल की तरह कार्य करती हैं, वे हैं:
  • जनरलाइजेशन: इसमें हायर-लेवल इन्टीटी सेट और एक या अधिक लोअर लेवल इन्टीटी सेट के मध्य की रिलेशनशिप होती है। जनरलाइजेशन अधिक स्पेशियलाइज्ड इन्टीटी टाइप्स के सेट से एक अधिक जनरल इन्टीटी टाइप डिफाइन करने की प्रक्रिया है। इस प्रकार जनरलाइजेशन एक बॉटम-अप प्रक्रिया है। 
  • स्पेशियलाइजेशन: यह एक टॉप-डाउन प्रक्रिया है। जनरलाइजेशन के विपरित, स्पेशियलाइजेशन सुपरटाइप के एक या अधिक सबटाइप्स को परिभाषित करने और सुपरटाइप-सबटाइप रिलेशनशिप की रचना करने की प्रक्रिया है।
एग्रीगेशन: ई-आर मॉडल की एक कमी यह भी है कि रिलेशनशिप्स के मध्य रिलेशनशिप व्यक्त करना संभव नहीं है। इस समस्या का समाधान करने का सर्वोच्च तरीका है एग्रीगेशन। एग्रीगेशन एक सब्सट्रेक्शन है जिसके द्वारा रिलेशनशिप्स को हायर लेवल इन्टीटीज़ की तरह समझा जाता है।

स्ट्रक्चर्ड क्वैरी लैंग्वेज: स्ट्रक्चर्ड क्वैरी लैंग्वेज (एसक्यूएल) एक हाई लेवल लैंग्वेज है जो रिलेशनल डाटाबेस में डाटा के परिभाषण, नियंत्रण और मेनिप्यूलेशन का समर्थन करती है। यह लैंग्वेज प्रोग्रामर को यह निर्धारित करने में सहायक होती है कि किस डाटा की आवश्यकता है परन्तु यह निर्धारित नहीं किया जाता कि यह कार्य कैसे सम्पन्न होगा। एसक्यूएल रिलेशनल डाटाबेस मैनेजमेंट सिस्टम पर आधारित है।
एसक्यूएल के लाभ
  • एसक्यूएल एक हाई लेवल लैंग्वेज़ है जो प्रोसिजरल लैंग्वेज़ से अधिक मात्रा में एब्सट्रेक्शन प्रदान करती है।
  • एसक्यूएल सिस्टम पर्सनेल और यूज़र को कई डाटाबेस सिस्टम के साथ कार्य करने में सक्षम बनाती है।
  • एसक्यूएल में लिखा एप्लिकेशन आसानी से इधर-उधर ले जाने योग्य होता है अर्थात् इन्हें ऐरे प्लेटफार्म पर उपयोग में लाया जा सकता है। 
  • एसक्यूएल साधारण और सीखने में सरल है परन्तु जटिल परिस्थितियों में कार्य कर सकती है।
  • एसक्यूएल ना केवल एक क्वैरी लैंग्वेज है परन्तु उपयोग डाटा स्ट्रक्चर को डिफाइन करने में,डाटा तक एक्सेस को नियंत्रित करने और डाटा के ऑकरेन्सेस को डिलिट,इन्तर्ट और मॉडिफाय करने में भी होता है।
एसक्यूएल लैंग्वेज के भाग
  • डाटा डेफिनिशन लैंग्वेज
  • इन्टरेक्टिव डाटा मेनिप्यूलेशन लैंग्वेज
  • इम्बडेड डाटा मेनिप्यूलेशन लैंग्वेज
  • व्यू परिभाषा
  • ट्रांज़ेक्शन कंट्रोल 
  • ऑथराइजेशन
  • इन्टीग्रीटी
करंसी और रिकवरी तकनीकें: ट्रान्जेक्शन प्रोग्राम क्रियान्वयन की एक यूनिट है, जो विभिन्न डाटा आइटम को प्राप्त करता है और उसमें संभावित परिवर्तन करता है। ट्रान्जेक्शन सामान्यतः यूजर प्रोग्राम के क्रियान्वयन का परिणाम है। ट्रान्जेक्शन में सभी ऑपरेशन शामिल रहते हैं, बिगन और एन्ड के बीच सम्पन्न किये गये सभी ऑपरेशन से मिलकर ट्रान्सेक्शन बनता है। डाटाबेस एक्सेस के लिए मुख्य ऑपरेशन, जो कि ट्रान्जेक्शन में शामिल हो करते हैं, वे हैं रीड तथा राइट. 
संयुक्त नियंत्रण और पुनः प्राप्त विधियाँ (Concurrency Control and Recovery Mechanisms): मुख्य रूप से डाटाबेस एक्सेस कमाण्ड से संबंध रखते हैं। और यह समान डाटाबेस आइटम को एक्सेस एवं अपडेट कर सकता है। यदि यह कॉन्करेन्ट एक्सिक्यूशन अनियंत्रित हो जाता है तब यह समस्या उत्पन्न कर सकता है। जैसे अव्यवस्थित डाटाबेस। ट्रान्जेक्शन के कई प्रकार के गुण होते हैं। ये एसिड गुण या एसिड प्रापर्टी कहलाते हैं। इस प्रापर्टी को डाटाबेस मैनेजमेंट सिस्टम के कॉन्करेन्सी नियंत्रण और रिकवरी तकनीकों के द्वारा उपयोग किया जाना चाहिए। एसिड (ACID) प्रापर्टी निम्नलिखित हैं-
  • एटॉमिसिटी: ट्रान्जेक्शन प्रोसेसिंग की एक एटॉमिक इकाई है। यह या तो ट्रान्जेक्शन को पीर्ण रूप से परफार्म करता है या अंततः कुछ भी नहीं परफार्म करता है। इस समस्या के निवारण के लिए एटॉमिसिटी की आवश्यकता होती है। एटॉमिसिटी के पीछे मुख्य सिद्धांत यह है कि डाटाबेस सिस्टम किसी भी पुरानी वेल्यू का ट्रेक या पता रखता है, जिस पर ट्रान्जेक्शन राइट () ऑपरेशन परफार्म करता है, और यदि ट्रान्जेक्शन इसके क्रियान्वयन को पूर्ण नहीं करता है, तब पुरानी वेल्यू पुनः स्टोर हो जाती है, और यह दर्शाता है कि ट्रान्जेक्शन कभी भी क्रियान्वित नहीं हुआ है। यदि डाटाबेस सिस्टम ट्रान्जेक्शन को स्वतः क्रियानवित करता है, तब एटॉमिसिटी को निर्धारित करना डाटाबेस का दायित्व रहता है। खास करके यह एक कम्पोनेन्ट (घटक) के द्वारा हेण्डल किया जाता है, जिसे ट्रान्जेक्शन मैनेजमेंट कम्पोनेण्ट कहते हैं। 
  • अनुकूलता या स्थिरता को संरक्षित करना (Consistency Preservation): कोई ट्रान्जेक्शन अनुकूलता को संरक्षित करता है यदि इसका पूर्ण execution डाटाबेस को एक योग्य अवस्था से दूसरी योग्य अवस्था में ले जाता है। 
  • आइसोलेशन: क्रियान्वित (Execute) किया जा रहा ट्रान्सेक्शन, दूसरे ट्रान्जेक्शन से पृथक रूप से उपस्थित रहना चाहिए, या अलग दर्शाया जाना चाहिए। 
  • स्थिरता (Durability): समर्पित किये गये ट्रान्जेक्शन के द्वारा डाटाबेस पर लागू किये गये परिवर्तन, डाटाबेस में अस्तित्व में होने चाहिए। किसी भी फेल्यूअर के कारण ये परिवर्तन नष्ट नहीं होना चाहिए। स्थिरता को हम ग्यारंटी के साथ इस प्रकार कह सकते हैं कि यह तब पूर्ण होती है, जब ट्रान्जेक्शन के द्वारा ले जाये गये अपडेट्स ट्रान्जेक्शन के पूर्ण होने के पहले ही डिस्क पर लिखे जा चुके हैं। -ट्रान्जेक्शन के द्वारा अपडेट के बारे में ले जायी गयी सूचना डिस्क पर लिखी गयी हो तथा यह पर्याप्त हो अर्थात् सिस्टम फेल्यूअर के बाद डाटबेस के द्वारा अपडेट्स को फिर से बनाया जा सके।
संयुक्त रूप से नियंत्रित करना (करंसी कंट्रोल): इस तकनीक का उपयोग, ट्रान्जेक्शन को साथ-साथ रन करने के लिए किया जाता है, यह तकनीक डाटा आइटम को लॉक करने के सिद्धान्त परआधारित है। लॉक एक अवयव (Variable) है,जो डाटा आइटम के साथ जुड़ा रहता है एवं यह संभव ऑपरेशन के सापेक्ष आइटम की स्थिति को दर्शाता है। आइटम के सापेक्ष सभी संभव ऑपरेशन अर्थात् वह ऑपरेशन जो डाटा आइटम पर लागू किये जा सकते हैं। सामान्यतः डाटाबेस में प्रत्येक डाटा आइटम के लिए एक-एक लॉक रहता है। लॉक का प्रयोग डाटाबेस आइटम को ट्रान्जेक्शन द्वारा एक साथ एक ही समय में एक्सेस करने के लिए किया जाता है।

डेडलॉक: डेडलॉक तब घटित होता है जब प्रत्येक ट्रान्जेक्शन दो या अधिक ट्रान्जेक्शन के सेट में ऐसे किसी आइटम की प्रतीक्षा कर रहा है जो सेट में किसी अन्य ट्रान्जेक्शन द्वारा लॉक कर दिया गया है। एक सिस्टम तब डेडलॉक अवस्था में होता है जब एक ऐसा ट्रान्जेक्शन का सेट उपस्थित है जिसके सेट में हर ट्रान्जेक्शन अन्य किसी ट्रान्जेक्शन की प्रतीक्षा कर रहा है। इसलिए सेट में हर ट्रान्जेक्शन प्रतीक्षा कर रहा है कि कोई एक ट्रान्जेक्शन एक आइटम पर लॉक रिलिज़ कर देगा। डेडलॉक समस्या का समाधान करने की दो मुख्य विधियाँ हैं।यह निश्चित करने के लिए कि सिस्टम कभी भी डेडलॉक अवस्था में नहीं पहुँचेगा। इसके अलावा हम सिस्टम को डेडलॉक में जाने की अनुमति दे सकते हैं और इससे उभरने के लिए डेडलॉक डिटेक्शन और डेडलॉक रिकवरी स्कीम का उपयोग कर सकते हैं।

कॉन्करेन्सी नियंत्रण के लिए टाइमस्टम्प ऑडरिंग: टाइमस्टम्प एक ऐसा अनोखा आइडेंटिफायर है, जो कि डीबीएमएस के द्वारा ट्रान्जेक्शन को पहचानने के लिए बना है। आदर्श रूप से टाइमस्टम्प वेल्यूस उसी क्रम में असाइन की जाती हैं, जिस क्रम में ट्रान्जेक्शन को सिस्टम में जमा किया जाता है। इसलिए टाइमस्टम्प को ट्रान्जेक्शन स्टार्ट टाइम की तरह माना जा सकता है।

मल्टीपल ग्रेन्यूलैरिटी: कॉन्करेन्सी नियंत्रण तकनीकें यह मानती हैं कि डाटाबेस कई नेम्ड डाटा आइटम्स से बना है। एक डाटा आइटम निम्न में से कोई एक होने के लिए चुना जा सकता है-
  • एक डाटाबेस रिकॉर्ड
  • एक डाटाबेस रिकॉर्ड की एक फिल्ड वेल्यू
  • एक डिस्क ब्लॉक
  • एक पूरी फाईल
  • एक पूरा डाटाबेस
ग्रेन्यूलैरिटी कॉन्करेन्सी नियंत्रण और रिकवरी की कार्यक्षमता को प्रभावित कर सकता है। डाटा आइटम की साइज़ को डाटा आइटम की ग्रेन्यूलैरिटी भी कहा जा सकता है। फाइन आइटम ग्रेन्यूलैरिटी छोटे आइटम साइज़ को दर्शाती है, जबकि कोर्स आइटम ग्रेन्यूलैरिटी विशाल आइटम साइज़ को दर्शाती है।

रिकवरी सिस्टम: सामान्यतः ट्रान्जेक्शन फेलियर से रिकवरी का अर्थ है कि डाटाबेस के फेलियर के समय के पूर्व की सबसे रिसेन्ट, कन्सिस्टेंट स्टेट में रिस्टोर कर दिया गया है। ऐसा करने के लिए सिस्टम को विभिन्न ट्रान्जेक्शन द्वारा डाटा आइटम पर किये गये सभी बदलावों की जानकारी रखनी होती है। इस जानकारी को सिस्टम लॉग में रखा जाता है। कई बार ये फेलियर्स सिस्टम में घटित हो सकते हैं इन सभी का अलग-अलग तरह से सामना करना होता है। निम्न प्रकार के फेलियर्स हैं-
  • ट्रान्जेक्शन फेलियर
  • लॉजिकल फेलियर
  • सिस्टम एरर
  • सिस्टम क्रैश
  • डिस्क फेलियर
ट्रान्जेक्शन रोलबैक: अगर डाटाबेस को अपडेट करने के बाद किसी भी कारण से ट्रान्जेक्शन फेल हो जाता है तो इसे रोलबैक करना आवश्यक हो सकता है, अगर कोई डाटा आइटम वेल्यू, इसके द्वारा बदली गयी है या डाटाबेस में लिखी गयी हैं तो उन्हें उनकी पिछली वेल्यू पर रिस्टोर करना चाहिए। उन आइटम्स की पुरानी वेल्यूस को रिस्टोर करने के लिए अनडू -टाइप लॉग एन्ट्री का प्रयोग होता है, जिन्हें रोलबैक करना चाहिए।

शैडो पेजिंग: सिंगल यूज़र वातावरण में रिकवरी को लॉग के उपयोग की आवश्यकता नहीं होती है। मल्टीयूज़र वातावरण में कॉन्करेन्सी नियंत्रण विधि के लिए लॉग की आवश्यकता हो सकती है। शैडो पेजिंग डाटाबेस को कई निश्चित आकार के डिस्क पेजेस या डिस्क ब्लॉक से निर्मित मानता है। डायरेक्टरी यदि बहुत बड़ी न हो तो उसे मुख्य मैमोरी में रखा जात है और डिस्क पर डाटाबेस पेजेस को सभी रिफरेन्सेस - रीड या राइट के द्वारा ही जाते हैं। जब ट्रान्जेक्शन का एक्सिक्यूशन आरंभ होता है तब करंट डायरेक्टरी, जिसकी प्रविष्टियाँ डिस्क पर सबसे नवीनतम डाटाबेस पेजेस को पाइंट करती है, को एक शैडो डायरेक्टरी में कॉपी कर लिया जाता है। इसके बाद शैडो डायरेक्टरी को डिस्क पर सेव कर लिया जाता है जबकि करंट डायरेक्टरी ट्रान्जेक्शन द्वारा प्रयोग में लाई जाती है।

डिस्ट्रिब्यूटेड डाटाबेस: डिस्ट्रिब्यूटेड डाटाबेस एक सिंगल लॉजिकल डाटबेस है, जो कि डाटा क्मयूनिकेशन लिंक द्वारा कनेक्टेड मल्टीपल लोकेशन्स में कम्प्यूटर्स में एक छोर से दूसरे छोर तक फैला हुआ है। एक डिस्ट्रिब्यूटेड डाटाबेस में प्रत्येक रिमोट साइट पर मल्टीपल डाटाबेस मैनेजमेण्ट सिस्टम को रन करने की आवश्यकता होती है। डिस्ट्रिब्यूटेड डाटाबेस के कई डाटाबेस एन्वायरमेण्ट हैं जैसे होमोजिनियस तथा हेट्रोजिनियस.
डिस्ट्रिब्यूटेड डाटाबेस के लक्ष्य
  • लोकेशन ट्रान्सपेरेन्सी
  • लोकल आटोनॉमी
डिस्ट्रिब्यूटेड डाटाबेस के लाभ 
  • अधिक विश्वसनियता और उपलब्धता
  • लोकल कण्ट्रोल 
  • मॉड्यूल ग्रोथ
  • लोअर कम्यूनिकेशन कॉस्ट
  • फास्टर रिस्पॉन्स
डिस्ट्रिब्यूटेड डाटाबेस के दोष
  • सॉफ्टवेयर कॉस्ट और जटिलताएँ
  • प्रोसेसिंग ओवरहेड
  • डाटा इन्टीग्रीटी
डिस्ट्रिब्यूटेड डाटाबेस के लिए स्ट्रैटजिस 
  • डाटा रिप्लीकेशन: डाटा रिप्लीकेशन का अर्थ है हर दो या अधिक साइट्स पर डाटाबेस की अलग प्रति स्टोर करना।
  • हॉरिजोण्टल पार्टिशनिंग: हॉरिजोण्टल पार्टिशनिंग के साथ टेबल की कुछ रो को एक साइट पर बेस रिलेशन में रखा जाता है और अन्य रो को एक अन्य साइट में बेस रिलेशन में रखा जाता है।
  • वर्टिकल पार्टिशनिंग: वर्टिकल पार्टिशनिंग के साथ टेबल के कुछ कॉलम्स को एक साइट पर बेस रिलेशन में प्रोजेक्ट कर दिया जाता है और अन्य कॉलम्स को एक अन्य साइट में बेस रिलेशन में प्रोजेक्ट कर दिया जाता है। हर साइट में रिलेशन का एक कॉमन डोमेन होना चाहिए, ताकि मूल टेबल को रिकन्सट्रक्ट किया जा सके।
डिस्ट्रिब्यूटेड डाटाबेस मैनेजमेंट सिस्टम: एक डिस्ट्रिब्यूटेड डाटाबेस के लिए एक डाटाबेस मैनेजमेंट सिस्टम होना चाहिए, जो विभिन्न नोड्स पर डाटा के एक्सेस को को-ऑर्डिनेट कर सके। ऐसे सिस्टम को डिस्ट्रिब्यूटेड डाटाबेस मैनेजमेंट सिस्टम (डीडीबीएमएस) कहा जाता है। एक डिस्ट्रिब्यूटेड डाटाबेस मैनेजमेंट सिस्टम निम्नलिखित कार्य करता है-
  • डिस्ट्रिब्यूटेड डाटा डायरेक्टरी में डाटा कहाँ लोकेट किया गया है, इसकी खबर रखना।
  • यह निशचित करना कि किस लोकेशन से रिक्वेस्टेट डाटा को रिट्रीव करना हैऔर डिस्ट्रिब्यूटेड क्वैरी के हर भाग को किस लोकेशन पर प्रोसेस करना है।
  • सिक्योरिटी, कॉन्करेंसी और डेडलॉक क्वैरी ऑप्टीमाइजेशन और फेलियर रिकवरी जैसे डाटा मेनेजमेंट फंक्शन्स प्रदान करना। 
  • रिमोट साइट्स के बीच डाटा की प्रतियों के बीच स्थिरता प्रदान करना।
डिस्ट्रिब्यूटेड डाटाबेस मैनेजमेंट सिस्टम के कार्य 
  • लोकेशन ट्रान्सपेरेन्सी
  • रिप्लीकेशन ट्रान्सपेरेन्सी 
  • फेलियर ट्रान्सपेरेन्सी
  • कॉन्करेंसी ट्रान्सपेरेन्सी 
फ़ाइल ओर्गेनाइजेशन: एक फाईल को तर्कसंगत तरीके से रिकॉर्ड्स के एक क्रम की तरह संगठित किया जाता है। इन रिकॉर्ड्स को डिस्क ब्लॉक्स में स्टोर किया जाता है। एक फाईल में डाटाबेस स्टोर करने के कई तरीकें हैं। एक तकनीक है- अनेक फाईलों का उपयोग करना और इनमें से दी गयी किसी एक फाईल में केवल एक ही लम्बाई के रिसॉर्ड्स को स्टोर करना। अन्य तकनीक है- एक फाईल को इस प्रकार स्ट्रक्चर करना कि हम मल्टीपल लेन्थ रिकॉर्ड स्टोर कर सकें।

फाईल में रिकॉर्ड्स का संगठन: हम रिकॉर्ड्स को फाईल में कई तरह से ऑर्गेनाइज़ कर सकते हैं-
  • हीप फाईल ऑर्गेनाइजेशन: इस ऑर्गेनाइजेशन के अन्तर्गत कोई भी रिकॉर्ड फाईल में कहीं भी, जहाँ जगह हो, वहाँ रखा जा सकता है। यहाँ अभिलेखों का कोई क्रम नहीं होता, हर रिलेशन के लिए सिंगल फाईल होती है। 
  • सिक्वेन्शियल फाईल ऑर्गेनाइजेशन: इस फाईल ऑर्गेनाइजेशन में रिकॉर्ड्स को सिक्वेन्शियल क्रम में स्टोर किया जाता है, यह हर रिकॉर्ड की सर्च की वेल्यू पर आधारित होता है।
  • हैशिंग फाईल ऑर्गेनाइजेशन: इस फाईल ऑर्गेनाइजेशन में हर रिकॉर्ड के कुछ एट्रीब्यूट पर, एक हैश फंक्शन कम्प्यूट किया जाता है। इस हैश फंक्शन का परिणाम ब्लॉक में वह ब्लॉक निर्धारित करता है, जहाँ रिकॉर्ड फाईल रखा जाना है।
  • क्लस्टरिंग फाईल ऑर्गेनाइजेशन: इस फाईल ऑर्गेनाइजेशन में अनेक अलग-अलग रिलेशन्स के रिकॉर्ड्स एक ही फाईल पर स्टोर किये जा सकते हैं।
डाटा डिक्शनरी स्टोरेज: एक रिलेश्नल डाटाबेस सिस्टम को ऐसे रिलेशन्स के बारे में डाटा मेण्टेन करना होता है- जैसे रिलेशन्स का स्कीमा, इस जानकारी को डाटा डिक्शनरी कहते हैं। सिस्टम में स्टोर जानकारी निम्न हैं-
  • रिलेशन्स के नाम
  • प्रत्येक रिलेशन के एट्रीब्यूट के नाम
  • एट्रीब्यूट्स की डोमेन और लंबाई़
  • डाटाबेस पर डिफाइण्ड व्यूस के नाम और इन व्यूस की परिभाषाएं
  • इणटीग्रीटी कन्सट्रेण्ट्स
इण्डैक्सिंग और हैशिंग: सिस्टम में एक फाईल के लिए इम्डेक्स ठीक उसी तरह कार्य करता है, जैसे लाइब्रेरी में किसी बुक के लिए केटलॉग। मूलतः दो प्रकार की इण्डैक्सिंग होती है-
  • ऑडर्ड इन्डिसिस: ऐसी इन्डिसिस, वेल्यू की सॉर्टेड ऑडरिंग पर आधारित होती है।
  • हैश इन्डिसिस: ऐसी इन्डिसिस बकेट के चारों ओर यूनिफॉर्मली फैलाई जा रही वेल्यूस पर आधारित होती है।
बी-ट्री इण्डेक्स फाईल: बी-ट्री का सबसे अधिक उपयोग ऐसे स्ट्रक्चर के लिए होता है, जो इन्सर्शन और डिलिशन के बावजूद अपनी कार्यकुशलता बनाए रखते हैं। एक बी-ट्री, एक बेलेन्स्ड ट्री का रूप ले लेती है, जिसमें ट्री की रूट से उसकी लीफ तक हर रास्ते की लंबाई समान होती है।

C++ प्रोग्रामिंग क्या है

प्रोग्रामिंग क्या है: सामान्य जीवन में हम किसी कार्य विशेष को करने का निश्चय करते हैं तो उस कार्य को करने से पूर्व उसकी रूपरेखा सुनिश्चित की जाती है। कार्य से सम्बन्धित समस्त आवश्यक शर्तों का अनुपालन उचित प्रकार हो एवं कार्य में आने वाली बाधाओं पर विचार कर उनको दूर करने की प्रक्रिया भी रूप रेखा तैयार करते समय महत्वपूर्ण विचारणीय विषय होते हैं। कार्य के प्रारम्भ होने से कार्य के सम्पन्न होने तक के एक-एक चरण (step) पर पुनर्विचार करके रूपरेखा को अन्तिम रूप देकर उस कार्य विशेष को सम्पन्न किया जाता है। इसी प्रकार कम्प्यूटर द्वारा, उसकी क्षमता के अनुसार, वांछित कार्य कराये जा सकते हैं। इसके लिए आवश्यकता है कम्प्यूटर को एक निश्चित तकनीक व क्रम में निर्देश दिए जाने की, ताकि कम्प्यूटर द्वारा इन निर्देशों का अनुपालन कराकर वांछित कार्य को सम्पन्न किया जा सके। सामान्य बोल-चाल की भाषा में इसे प्रोग्रामिंग कहा जाता है।

कम्प्यूटर को निर्देश किस प्रकार दें: कम्प्यूटर को निर्देश योजनाबद्ध रूप में, अत्यन्त स्पष्ट भाषा में एवं विस्तार से देना अत्यन्त आवश्यक होता है। कम्प्यूटर को कार्य विशेष करने के लिए एक प्रोग्राम बनाकर देना होता है। दिया गया प्रोग्राम जितना स्पष्ट, विस्तृत और सटीक होगा, कम्प्यूटर उतने ही सुचारू रूप से कार्य करेगा, उतनी ही कम गलतियां करेगा और उतने ही सही उत्तर देगा। यदि प्रोग्राम अस्पष्ट होगा और उसमें समुचित विवरण एवं स्पष्ट निर्देश नहीं होंगे तो यह सम्भव है कि कम्प्यूटर बिना परिणाम निकाले ही गणना करता रहे अथवा उससे प्राप्त परिणाम अस्पष्ट और निरर्थक हों। कम्प्यूटर के लिए कोई भी प्रोग्राम बनाते समय निम्न बातों को ध्यान में रखना आवश्यक है:
  • समस्या का सावधानीपूर्वक अध्ययन करके निर्देशों को निश्चित क्रम में क्रमबद्ध करना।
  • निर्देश इस प्रकार लिखना कि उनका अक्षरशः पालन करने पर समस्या का हल निकल सके। 
  • प्रत्येक निर्देश एक निश्चित कार्य करने के लिए हो।

प्रोग्रामिंग के विभिन्न चरण: किसी भी प्रोग्राम की प्रोग्रामिंग करने के लिए सर्वप्रथम प्रोग्राम के समस्त निर्देष्टीकरण को भली-भांति समझ लिया जाता है। प्रोग्राम में प्रयोग की गई सभी शर्तों का अनुपालन सही प्रकार से हो रहा है अथवा नहीं, यह भी जांच लिया जाता है। अब प्रोग्राम के सभी निर्दिष्टीकरण को जांचने-समझने के उपरान्त प्रोग्राम के शुरू से वांछित परिणाम प्राप्त होने तक के सभी निर्देशों को विधिवत क्रमबद्ध कर लिया जाता है अर्थात प्रोग्रामों की डिजाइनिंग कर ली जाती है। प्रोग्राम की डिजाइन को भली-भांति जांचकर, प्रोग्राम की कोडिंग की जाती है एवं प्रोग्राम को कम्पाइल किया जाता है। प्रोग्राम में टेस्ट डेटा इनपुट करके प्रोग्राम की जांच की जाती है कि वास्तव में सही परिणाम प्राप्त हो रहा है अथवा नहीं। यदि परिणाम सही नहीं प्राप्त होते हैं तो इसका अर्थ है कि प्रोग्राम के किसी निर्देश का क्रम गलत है अथवा निर्देश किसी स्थान पर गलत दिया गया है। यदि परिणाम सही प्राप्त होता है तो प्रोग्राम में दिए गए निर्देशों के क्रम को एकबद्ध कर लिया जाता है एवं निर्देशों के इस क्रम को कम्प्यूटर में स्थापित कर दिया जाता है । इस प्रकार प्रोग्रामिंग की सम्पूर्ण प्रक्रिया सम्पन्न होती है।

प्रोग्रामिंग के विभिन्न चरण
  • एल्गोरिथ्म: पारिभाषिक शब्दों में किसी गणितीय समस्या अथवा डाटा को कदम-ब-कदम इस प्रकार विश्लेषित करना जिससे कि वह कम्प्यूटर के लिए ग्राह्म बन सके और कम्प्यूटर उपलब्ध डाटा को प्रयोग में लेकर गणितीय समस्या का उचित हल प्रस्तुत कर सके, एल्गोरिथ्म कहलाता है। जब कम्प्यूटर पर करने के लिए कोई कार्य दिया जाता है तो प्रोग्रामर को उसकी संपूर्ण रूपरेखा तैयार करनी होती है तथा कम्प्यूटर से बिना गलती कार्य करवाने के लिए किस क्रम से निर्देश दिए जाएंगे, यह तय करना होता है। अर्थात किसी कार्य को पूर्ण करने के लिए विभिन्न चरणों से गुजरना पड़ता है। जब समस्या के समाधान हेतु विभिन्न चरणों को क्रम से क्रमबद्ध करके लिखा जाये तो यह एल्गोरिथ्म कहलाता है। ध्यान रखें
    • एल्गोरिथ्म में दिए गए समस्त निर्देश सही एवं स्पष्ट अर्थ के होने चाहिए।
    • प्रत्येक निर्देश ऐसा होना चाहिए कि जिसका अनुपालन एक निश्चित समय में किया जा सके। 
    • कोई एक अथवा कई निर्देश ऐसे न हों जो अन्त तक दोहराए जाते रहें। यह सुनिश्चित करें कि एल्गोरिथ्म का अन्ततः समापन हो।
    • सभी निर्देशों के अनुपालन के पश्चात, एल्गोरिथ्म के समापन पर वांछित परिणाम अवश्य प्राप्त होने चाहिए।
    • किसी भी निर्देश का क्रम बदलने अथवी किसी निर्देश के छूटने पर एल्गोरिथ्म के समापन पर वांछित नहीं प्राप्त होंगे।
  • प्रवाह तालिका (Flow Chart): प्रवाह तालिका वस्तुतः एल्गोरिथ्म का चित्रात्मक प्रदर्शन है, जिसमें विभिन्न रेखाओं एवं आकृतियों का प्रयोग किया जाता है जो कि विभिन्न प्रकार के निर्देशों के लिए प्रयोग की जाती है। सामान्यतः सर्वप्रथम एक एल्गोरिथ्म को प्रवाह तालिका के रूप में प्रस्तुत किया जाता है और फिर प्रवाह तालिका के आधार पर उचित कम्प्यूटर भाषा में प्रोग्राम को तैयार किया जाता है। प्रोग्राम में तार्किक गल्ती एवं शर्तों के पूरा न होने की स्थिति एल्गोरिथ्म एवं प्रवाह तालिका अधिक स्पष्ट हो जाती है। प्रवाह तालिका में प्रयुक्त चिन्ह एवं आकृतियां निम्नलिखित हैं:
    • टर्मिनल: टर्मिनल का प्रयोग प्रोग्राम के प्रारम्भ, समापन और विराम के लिए किया जाता है  यह प्रोग्राम का प्रारम्भ होना और प्रोग्राम का समापन होना प्रदर्शित करता है।
    • इनपुट/आउटपुट: प्रोग्राम में कोई भी इनपुट देने अथवा आउटपुट प्राप्त करने के लिए इनपुट/आउटपुट चिन्ह का प्रयोग किया जाता है।
    • प्रोसेसिंग: फ्लोचार्ट में प्रोसेसिंग चिन्ह का उपयोग अंकगणितीय प्रक्रिया एवं डाटा विस्थापन सम्बन्धी निर्देशों के लिए किया जाता है। सभी अंकगणितीय प्रक्रिया जैसे जोड़ना, घटाना, गुणा करना और भाग करना प्रवाह तालिका में प्रोसेसिंग चिन्ह द्वारा प्रदर्शित किया जाता है।
    • प्रवाह रेखाएं: तीर की आकृति सिरे वाली यह रेखाएं प्रोग्राम के प्रवाह को प्रदर्शित करने के लिए की जाती है। प्रोग्राम के प्रवाह को प्रदर्शित करने के निर्देशों के क्रम है जिनके अनुसार निर्देशों का क्रियान्वयन किया जाना है।
    • निर्णायात्मक: प्रवाह तालिका में निर्णायात्मक चिन्ह का प्रयोग यह दर्शाता है कि यहां पर निर्णय लिया है जिसके दो या दो से अधिक विकल्प हो सके हैं। Decision Box में निर्णय करने के विशिष्ट मान स्पष्ट रूप से प्रकट किए गए हों।
    • संयोजक चिन्ह: प्रवाह तालिका में दो प्रकार के Connectors प्रयोग किए जाते हैं – ऑन पेज कनेक्टर तथा ऑफ पेज कनेक्टर.
    • पूर्व परिभाषित विश्लेषण चिन्ह: प्रवाह तालिका में यदि पहले की गई प्रोसेसिंग को पुनः किसी अन्य बिन्दु पर प्रयोग करना होता है तो उस बिन्दु पर प्रोसेसिंग सिम्बल के स्थान पर इस चिन्ह प्रयोग किया जाता है।
  •   मिथ्या संकेत: किसी प्रोग्राम को विकसित करने की प्रक्रिया किए जाने वाले कार्य को समझने एवं कार्य के सम्पन्न होने हेतु तर्क निर्धारण से प्रारम्भ होती है और यह कार्य प्रवाह तालिका अथवा मिथ्या संकेत की सहायता से किया जाता है। मिथ्या संकेत प्रवाह तालिका का एक विकसित विकल्प है । मिथ्या संकेत में विभिन्न आकृतियों अथवा चिन्हों की अपेक्षा प्रोग्राम की प्रक्रिया को क्रम से लिखा जाता है। चूंकि इसका प्रोग्राम को Design करने में महत्वपूर्ण स्थान है अतः इसे प्रोग्राम डिजाइन भाषा भी कहा जाता है।
प्रवाह तालिका बनाने के नियम: प्रवाह तालिका का निर्माण एक टरमिनल सिम्बल स्टार्ट से प्रारम्भ होता है। प्रवाह तालिका में प्रवाह ऊपर से नीचे एवं बाएं से दायीं ओर होना चाहिए। दो विभिन्न क्रियाएं, किसी एक प्रश्न के दो सम्भावित उत्तरों पर निर्भर करती हैं। ऐसी परिस्थिति में प्रश्न को एक निर्णय चिन्ह में प्रदर्शित करते हैं तथा इन परिस्थितियों को निर्णय चिन्ह से निकलने वाली दो प्रवाह रेखाओं द्वारा जो कि चिन्ह से बाहर की ओर आ रही हैं, प्रदर्शित करते हैं। निर्णय चिन्ह में एक प्रवाह रेखा आनी चाहिए और सभी सम्भावित उत्तरों के लिए पृथ्क रेखा होनी चाहिएं।

प्रत्येक चिन्ह में दिए गए निर्देश स्पष्ट एवं पूर्ण होने चाहिए ताकि उसे पढ़कर समझने में कठिनाई न हो। प्रवाह तालिका में प्रयुक्त नाम एवं परिवर्तनांक एक रूप होने चाहिएं। यदि प्रवाह तालिका बड़ी हो गई है और उसे अगले पृष्ठ पर भी बनाया जाना है तो प्रवाह तालिका को इन्पुट अथवा आउटपुट सिम्बल पर ही तोड़ना चाहिए तथा उपयुक्त कनेक्टर का प्रयोग करना चाहिए। प्रवाह तालिका जहां तक सम्भव हो अत्यन्त साधारण होनी चाहिए। प्रवाह रेखाएं एक-दूसरे को काटती हुई नहीं होनी चाहिएं। यदि ऐसी परिस्थिति आती है तो उपयुक्त कनेक्टर का प्रयोग करना चाहिए। प्रोसेस सिम्बल में केवल एक ही प्रवाह रेखा आनी चाहिए और एक ही प्रवाह रेखा निकलनी चाहिए। नीचे से ऊपर की ओर जाने वाली प्रवाह रेखा या तो किसी विश्लेषण की पुनरावृत्ति अथवा लूप को प्रदर्शित करनी चाहिए।

C एवं C++ में समानताएं
  • प्रोग्रामिंग भाषा C++, C के समान केस सेन्सेटिव है।
  • प्रोग्रामिंग भाषा C++ में तथा C में लिखे जाने वाले प्रोग्राम में स्टेटमेन्ट के अंत में ‘;’ सेमीकोलोन लगाया जाता है।
  • प्रोग्रामिंग भाषा C++ में लिखे प्रोग्राम में भी C के समान परिवर्तनांकों को उनके प्रयोग के पूर्व घोषित करना आवश्यक है।
  • लोकल एवं ग्लोबल परिवर्तनांक का मान समान हो सकता है । प्रोग्राम लोकल परिवर्तनांक के मान का प्रयोग करता है।
C तथा C++ में असमानताएं
  • लोकल एवं ग्लोबल परिवर्तनांकों का नाम समान हो सकता है। प्रोग्राम लोकल परिवर्तनांक के मान का प्रयोग करता है।
  • प्रोग्रामिंग भाषा C स्ट्रक्चर्ड प्रोग्रामिंग है जबकि C++ वस्तु केन्द्रित प्रोग्रामिंग भाषा है।
  • C++ में आइडेन्टीफायर में कितनी भी संख्या में कैरेक्टर हो सकते हैं जबकि C में आइडेन्टीफायर में 32 कैरेक्टर ही हो सकते हैं।
  • C++ प्रोग्रामिंग FormFree प्रोग्रामिंग है जबकि C में एक Form के अनुरूप प्रोग्रामिंग करनी होती है।
  • प्रोग्रामिंग भाषा C++ में हम नए डेटाटाइप भी बना सकते हैं जबकि C में ऐसा सम्भव नहीं है।
  • प्रोग्रामिंग भाषा C में किसी परिवर्तनांक के पास में सीधे-सीधे प्रयोग एवं परिवर्तन किया जा सकता है जबकि C++ में परिवर्तनांक के मान का प्रयोग परिवर्तन अप्रत्यक्ष रूप से किया जाता है।
  • प्रोग्रामिंग भाषा C में हैडर फाइल Stdio.h को इन्क्लूड करवाया जाता है जबकि C++ में iostream.h हैडर करवा कर इन्क्लूड करवाया जाता है।
  • C++ में main() फंक्शन int टाइप की मान रिटर्न करता है जबकि C++ में यह फंक्शन किसी प्रकार का कोई मान रिटर्न नहीं करता है।
  • प्रोग्रामिंग भाषा C++ में निर्देश में C की अपेक्षा अधिक सरल और सुगम बनाया गया है।
वस्तु केन्द्रित प्रोग्रामिंग: हम आम जीवन में किसी भी समस्या के समाधान करने के लिए पहले अपना ध्यान उस वस्तु पर केन्द्रित करते हैं तथा उस वस्तु की विशेषताओं और कमियों से ही उसके प्रयोग की विधियों की खोज करते हैं । इसे इस प्रकार समझें कि यदि हमें किसी मशीन के किसी दोष को दूर करना है, तो सर्वप्रथम उस मशीन तथा उसकी कार्य-विधि आदि के बारे में गहन विचार करते हैं, अब इस मशीन को ठीक करने के लिए उपरोक्त विचार के अनुरुप विधि एवं सामग्री का चुनाव करते हैं। इस विधि से किया गया कार्य समस्या का सटीक निदान होता है। इस प्रकार हम देखते हैं समस्त विश्व वस्तु केन्द्रित (OBJECT ORIENTED) ही है। कम्प्यूटर प्रोग्रामिंग में प्रोग्रामिंग की आधुनिक शैली वस्तु केन्द्रित प्रोग्रामिंग भी इसी तथ्य के अनुरुप है। आधुनिक कम्प्यूटर प्रोग्रामिंग भाषाओं जैसे C एवं जावा आदि में इसी प्रोग्रामिंग शैली का प्रयोग होता है।

मुख्य गुण
  • प्रक्रिया से ज्यादा आंकड़ों को महत्व दिया जाता है।
  • प्रोग्राम का ऑब्जेक्ट में विभाजन किया जाता है।
  • आंकड़ों का रूपांकन इस प्रकार किया जाता है कि वह ऑब्जेक्ट की विशेषताओं को दिखायें।
  • ऑब्जेक्ट में काम करने वाले फलनों को डेटा-स्ट्रकचर में साथ-साथ रखा जाता है।
  • आंकड़ों को गुप्त रखा जाता है तथा बाह्य फलनों को उनके परिग्रहण की अनुमति नहीं होती है।
  • ऑब्जेक्टों का आपसी सम्पर्क फलनों के द्वारा होता है।
कम्प्यूटर प्रोग्राम लिखने की परम्परागत प्रोग्रामिंग शैली में हम परिवर्तनों (VARIABLES) का प्रयोग फंक्शन (FUNCTION) के अन्दर करते हैं। इन्हीं परिवर्तनांकों के आधार पर प्रोग्रामिंग में अनेक प्रकार के कार्य जैसे गणनाएं, आकड़ें प्रिंट करना, आकड़ें संचित करना आदि कार्य होते हैं। छोटे प्रोग्राम में हम इन परिवर्तनांक को सरलता से नियंत्रित कर सकते हैं, परन्तु जैसे-जैसे प्रोग्राम बड़ा होता जाता है इन परिवर्तनांकों को नियंत्रित करना कठिन होता जाता है और प्रोग्रामिंग में गलतियां होने की सम्भावनाएं बढ़ती जाती है। वस्तु केन्द्रित प्रोग्रामिंग में परिवर्तनांकों एवं प्रोग्राम्स को एक वर्ग (CLASS) में सम्बद्ध कर दिया जाता है, जिससे अन्य प्रोग्राम द्वारा किसी वर्ग के आंकड़े प्रभावित नहीं होते हैं। इससे प्रोग्राम को नियंत्रण करना सरल हो जाता है। इस कार्य को वस्तु केन्द्रित प्रोग्रामिंग भाषा में एनकैप्स्यूलेशन (ENCAPSULATION) जिसका शाब्दिक अर्थ एक के भीतर दूसरा रखने का किया है, कहा जाता है। प्रोग्रामिंग की वस्तु केन्द्रित शैली में पहने से बने किसी प्रोग्राम अथवा वर्ग के आधार पर नए प्रोग्राम को बना सकते हैं। वस्तु केन्द्रित प्रोग्रामिंग की इस विशेषता को उत्तराधिकार (INHERITANCE) कहा जाता है। प्रोग्रामिंग की इस विशेष शैली का प्रयोग करते हुए हम पहले से बने किसी प्रोग्राम अथवा वर्ग (CLASS) का प्रयोग करके एक नया और समृद्ध सॉफ्टवेयर अत्यंत अल्प समय में विकसित कर सकते हैं।

वस्तु केन्द्रित प्रोग्रामिंग के सिद्धांत

ऑब्जेक्ट: दैनिक दिनचर्या में हम जिस ओर भी दृष्टि डालते है, चारों ओर वस्तु ही पाते हैं। यह संसार वस्तुमय है। जिसे पहचाना जा सके, जिसका एक आकार होता है, संरचना होती है, व्यवहार होता है, वस्तु कहलाती है प्रोग्रामिंग की वस्तु केन्द्रित शैली का भी यही मुख्य आधार है। विभिन्न वस्तुओं को एकत्र करके प्रयोग का एक नमूना तैयार किया जाता है, जोकि सार्वजनिक लक्ष्य को प्राप्त करने के लिए आपस में सूचनाओं का आदान-प्रदान करते हैं। ऑब्जेक्ट किसी वर्ग का एक दृष्टांत होता है ऑब्जेक्ट एवं पब्लिक फंक्शन की सहायता से ही वर्ग में घोषित किए गए परिवर्तनांकों के मान में परिवर्तन किया जाता है।

वर्ग (Class): वर्ग वर्ग विभिन्न फंक्शन्स एवं परिवर्तनांकों का एक समूह है किसी भी ऑब्जेक्ट ओरिएण्टेड प्रोग्राम में कम-से-कम एक वर्ग का घोषित किया जाना आवश्यक होता है। वर्ग एक प्रयोगकर्ता द्वारा परिभाषित डेटा-टाइप है।

आंकड़ों का पृथककरण एवं नियंत्रण
  • गुण पृथककरण (Abstraction): आंकड़ों के पृथककरण का आशय सम्पूर्ण जटिलता के सरलीकरण से है। इस प्रकार समझें कि हम लाइट ऑन करने के लिए स्विच को दबाने से स्विच के अन्दर क्या हुआ, स्विच दबाने से लाइट कैसे ऑन हुई। हमें यह सब जानने की आवश्यकता नहीं होती। यही गुण पृथककरण कहलाता है।
  • आंकड़ा नियन्त्रण (Encapsulation): आंकड़ा नियन्त्रण वस्तु केन्द्रित प्रोग्रामिंग शैली का एक अत्यंत महत्वपूर्ण तथ्य है। यह डेटा स्ट्रक्चर एवं Functionality को वस्तु (Object) में मिलाता है। एनकैप्स्यूलेशन ऑब्जेक्ट के आन्तरिक रूप को उसके उपयोगकर्ता से छुपाता भी है और उपयोग हो सकने वाले ऑब्जेक्ट को सूचित भी करता है। आंकड़ा नियन्त्रण अर्थात् फंक्शन्स व आंकड़ों का एकीकरण करना। ऑब्जेक्ट ओरिएण्टेड प्रोग्रामिंग शैली की इस विशेषता के कारण हम प्रोग्राम और एवं आंकड़ों दोनों को बाहरी नियंत्रण से बचा सकते हैं।
उत्तराधिकार (Inheritance): उत्तराधिकार भी ऑब्जेक्ट्स ओरिएण्टेड प्रोग्रामिंग शैली की एक महत्वपूर्ण एवं उपयोगी विशेषता है। इसके द्वारा हम एक वर्ग की विशेषताएं किसी दूसरे वर्ग से प्राप्त करवा सकते हैं। उत्तराधिकार की धारणा का प्रयोग करके पुराने वर्ग से नए वर्ग का निर्माण सम्भव है। नए वर्ग को व्यूत्पन्नवर्ग (Derived Class) तथा पुराने वर्ग, जिससे इसे बनाया गया है, को मूल वर्ग (Base Class) कहा जाता है यह व्यूत्पन्नवर्ग (Derived Class) का मूल वर्ग की आंकड़ा डाटा संरचनाओं एवं फंक्शन्स पर समान अधिकार रखता है। यह नया वर्ग मूल वर्ग से लिए गए आंकड़ों एवं फंक्शन्स में नए आंकड़ें एवं फंक्शन्स को जोड़ सकता है।
  • यह वस्तु केन्द्रित प्रोग्रामिंग का एक अनिवार्य गुण है इसमें पृष्ठ-भूमि या किसी स्पष्टीकरण की आवश्यकता नहीं है।
  • यह एक प्रक्रिया है जिसमें एक वस्तु किसी दूसरे वस्तु के गुणों का उपार्जन करती है।
  • यह कि यह विधि किसी सामान्य वस्तु विशिष्ट करने का गुण रखती है।
  • यह Reusability का विचार प्रदान करती है।
  • हम पहले बने वर्ग में बिना किसी परिवर्तन के नये गुणों को जोड़ सकते हैं।
बहुरूपण (Polymorphism): बहुरूपण का शाब्दिक अर्थ है एक नाम पर अनेक कार्य। इस विधि से हम किसी कार्य को पृथक परिस्थिति में उसी के अनुसार करवा सकते हैं। बहुरूपण हमें समान बाहरी स्ट्रक्चर के आन्तिरक भिन्नता लिए हुए ऑब्जेक्ट्स को प्रयोग करने से की सुविधा प्रदान करता है।
  • बहुरूपण एक से अधिक रूप लेने की क्षमता प्रदान करता है।
  • विभिन्न वस्तुओं के संदर्भ में प्रचालन एक से अधिक व्यवहार प्रदर्शित करता है।
  • फंक्शन तथा ऑपरेटर का व्यवहार प्रचालन में प्रयोग किए गए आंकड़ों पर निर्भर करता है।
बहुरूपण दो प्रकार के होते हैं
  • फंक्शन ओवरलोडिंग (Function Overloading): फंक्शन एक से अधिक व्यवहार प्रदर्शित करता है।
  • ऑपरेटर ओवरलोडिंग (Operator Overloading): ऑपरेटर विभिन्न वस्तुओं के सन्दर्भ एक से अधिक व्यवहार प्रदर्शित करता है।
संदेश प्रवहन: ऑब्जेक्ट ओरिएण्टेड प्रोग्राम एक अनेक ऑब्जेक्ट्स का समूह होता है, जो आपस में एक-दूसरे को आवश्यकता पड़ने पर संदेश भेजते भी हैं और प्राप्त भी करते हैं। किसी ऑब्जैक्ट के लिए एक सन्देश एक निश्चित प्रक्रिया अथवा प्रक्रिया को कार्यान्वित करने के लिए होता है अतः सन्देश प्राप्त करके ऑब्जेक्ट एक निश्चित प्रक्रिया को कार्यान्वित करके परिणाम प्रस्तुत करता है। संदेश प्रवहन एक निश्चित प्रक्रिया कार्यान्वित करने के लिए होता है अतः संदेश प्राप्त करके ऑब्जेक्ट एक निश्चित प्रक्रिया कार्यान्वित करके परिणाम प्रस्तुत करते हैं। संदेश प्रवहन के लिए हमें ऑब्जेक्ट का नाम, फंक्शन का नाम तथा उपयोगी जानकारी देनी पड़ती है।

C++ प्रोग्राम की संरचना: C++ प्रोग्राम परिभाषा एवं घोषणा का संग्रह है।
  • आंकड़ों के प्रकार का परिभाषन
  • ग्लोबल आंकड़ों का परिभाषन
  • फंक्शनों का परिभाषन
  • वर्गों का परिभाषन 
  • एक विशेष फंक्शन main()
इन्क्लूड स्टेटमेन्ट(Include Statement )
  • कम्पाइलर अपना काम शुरू करने से पहले #include के द्वारा iostream.h के Contents को हमारी फाइल में जोड़ता है।
  • इसके द्वारा आप अपने प्रोग्राम में C++ की Standard Library द्वारा बनाये गये फंक्शन तथा वर्ग का उपयोग कर सकते हैं।
  • आप अपने द्वारा बनायी फाइल भी जोड़ सकते हैं।
कुछ सर्वाधिक प्रयोग में आने वाले includes
  • Basic I/O: iostream.h
  • I/O manipulation: iomanip.h
  • Standard Library: stdlio.h
  • Time and Date support: time.h
C++ प्री-प्रोसेसर
  • C++ के कम्पायलर स्वतः ही एक प्री-प्रोसेसर को Invoke करते हैं जो कि #include तथा स्पेशल निर्देशों के क्रियान्वयन का ख्याल रखते हैं।
  • प्री-प्रोसेसर को क्रियान्वित करने के लिए कुछ करने की जरूरत नहीं है ये स्वतः ही क्रियान्वित होते हैं।
वेरीयेबल
  • प्रोग्राम में वेरीयेबल का प्रयोग होता है। int integer1, integer2, sum;
  • वेरियेबल सिर्फ मेमोरी में विभिन्न स्थानों के लिए एक नाम का कार्य करता है।
  • C++ के हर वेरीयेबल का टाइप एक होना चाहिए।
  • C++ में वेरीयेबल को प्रयोग में लाने से पहले उनको Declared करना जरूरी होता है।
  • C++ में वेरियेबल की घोषणा इस प्रकार की जाती है type var_name; 
  • टाइप वेरीयेबल के प्रकार की ओर इंगित करता है।
  • C++ के built in type इस प्रकार है - int,char,float,double,boolean 
  •  आप अपने नये टाइप बना सकते हैं।
C++ में वेरीयेबल के नाम
  • इंग्लिश के अक्षर, अंक, Underscore _ से बने होते हैं।
  • शुरु का अक्षर अंक नहीं होना चाहिए।
  • Case Sensitive होते हैं।
  • किसी भी लम्बाई के हो सकते हैं।
  • अच्छे नाम पाठक को उस वेरीयेबल के प्रयोग के बारे में जानकारी देते हैं।
लिट्रल्स (Literals): लिट्रल्स प्रोग्राम में प्रयोग किए गए स्थिरांक होते हैं। लिट्रल्स के उदाहरण 22 3.141 59 0x2A false “Hi Dave” ‘c’

कोंस्टेंट्स (Constants): हम एक वेरीयेबल में उसके declaration के समय ही Initialize कर सकते हैं अर्थात उसका मान स्थिर कर सकते हैं। int foo = 17; double PI = 3.14159; char newline = ‘\n’;

डेटाटाइप रेंज
  • char -: 1 Byte -: -128 to 127
  • unsigned char -: 1 Byte -: 0 to 255
  • signed char -: 1 Byte -: -128 to 127
  • int -: 2 Byte -: -32768 to 32767
  • unsigned int -: 2 Byte -: 0 to 65535
  • signed int : 2 Byte -: -31768 to 32767
  • short int -: 3 Byte -: -31768 to 32767
  • unsigned short int -: 2 Byte -: 0 to 65535
  • signed short int -: 2 Byte -: -31768 to 32767
  • long int -: 4 Byte -: -2147483648 to 2147483647
विभिन्न ओपरेटर
  • गणितीय ओपरेटर
    • + -: Addition
    • - -: Subtraction
    • * -: Multiplication
    • / -: Division
    • % -: Modulus Division
    • प्रिसीडेंस (Precedence): प्रिसिडेंस यह निर्धारित करता है कि कौन सा ऑपरेटर किस क्रम में क्रियान्वित होगा। किसी भी lower प्रिसिडेंस के ऑपरेटर पहले क्रियान्वित होंगे।
      • () -: left to right high
      • * / % -: left to right middle
      • + - -: left to right low
  • सम्बन्ध सूचक एवं तुलनात्मक ऑपरेटर (Relational & Equality Operators): सम्बन्ध सूचक एवं तुलनात्मक ऑपरेटर का प्रयोग मानो की तुलना करने में होता है।
    • > -: Greater than
    • >= -: Greater than or equal
    • < -: Less than
    • <= -: Less than or equal
    • == -: Equal to
    • != -: Not Equal to 
  • असाइनमेंट ऑपरेटर (Assignment Operators)
  • इन्क्रीमेंट ऑपरेटर -: ++
  • डिक्रीमेंट ऑपरेटर -: --
  • साइज़ ऑफ ऑपरेटर -: sizeof()
  • स्कोप रेज़ोल्यूश्न ऑपरेटर -: ::
कंट्रोल स्ट्रक्चर: जब तक कुछ विशेष नहीं घटता प्रोग्राम क्रम से ही क्रियान्वित हो जाता है । जब हम कुछ विशेष चाहे तो कन्ट्रोल स्ट्रक्चर का प्रयोग करते हैं कन्ट्रोल स्ट्रक्चर मुख्यतः दो कार्य करती है
  • सेलेक्शन (Selection): एक Selection Control Structure कई विकल्पों में से एक विकल्प का चुनाव करती है। किसी भी एक विकल्प के क्रियान्वयन में कोई ना कोई अनिवार्य शर्त होनी चाहिए। C++ में कई selection control structures हैं जैसे if, if/else, switch
  • रिपिटिशन (Repetition): Repetition Control Structures हमें कुछ क्रियाओं को बार-बार दोहराने की क्षमता प्रदान करता है। C++ में कई repetition control structures हैं जैसे while, for, do/while
If स्टेटमेन्ट: यह Decision Making Element है। इसमें केवल True Condition ही क्रियान्वित होगी। इस Statement का प्रयोग प्रोग्रामिंग भाषा C++ में सबसे अधिक किया जाता है। इसे स्टेटमेन्ट की (Key) कहा जाता है। If Statement में नियंत्रण का रूपान्तरण दी हुई शर्त के पूर्ण होने पर निर्भर है। यह एक Condition Branching प्रक्रिया है। इस स्टेटमेन्ट में की-वर्ड if के बाद () में शर्त घोषित की जाती है यदि वह शर्त पूरी होती है तो उससे सम्बन्धित स्टेटमेन्ट क्रियान्वित होती है, यदि वह शर्त-पूर्ण नहीं होती है तो if statement प्रोग्राम का नियन्त्रण प्रोग्राम के उस statement में स्थानान्तरित कर देता है। यदि हम एक से अधिक स्टेटमेन्ट का प्रयोग शर्त के पूर्ण होने पर करना चाहते हैं तो Statement को () के अन्दर लिखा जाता है।
if (condition)
{
statement;
}

if/else स्टेटमेन्ट: if/else में यदि हमें if Statement की शर्त पूरी होने पर उससे सम्बन्धित सभी स्टेटमेन्ट कार्यान्वित कराना चाहते हैं और शर्त अपूर्ण होने पर कुछ अन्य स्टेटमेन्ट को क्रियान्वित कराना चाहते हैं ऐसी परिस्थियों में if/else का उपयोग किया जाता है।
if(condition)
{
statement;
}
else
{
statement;
}

गुम्फित (Nested) if-else statement: जब किसी if else Statement में एक से अधिक if-else का प्रयोग किया जाता है तो उसे गुम्फित if-else Statement कहा जाता है। Nested का शाब्दिक अर्थ है ‘शरण लेना’ अर्थात् जब किसी if else Statement में एक से अधिक if else statement शरणागत होते हैं तब इन सभी को गुम्फित (Nested) if-else स्टेटमेन्ट कहा जाता है।
Conditional Operator (?:) Statement: प्रोग्रामिंग भाषा C++ में Conditional Operator जिसे ?: द्वारा दर्शाया जाता है इसका प्रयोग भी if--else की भांति किया जाता है। इसे लिखने का तरीका छोटा होने के कारण इसका प्रयोग अधिक होता है।

Switch स्टेटमेन्ट: कभी-कभी किसी प्रोग्राम में if-else अथवा Nested if else का रुप इतना जटिल हो जाता है कि प्रोग्रामर स्वयं दुविधा में पड़ जाता है। ऐसी परिस्थित में C++ switch statement की सुविधा दी है। इसमें हमारे पास किसी एक शर्त के अन्य विकल्प रहते हैं और प्रत्येक विकल्प के लिए अन्य भिन्न कार्यान्वयन होता है तो switch statement का प्रयोग किया जाता है। switch statement में की-switch के बाद () brace में उस परिवर्तनांक का मान देते हैं जिस परिवर्तनांक का मान नीचे परिभाषित किए गए case के अनुसार नियत करना होता है। switch statement में की-वर्ड case के बाद परिवर्तनांक का मान उपरोक्त दिए गए case में नहीं पाया जाता है तो program default statement को देना आवश्यक नहीं है।
switch(variable)
{
case value-1:
statement-block-1
break;
case value-2:
statement-block-2
break;
default:
ststement-block-3
break;
}
goto स्टेटमेन्ट: कभी-कभी यह आवश्यक हो जाता है कि प्रोग्राम के कार्यान्वयन के दौरान प्रोग्राम के सामान्य कार्यान्वयन को छोड़कर प्रोग्राम को किसी और भाग में जाना होता है। ऐसी स्थिति में goto स्टेटमेंट का प्रयोग किया जाता है। जहां पर हमें Program का रुपान्तरण करना होता है वहां हम Label का प्रयोग करते हैं इसमें Label के आगे Colon (:) लगाया जाता है। keyword goto के बाद उस लेबल का नाम प्रयोग किया जाता है। लेबल का नाम की-वर्ड के अतिरिक्त कुछ भी हो सकता है तथा इसकी लम्बाई अधिकतम आठ word होती है। goto statement प्रयोग करने की दो परिस्थितियां हो सकती है : अग्रगामी goto तथा पश्चगामी goto.

ब्रान्चिंग (Branching): जब किसी प्रोग्राम में किसी statement के दो अथवा दो से अधिक सम्भावित परिणाम है तो इसे प्रोग्राम की ब्रान्चिंग कहा जाता है। Branching दो प्रकार की होती है
  • बिना शर्त ब्रांचिंग: जब किसी को प्रोग्रामिंग की ब्रांचिंग के लिए किसी शर्त का प्रयोग नहीं किया जाता है तो बिना शर्त ब्रांचिंग कहा जाता है। goto स्टेटमेन्ट बिना शर्त ब्रांचिंग प्रक्रिया है। 
  • सशर्त ब्रांचिंग: जब किसी प्रोग्रामिंग की ब्रांचिंग के लिए शर्त का प्रयोग किया जाता है तो उसे सशर्त Branching कहा जाता है। लूपिंग एक सशर्त ब्रांचिंग प्रक्रिया है। C++ में तीन प्रकार की सशर्त ब्रांचिंग प्रयोग की जाती है। 
पुनरावृति (Looping)

While स्टेटमेन्ट: while स्टेटमेन्ट में while के बाद () braces के अन्दर वह शर्त दी जाती है जिसके अनुसार लूपिंग करनी है। यदि शर्त पूरी होती है तो while स्टेटमेन्ट के बाद लिख गया block execute होता है बाद में पुनः while की शर्त को जांचा जाता है। अब भी अगर शर्त पूरी होती है तो block statement पुनः execute होता है। यह प्रक्रिया तब तक चलती है जब तक while statement की शर्त पूरी होती है। while का प्रयोग वहां होता है जहां यह पहले से पता हो कि पुनरावृत्ति किन शर्त पर होनी है। while(condition)
{
statement;
statement;
}

do while स्टेटमेन्ट: यह भी सशर्त ब्रांचिंग प्रक्रिया हो इसे स्टेटमेन्ट की भांति ही प्रयोग किया जाता है। इसमें मुख्य अन्तर यह है कि while में पहले condition check चैक होती है और शर्त पूर्ण होने पर ही Block स्टेटमेन्ट execute होता है लेकिन do स्टेटमेन्ट में पहले Block statement execute होता है उसके बाद शर्त को चैक किया जाता है। यदि शर्त पूरी होती है तो पुनः Block स्टेटमेन्ट execute होता है यह प्रक्रिया तब तक चलती है जब तक शर्त अपूर्ण नहीं होती है।
do
{
statement;
statement;
statement;
}while(condition)

for स्टेटमेन्ट: यह C++ में सबसे अधिक प्रयोग किया जाने वाला एक looping स्टेटमेन्ट है। with के बाद प्रयोग () braces के अन्दर लिखा जाता है। इन Braces को तीन भागों में बांटा जाता है। प्रथम भाग में परिवर्तनांक को मान प्रदान कर सकते हैं। इस भाग में हम loop की शर्त लिखते हैं। अन्तिम भाग में परिवर्तनांक का मान घटा या बढा सकते हैं। प्रथम व द्वितीय भाग में semicolon (;) का प्रयोग अवश्य होता है।
for(initialization;condition;increment/decrement)
{
statement;
statement;
statement;
}

Break और Continue स्टेटमेन्ट
  • break और continue स्टेटमेन्ट नियंत्रण के बहाव को रोकते हैं।
  • break स्टेटमेन्ट कार्यान्वित होने वाले नियंत्रण को iterative loop से बाहर निकालता है।
  • किसी प्रोग्राम में continue स्टेटमेन्ट के द्वारा वर्तमान लूप बाहर आकर अगले लूप को कार्यान्वित किया जाता है।
C++ के फंक्शन्स: दूसरी भाषाओं में इसे प्रक्रिया (Procedure) या सबरुटीन (subroutine) भी कहा जाता है। C++ के सभी फंक्शन का रिटर्न टाइप होना आवश्यक है। कभी-कभी फंक्शन में कोई रिटर्न टाइप नहीं होता तो ऐसे फंक्शन को void टाइप फंक्शन कहा जाता है। C++ फंक्शनों की पैरामीटर सूची होती है। ये पैरामीटर तत्व होते हैं, जिनकी सहायता से फंक्शन क्रिया करते हैं। हर पैरामीटर का एक प्रकार होता है। Zero पैरामीटर भी हो सकते हैं। उदाहरण:
int add2ints(int a, int b)
{
return(a+b);
}

गणितीय Library फंक्शन: C++ में एक गणितीय Library अंतर्निहित हैं। इस फंक्शनों के प्रयोग से पहले इन्हें कॉल करने की विधि जाननी होगी। यह जानना होगा कि वे क्या रिटर्न करती हैं। वे किस प्रकार करते हैं यह जानने की आवश्यकता नहीं है।

फंक्शन लिखने की विधि: यह तय करना होगा कि फंक्शन कैसा होगा। 1. रिटर्न 2. नाम या 3. पैरामीटर फिर आपको फंक्शन का कोड लिखना होगा।

फंक्शन के पैरामीटर: पैरामीटर फंक्शन के बॉडी में अंतर्निहीत स्थानीय वेरियेबल होते हैं। जब फंक्शन को कॉल किया जाता है तो उसमें मान रखे जाते हैं। फंक्शन उन मानों की एक प्रतिलिपि प्राप्त कर लेता है।

ब्लॉक वेरीयेबल: आप ऐसे वेरीयेबल को भी घोषित कर सकते हैं जिनका अस्तित्व एक ब्लॉक तक सीमित हो। उदाहरण:
{
int foo;
....
....
}

ग्लोबल वेरीयेबल: आप फंक्शन के बाहर वेरीयेबल की घोषणा कर सकते हैं। ये वेरीयेबल ग्लोबल वेरीयेबल कहलाते हैं। कोई फंक्शन इन ग्लोबल वेरीयेबलों का प्रयोग/परिवर्तन कर सकता हैं। उदाहरण: fly जो इंगित करता है कि डिबगिंग सूचना प्रिंट करना है या नहीं।

विस्तार क्षेत्र: एक वेरीयेबल का विस्तार क्षेत्र वह क्षेत्र होता है जहाँ वेरीयेबल कोई अस्तित्व रखता है। एक ग्लोबल वेरीयेबल के विस्तार का क्षेत्र Global होता है। एक क्षेत्रियवेरीयेबल का विस्तार क्षेत्र उस फंक्शन तक ही सीमित होता है जहां उसकी घोषणा की गई हो। एक ब्लॉक वेरीयेबल का विस्तार उस ब्लॉक तक ही सीमित होता है जहां उसकी घोषणा की गई हो।

एक फंक्शन का विस्तार क्षेत्र: C++ में हम एक identifier के विस्तार क्षेत्र की बात करते हैं। वह एक फंक्शन या वेरीयेबल हो सकता है। फंक्शन का विस्तार क्षेत्र उस फाइल तक होता है। उस फाइल में कोई भी जो उस फंक्शन की परिभाषा का पालन करता है फंक्शन के नाम का उपयोग कर सकता है कभी-कभी यह सुविधाजनक नहीं होता। हम फंक्शन को फाइल के ऊपरी भाग में प्रयोग करना चाहते हैं पर नीचे परिभाषित करते हैं।

फंक्शन प्रोटोटाइप: एक फंक्शन प्रोटोटाइप फंक्शन के प्रयोग से पहले उसकी रूप रेखा का उल्लेख का कार्य करती है। ताकि कम्पायलर फंक्शन की परिभाषा के बिना भी फंक्शन को कम्पाइल कर सके। एक फंक्शन का प्रोटोटाइप उसके नाम, रिटर्न टाइप तथा पैरामीटर टाइप का उल्लेख करता है। उदाहरण:
double sqrt(double);
int add2nums(int,int);
int counter(void); 

रिकर्शन: फंक्शन अपने आप को काल कर सकते हैं इसे ही रिकर्सन कहते हैं। रिकर्सन बहुत उपयोगी है-प्रायः एक जटिल समस्या को रिकर्सन के प्रयोग से आसानी से सुलझाया जा सकता है।

इनलाइन फंक्शन: इनलाइन फंक्शन वे फंक्शन हैं जो मुख्य प्रोग्राम में बुलाने पर वे स्वतः ही मुख्य प्रोग्राम में सम्मिलित हो जाते हैं। कम्पाइलर फंक्शन की सारी कोडिंग मुख्य प्रोग्राम में add करके बार-बार फंक्शन call करने की प्रक्रिया को बदलता है। inline function को निम्नांकित प्रकार से परिभाषित किया जा सकता है। उदाहरण – 
inline function-header
{
function body
}

फंक्शन आवरलोडिंग: प्रोग्रामिंग भाषा C++ में हम एक ही नाम से एक से अधिक फंक्शन बना सकते हैं। इसमें नाम तो एक ही रहता है लेकिन argument list अलग-अलग होती है।

Call-by-value तथा Call-by-reference में अन्तर: फंक्शन को प्रोग्राम में उसके मान के आधार पर बुलाने को Call-by-value कहा जाता है। फंक्शन को इस प्रकार प्रोग्राम में बुलाने पर actual argument में दिया गया मान formal argument में कॉपी नहीं होता है। इस प्रकार इसके मूल मान पर ही विभिन्न गणनायें होती है।

उपनाम (References): एक reference variable किसी भी variable का उपनाम (References) होता है। reference variable को किसी variable को reference करने के लिए सबसे पहले initialize करना पड़ता है। जब एक बार reference variable initialize हो जाता है तो वह सामान्य variable की तरह व्यवहार करता है। Reference Variable Declaration करने के लिए उसके नाम के पहले & चिह्न लगाया जाता है जैसे: 
int &foo;
double &alah;
char &c; 

कन्स्ट्रक्टर (Constructor): यह एक विशिष्ट प्रकार का सदस्य फंक्शन है जिससे वर्ग के ऑब्जेक्ट को बनाते समय प्रारम्भिक मान प्रदान किया जाता है। इस सदस्य फंक्शन को विशेष इसलिए कहा जाता है क्योंकि इसका नाम वही होता है जो वर्ग का होता है। जब भी इनसे सम्बन्धित वर्ग के लिए कोई ऑब्जेक्ट बनाया जाता है तो यह अपने आप invoke हो जाते हैं अर्थात् स्वतः ही सक्रिय हो जाते हैं। इसे कन्स्ट्रक्टर इसलिए कहा जाता है क्योंकि ये अपने वर्ग के ऑंकड़ा सदस्यों को मान प्रदान करते हैं। कन्स्ट्रक्टर को निम्न प्रकार से बनाया तथा परिभाषित किया जाता है :
class integer
{
int m, n;
public:
integer (void); // constructor declared
};
integer :: integer (void) // constructor defined
{
m = 0; n = 0;
}

कन्स्ट्रक्टर फंक्शन की विशेषताएं 
  • ये वर्ग के public भाग में घोषित किये जाते हैं।
  • ये वर्ग पर आधारित ऑब्जेक्ट को बनाते समय स्वतः ही call होते हैं।
  • ये फंक्शन होने के बावजूद कोई मान return नहीं करते हैं।
  • ये inherite नहीं होते हैं।
  • ये फंक्शन virtual नहीं हो सकते हैं।
  • इन फंक्शन को उनके addresses. से refer नहीं किया जा सकता है।
  • एक ऑब्जेक्ट जिसमे constructor या destructor हो उन्हें geunion के सदस्य की तरह उपयोग नहीं कर सकते हैं।
  • इस फंक्शन को हम new और delete ऑपरेटर के द्वारा ‘implicit calls’ कर सकते हैं। जब memory allocation की आवश्यकता होती है।
कन्स्ट्रक्टर के विभिन्न प्रकार 
  • Default Constructor: कन्स्ट्रक्टर फंक्शन जिसमें कोई parameter pass नहीं किया जाता है उसे Default Constructor कहते हैं। 
  • Parameter Constructor: ऐसे कन्स्ट्रक्टर फंक्शन जिसमें argument pass किया जाता है उसे Parameter Constructor कहते हैं। 
  • Copy Constructor: ऐसे कन्स्ट्रक्टर फंक्शन जो कि अपने ही वर्ग का एक reference parameter की तरह स्वीकार करते हैं।
डेस्ट्रक्टर (Destructor): ये कम्प्यूटर मेमोरी में object को जो स्थान constructor द्वारा प्रदान किया जाता है उस स्थान को मैमोरी से समाप्त करने के लिए destructor का प्रयोग किया जाता है। Constructor की तरह destructor भी वर्ग का सदस्य फंक्शन है जिसका नाम वर्ग के नाम पर होता है परन्तु इसके नाम के पहले एक चिह्न (~) लगाया जाता है । Destructor कभी भी argument नहीं लेता और कोई भी मान return नहीं करता है । यह compilers द्वारा implicitly मेमोरी को मुक्त करने के लिए प्रयोग किया जाता है।

वर्ग और ऑब्जेक्ट: प्रोग्रामिंग भाषा C++ में वर्ग “class” का एक महत्वपूर्ण स्थान होता है इसलिए इस भाषा को C with classes का नाम दिया गया है। वर्ग C में प्रयोग हुये structure का विस्तृत रूप हैं। C++ में structure को standard data type की तरह उपयोग किया जा सकता है। C के structures को extend करके C++ ने नया data type वर्ग CLASS बनाया है जो structures के सभी गुणों का समर्थन करता है। OOP के अन्तर्गत आने वाले विभिन्न गुणों का समावेश किया गया है जैसे inheritance data hiding का समर्थन। इसमें data. को private और public बनाया जा सकता है।

ऑब्जेक्ट प्रकार: C++ इसमें class object का प्रकार है। जब हम कोई नया वर्ग बनाते हैं तथा परिभाषित करते हैं तो हम एक नयो प्रकार का attributes तथा behavior परिभाषित करते हैं। Data member attribute है। Behavior फंक्शन के द्वारा परिभाषित किए जाते हैं। इस प्रकार एस वर्ग आकड़ो और इससे सम्बन्धित फंक्शन का संयुक्त रूप है।

वर्ग बनाना: यह दो भागों से मिलकर बना है
  • वर्ग की घोषणा करना (Class Declaration): वर्ग की घोषणा करने का आशय वर्ग में सदस्यों के आकड़ा प्रकार एवं स्कोप की व्याख्या करना। 
  • वर्ग के फंक्शन को परिभाषित करना (Class Function Definitions): इसका आशय यह है कि कैसे वर्ग को परिभाषित किया जा सकता है ।
class class_name
{
private :
variable declarations;
function declarations;
public :
variable declarations;
function declarations;
};

ऑब्जेक्ट बनाना: वर्ग बनाने के बाद उस वर्ग पर आधारित नये वेरीयेबल घोषित कर सकते हैं। ये वेरीयेबल ही वर्ग का ऑब्जेक्ट कहलाता है। ऑब्जेक्ट की घोषणा की जा सकती है – वर्ग का नाम तथा वेरीयेबल नाम के द्वारा item x ऑब्जेक्ट की घोषणा वर्ग के बनने के साथ-साथ भी की जा सकती है। जैसे:
class item
{

} x, y, z;

वर्ग के सदस्यों तक पहुंचना: वर्ग के Private data तथा सदस्य फंक्शन तक केवल वर्ग के public function के द्वारा ही पहुंचाया जा सकता है। Private data सदस्यों तक निम्न सूत्रानुसार पहुंचाया जा सकता है:
object-name.function-name (actual arguments)
Eg.
X.putdata()
X.getdata(100, 7.5)

ऐसे ऑकड़े जिनको public घोषित किया गया है उनको ऑब्जेक्ट के माध्यम से सीधे-सीधे बुलाया जा सकता है। उदाहरण:
p.x = 10; 

सदस्य फंक्शन की विशेषताएं: एक से अधिक वर्ग में एक नाम के सदस्य फंक्शन हो सकते हैं। सदस्य फंक्शन private data को access कर सकते हैं। वर्ग का सदस्य फंक्शन इस वर्ग के किसी अन्य सदस्य फंक्शन को अपने अंदर डॉट ऑपरेटर के प्रयोग के बिना भी बुला सकता है। वर्ग के सदस्य फंक्शन को दो तरह से परिभाषित किया जा सकता है वर्ग के बाहर तथा वर्ग के अन्दर.

वर्ग के बाहर सदस्य फंक्शन को परिभाषित करना: वर्ग के बाहर सदस्य फंक्शन को निम्नानुसार सूत्र द्वारा परिभाषित किया जा सकता है:
return-type class-name :: function-name (argument declaration)
{
Function body
}

वर्ग के अन्दर सदस्य फंक्शन को परिभाषित करना: जब किसी सदस्य फंक्शन को वर्ग के अन्दर ही घोषित किया जाता है तब वह एक inline function बन जाता है। सामान्यतः छोटे फंक्शन ही हमें वर्ग के अन्दर घोषित करने चाहिए।

वर्ग के बाहर परिभाषित फंक्शन को Inline बनाना: इसके लिए keyword Inline का प्रयोग किया जाता है। वर्ग के बाहर सदस्य फंक्शन को परिभाषित करते समय फंक्शन के नाम के पहले इस keyword का प्रयोग किया जाता है।

प्रायवेट सदस्य फंक्शन: एक प्रायवेट सदस्य फंक्शन केवल उसी वर्ग के किसी अन्य सदस्य फंक्शन द्वारा प्रयोग किया अथवा बुलाया जा सकता है । किसी ऑब्जेक्ट के द्वारा dot operator. की सहायता से नहीं बुलाया जा सकता है। वर्ग में घोषित किए गए स्टेटिक आंकड़ा सदस्य का मान इस वर्ग के पहले ऑब्जेक्ट के बनने के साथ ही शून्य हो जाता है और अब इसमें कोई अन्य मान initialize नहीं किया जा सकता है। पूरे वर्ग के लिए स्टेटिक ऑकड़ा सदस्य के मान की एक copy बनती है जो पूरे प्रोग्राम में इसी वर्ग के एक अथवा अधिक ऑब्जेक्ट प्रयोग कर सकते हैं। स्टेटिक ऑकड़ा सदस्य का प्रयोग सामान्यतः तब किया जाता है जब हमें किसी मान को सम्पूरण वर्ग में समान रखना होता है।

वर्ग में सदस्य फंक्शन का प्रयोग: स्टेटिक सदस्य फंक्शन केवल इसी वर्ग में घोषित किए गए स्टेटिक वेरीयेबल तक ही पहुंच सकते हैं अर्थात् access कर सकते हैं। स्टेटिक सदस्य फंक्शन को वर्ग के नाम से बुलाया जाता है । ऑब्जेक्ट के नाम से नहीं। उदाहरण: 
class-name :: function-name;

Friend Functions: यह फंक्शन उस परिस्थिति में उपयोग होता है जब दो वर्ग किसी particular function dks share करते हैं। किसी फंक्शन को friend बनाना के लिए उस फंक्शन को friend की-वर्ड से वर्ग के अन्दर घोषित करते हैं। इसका कार्यक्षेत्र उस वर्ग में नहीं रहता जिसमें वह friend. की तरह declared है। इस फंक्शन को ऑब्जेक्ट के द्वारा नहीं बुलाया जा सकता है। इसको हम सामान्य फंक्शन की तरह बिना किसी ऑब्जेक्ट की सहायता बुला सकते हैं। इसे वर्ग के public या private भाग में declared किया जा सकता है। प्रायः इसमें objects argument के रूप में होते हैं।

स्थिरांक सदस्य फंक्शन (Constant Member Function): यदि किसी सदस्य फंक्शन से आंकड़ा सदस्य मान के मान में कोई परिवर्तन करने का कार्य नहीं किया जाता को इस प्रकार के सदस्य फंक्शन के लिए const की-वर्ड का प्रयोग किया जाता है। जैसे: 
void mul (int , int) const;
void get_balance () const;

ओपरेटर ओवरलोडिंग: प्रोग्रामिंग भाषा C++ का एक महत्वपूर्ण गुण ऑपरेटर ओवरलोडिंग हैं। इसे Compile Type Polymorphism भी कहा जाता है। ऐसी प्रक्रिया जो एक ऑपरेटर को उसकी अपनी identity गवाये बिना कोई नया विशेष अर्थ प्रदान करती है ऑपरेटर ओवरलोडिंग कहलाती है। ऑपरेटर ओवरलोडिंग प्रोग्रामिंग भाषा C++ के ऑपरेटर को नयी परिभाषा प्रदान करती है इस पद्धति का प्रयोग करके हम अपनी नयी भाषा बना सकते हैं। ऑपरेटर ओवरलोडिंग निम्नांकित ऑपरेटर के अतिरिक्त C++ में प्रयोग होने वाले सभी ऑपरेटर को नयी भाषा प्रदान करने की सुविधा प्रदान करती है।
Class member access operator (. , .*)
Scope resolution operator ( :: )
sizeof operator
Conditional operator ( ?: )

ऑपरेटर को ओवरलोड करने के लिए परिभाषित करना: किसी भी ऑपरेटर को ओवरलोड करने के लिए सबसे पहले वर्ग से उस ऑपरेटर का सम्बन्ध तथा जिस ऑपरेटर को ओवरलोड कर रहे हैं उसका नाम बताना पड़ता है यह कार्य एक विशेष फंक्शन operator के माध्यम से होता है। Operator function का सामान्य रूप:
return type classname :: operator (op-arglist)
{
Function body //task defined
}

विशेषताऐं: फंक्शन operator ( ) के लिए एक विशेष बात यह है कि इसे सदस्य फंक्शन के रूप में प्रयोग करते हैं अथवा friend फंक्शन के रूप में परिभाषित करते हैं। Friend फंक्शन के रूप में यह unary operator के लिए यह एक argument तथा binary operator के लिए दो argument लेता है। सदस्य फंक्शन के रूप में यह unary operator के लिए कोई argument नहीं लेता तथा binary operator के लिए यह argument लेता है।

ओवरलोडिंग की प्रक्रिया निम्नांकित चरणों में की जाती है: सबसे पहले ऐसे वर्ग को घोषित किया जाता है जिसमें वह आंकड़ा प्रकार परिभाषित होता है जिसका प्रयोग ओवरलोडिंग की प्रक्रिया में किया जाना है। वर्ग के public के भाग में operator op ( ) फंक्शन को घोषित किया जाता है यह friend प्रकार का भी हो सकता है। अब वांछित कार्य कराये जाने के लिए operator op ( ) फंक्शन को परिभाषित करना। ओवरलोडिंग ऑपरेटर को निम्नानुसार बुलाया जा सकता है।
op x or x op //unary operation
x op y // binary operation

ऑपरेटर ओवरलोड करने के नियम:  
  • केवल उपलब्ध ऑपरेटर को ओवरलोड किया जा सकता है नये ऑपरेटर नहीं बनाये जा सकते हैं।
  • ओवरलोड ऑपरेटर के पास प्रयोगकर्ता द्वारा परिभाषित एक operand होना चाहिए। 
  • किसी ऑपरेटर के मुलस्वभाव में कोई परिवर्तन नहीं किया जा सकता है। 
  • ओवरलोडेड ऑपरेटर अपने मूल ऑपरेटर के सूत्र का ही प्रयोग करते हैं। 
  • कुछ ऑपरेटर को ओवरलोड नहीं किया जाता है। 
  • कुछ ऑपरेटर को friend फंक्शन बनाकर ओवरलोड नहीं किया जा सकता है। 
  • जब हम binary operator को सदस्य फंक्शन बनाकर ओवरलोड करते हैं तब बांयी ओर वाले operand को सम्बोधित वर्ग का ऑब्जेक्ट होना आवश्यक होता है। 
  • Argument value को परिवर्तित करने का प्रयास नहीं करना चाहिए। 
  • Binary arithmetic operator जैसे +,-,* आदि explicity value return करने चाहिए।
उत्तराधिकार (Inheritance): Reusability वस्तु केन्द्रित प्रोग्रामिंग की सबसे महत्वपूर्ण विशेषता है कि यह सदैव ही अच्छा होता है कि किसी वस्तु को बार-बार बनाने के स्थान पर पहले बनी वस्तु का पुनः प्रयोग किया जा सकें जिसके द्वारा स्मृति तथा समय की बचत, निराशा कम करना तथा विश्वस्नीयता बढ़ाना संभव है. एक नये वर्ग को पुराने वर्ग से प्राप्त करना अथवा व्युत्पन्न करना तथा पुराने वर्ग की समस्त property को पुनः प्रयोग करना ही उत्तराधिकार कहलाता है। Old Class को आधार वर्ग (Base Class) कहते हैं। New Class को व्युत्पन्न वर्ग (Derived Class) कहा जाता है। जब केवल एक ही आधार वर्ग पर आधारित नया व्यूत्पन्न वर्ग बनाया जाता है तो इसे single inheritance कहा जाता है। जब एक नये वर्ग को एक से अधिक पृथक-पृथक उत्तराधिकार प्रदान किया जाता है तो इसे multiple inheritance कहते हैं।

व्युत्पन्न वर्ग को घोषित एवं परिभाषित करना (Derived Classes): व्युत्पन्न वर्ग (Derived Classes) को घोषित एवं परिभाषित करने का कार्य इसके आधार वर्ग से संबंध की व्याख्या के साथ-साथ इसकी अपनी विस्तृत जानकारी देकर किया जाता है।
class derived-class-name : visibility mode base-class-name
{
members of derived class;
};

Private Member को Inherit करना: Private Member को Inherit करने के लिए C++ के नया visibility mode जिसे protected कहा जाता है प्रदान किया है। वर्ग के यदि किसी सदस्य को protected घोषित कर दिया जाए तो यह सदस्य व्युत्पन्न वर्ग के सदस्य फंक्शन द्वारा सीधे-सीधे access किये जा सकते हैं। तथा कोई नया वर्ग इससे व्युत्पन्न भी हो सकता है। यह बाह्य फलन के द्वारा access नहीं हो सकता हैं। इस प्रकार एक वर्ग में निम्नाकित तीन भाग हो सकते हैं:
class alpha
{
private : //optional
................. // visible to its member functions
................. // within its class
protected :
................ //visible to member functions
................ //of its own and derived class
public :
................. //visible to all the functions in the प्रोग्राम

एक्शेप्शन हैण्डलिंग (Exception Handling): यह यदा कदा ही होता है कि कोई प्रोग्राम एक बार में ही सही तरीके से कार्य करे। प्रोग्राम में बहुत सारी गल्ती (bugs) होते हैं। लॉजिकल गलती एवं सिन्टेक्स गलती के सामान्य प्रकार हैं जो सामान्य रूप से पाए जाते हैं। लॉजिकल गलती समस्या एवं उसके समाधान को सही तरीके से न सोचने के कारण होती है। सिन्टेक्स गलती प्रोग्रामिंग भाषा की सही तरीके से न समझने के कारण होती है। इन गलतियों के अलावा भी प्रोग्रामिंग में कुछ समस्याएं आती है। जिन्हें Exception के नाम से जाना जाता है Exception इन टाइम पर होने वाली गलती या अनियत स्थिति है जो प्रोग्राम के (Execution) कार्यान्वित होने पर होती है। जैसे किसी भी नम्बर को 0 से भाग देना या Array की सीमा उलंघन करना आदि। Exception handling C++ भाषा का भाग नहीं है यह नई विशेषता है जो कि C++ भाषा में जोडी गई वर्तमान में सभी कम्पाइलर इस विशेषता को समर्थन करते हैं। Exception handling की क्रियाविधि का प्रमुख उददेश्य exception परिस्थितियों पर exception का पता लगाना एवं उसकी जानकारी देना है जिससे सही निर्णय लिया जा सके । Exception handling में निम्न कार्यों को समाहित किया गया है
  • समस्या को पाना।
  • गलती घटने की जानकारी देना। 
  • गलती सूचनाओं को प्राप्त करना। 
  • सही निर्णय लेना।
एक्सेप्षन हेन्डलिंग क्रिया विधि में मुख्य रूप से तीन की-वर्ड Try, Catch तथा Throw का उपयोग किया जाता है। Try इस ब्लॉक अन्दर उन कोड को रखा जाता है जिसे गलती उत्पन्न होने की सम्भावना रहती है। यदि कोई गलती उत्पन्न होती है तो वह Try ब्लॉक के अन्दर Throw स्टेटमेंट के द्वारा Throw की जाती है Catch ब्लाक की-वर्ड Catch के द्वारा परिभाषित होता है। (Catch) यह ब्लाक try ब्लाक के द्वारा throw किए गए गलती को catch करता है । तथा उसके अनुसार सही निर्णय लेता है।