वर्ग आणि रचना यांच्यातील फरक. क्लास आणि स्ट्रक्चरमध्ये फरक समजून घेण्यापूर्वी
वर्ग आणि रचना यांच्यातील फरक समजून घेण्यापूर्वी, आपण त्यांच्याशी संबंधित काही मुलभूत संकल्पना माहित असणे आवश्यक आहे. संकल्पनांच्या समस्येशिवाय, दोघांमधील फरक समजून घेणे अवघड आहे.
वर्ग आणि ऑब्जेक्ट म्हणजे काय:
हे ऑब्जेक्ट ओरिएन्टेड प्रोग्रामींगशी संबंधित दोन महत्वाचे संकल्पना आहेत, आणि ते इतर कार्यांकरता काम करणार्या आणि डेटा तयार करण्यासाठी आधार बनवतात. चांगल्या प्रकारे समजून घेण्यासाठी, आम्ही ते एका वास्तविक जीवनातील उदाहरणासह परस्पर संबंद्ध करू शकतो. वर्ग हा एक स्टोअर म्हणून मानला जाऊ शकतो आणि ऑब्जेक्ट व्यक्ती, विशिष्ट स्टोअर जसे कि किराणा, स्टेशनरी, फळ इत्यादी असू शकते. सर्व ऑब्जेक्ट्स मुख्य श्रेणीतील सामान्य गुणधर्म शेअर करतात - स्टोअर - आणि त्याउलट, ऑब्जेक्ट्सची स्वतःची विशिष्ठ गुणधर्म असू शकतात जसे विशिष्ट डिझाइन, लाइटिंग इत्यादी. ऑब्जेक्टच्या माध्यमातून आपण वर्गाचा उपयोग करू शकतो. ते एका वर्गाचे उदाहरण देतात.
कक्षाचे सिंटॅक्स
वर्ग स्टोअर {{ सार्वजनिक स्ट्रिंग गोष्टी;
सार्वजनिक स्ट्रिंग डिझाइन;
}
ऑब्जेक्टचे सिंटॅक्स
स्टोअर किराणा = नवीन स्टोअर ();
स्टोअर स्टेशनरी = नवीन स्टोअर ();
स्ट्रक्चर म्हणजे काय?
एक संरचनेत फक्त डेटा समाविष्ट आहे, आणि म्हणूनच स्ट्रक्चर्स ऑब्जेक्टद्वारे व्यक्तिगत डेटा आवश्यकता तयार करण्यामध्ये ते उपयोगी ठरते. एका वर्गापेक्षा वेगळे, त्यात फंक्शन्स नसतील. येथे त्याचे वाक्यरचना आहे:
चार प्रवेशद्वार_नाव [50];
पूर्ण प्रवेशद्वार_आकार; <} किराणामाल
सर्व स्टोअर व्यक्तिगत नावे आणि आकारांसह स्ट्रक्चर 'प्रवेशद्वार' वापरू शकतात. < वारसा म्हणजे काय?
तो एक पुत्र आपल्या वडिलांच्या संपत्तीचा वारसा कसा करतो त्याप्रमाणेच आणि मुलगा सुद्धा त्याच्या स्वतःच्या इतर काही गोष्टी जोडू शकतो. वर्ग एकतर एक बेस क्लास किंवा एक डेरिवेट क्लास असू शकतो, ज्यामध्ये नंतरचे नंतरचे स्वरूप तयार करण्यासाठी आधार म्हणून घेतले जाऊ शकते. मूलभूत वर्गातून जे मिळते त्याव्यतिरिक्त साधित वर्ग स्वतःसाठी काही इतर गुणधर्म जोडतो. जेव्हा आपण वरील उदाहरणावर विचार करतो, तेव्हा किरकोळ स्टोअर अजूनही विशिष्ट किराणा दुकानापर्यंत पोहचता येते, जसे की एक्सवायझेड किराणा दुकान.
आता आपण मूलभूत संकल्पनांशी परिचित आहोत, तर आपण क्लास आणि स्ट्रक्चर दरम्यान प्रत्यक्ष फरक करू शकतो.
ते वेगळे कसे करतात?
पुन्हा उपयोगिता:वर्ग जसे मूलभूत रूपरेषा तयार करतात, त्यांचा पुन्हा वापर केला जाऊ शकतो; फूड्स, तथापि, विशिष्ट गुणधर्मांसह वैयक्तिक घटक असतात, म्हणून त्यांचा पुन्हा वापर केला जाऊ शकत नाही. उदाहरणार्थ, किरकोळ किराणा दुकानाचा उपयोग कोणत्याही प्रकारच्या किराणा दुकानासाठी केला जाऊ शकतो, परंतु ढाल किराणा-गणक हे केवळ त्याकरता विशिष्ट आहे आणि इतर वर्गांमध्ये पुन्हा वापरण्यात काहीच अर्थ नाही.
दृश्यमानता:
- श्रेणीतील सर्व कार्ये त्याच्या ऑब्जेक्ट्ससाठी सार्वजनिकरित्या उपलब्ध आहेत.उदाहरणार्थ, आमच्याकडे 'क्लास' स्टोअर अंतर्गत 'चीज' नावाचा फंक्शन आहे फंक्शन्स 'चीज' त्याच्या सर्व वस्तूंना दृश्यमान आहे, जसे की 'किराणा दुकानातील', स्टेशनरी दुकान 'इत्यादी. अशा दृष्यस्थानाची रचना शक्य नाही कारण स्ट्रक्चरचा डेटा स्वतःच मर्यादित आहे आणि अन्य स्ट्रेक्ट्सना दृश्यमान नाही. गोष्टी स्पष्ट करण्यासाठी, आम्ही असे म्हणू शकतो की 'किराणागृहातील माहिती' अन्य सर्व स्टोअरमध्ये सार्वजनिकरित्या दृश्यमान नाही. मूल्यानुसार संदर्भ आणि पासानुसार पास: < संदर्भानुसार पास करणे केवळ स्मृती स्थान पाठवित आहे, नाही तर कार्यांकरता प्रत्यक्ष डेटा. याचा अर्थ असा की जेव्हा मूल्य बदलते, बदल संबंधित कार्यांमध्ये प्रतिबिंबित होतो. मूल्य द्वारे पास, अवलंबून, फंक्शन मूल्य फक्त पाठवत आहे. या प्रकरणात, पाठविल्यानंतरच्या मूल्यामध्ये बदल कार्यामध्ये प्रतिबिंबित होणार नाही. क्लास संदर्भानुसार पास वापरते, आणि स्ट्रट पास मूल्य वापरते. < वारसा: < वर्गांना आणखी उप-वर्ग बनविल्या जाऊ शकतात, परंतु संस्कार वारसा उपयोगात आणू शकत नाहीत. उदाहरणार्थ, क्लास स्टोअर आपले कार्य उप-श्रेणी 'किराणा दुकान' मध्ये देते पण स्ट्रक्चर 'ग्रॉसेस_एन्ट्रन्स' कोणत्याही कामाचे वारस करू शकत नाही. आपण असे म्हणू शकतो की येथे उप-संरचना सारखी कोणतीही संकल्पना नाही.
- डीफॉल्ट दृश्यमानता: श्रेणीतील सर्व सदस्यांना डीफॉल्टनुसार खाजगी संस्था म्हणून ठेवले जाते, परंतु एक स्ट्रक्चरचे सदस्य डिफॉल्टनुसार सार्वजनिक संस्था म्हणून ठेवले जातात.
- रिक्त वर्ग आणि रचनाचा आकार: < वर्ग एक रिकामी जागा असताना 1 बाइटचा आकार वापरतो, पण जेव्हा तो रिक्त असेल तेव्हा रचना कधीही कोणतीही मेमरी वापरत नाही. याचा अर्थ आपण असे म्हणू शकतो की रिकामा पट्टीचा आकार 0 बाइट्स इतका असतो. कचरा संकलन:
- क्लासेससह कचरा संकलन शक्य आहे, कारण ते संदर्भानुसार पास वापरतात. त्यामुळे डेटा संग्रहित केला जातो त्या स्थानावरील सफाई करणे सोपे होते. दुसरीकडे, स्ट्रक्चरमध्ये कचरा संकलन शक्य नाही, कारण ते मूल्य द्वारे मूल्य वापरते आणि डेटा वेगळ्या ठिकाणी पसरलेला असतो. मेमरी व्यवस्थापनः
- क्लास कचरा संकलनास परवानगी देत असल्याने, स्मृती व्यवस्थापन देखील प्रभावी आहे; तथापि, हे स्ट्रक्कासह प्रभावी नाही. बांधकाम करणारा:
- कन्स्ट्रक्टर सामान्यतः विशिष्ट निर्दिष्ट केलेल्या मूल्यांसह वर्ग आरंभ करतो. आम्ही मूल्यांकनासह सुरु केलेल्या अशा काहीतरी पाहू शकतो. जर नवीन वर्ग तयार केला गेला असेल, तर त्याप्रकारे कन्स्ट्रक्टरला मेमरीचे वाटप करण्यासाठी म्हणतात. कन्स्ट्रक्टर कॉल करताना आपण व्हॅल्यूज वितर्क म्हणून सुद्धा पास करू शकतो. आता आपण आपल्या वास्तविक चर्चेत जाऊया. क्लासेस सर्व प्रकारचे कंत्राटदारांना परवानगी देतात, जसे की आर्ग्यूमेंटसह किंवा त्याशिवाय, तर स्ट्रक्चर्स कन्स्ट्रक्टरला आर्ग्युमेंट्स सह परवानगी देतात, i. ई. पॅरामिटरायझर कन्स्ट्रक्टर. विध्वंसक:
- जेव्हा एखादी क्लासची घटना हटवायची असते तेव्हा डिस्ट्रक्टर म्हणतात. डिस्ट्रक्टर, त्याउलट, त्या घटनेस हटवितो आणि मेमरी मुक्त करतो. एक वर्ग एखाद्या नाशकाचा वापर करू शकतो, तर एक स्ट्रक्चर नाही. सदस्य व्हायरेबल इनिशिअलाइझेशन: < क्लासेसमध्ये, आम्ही सदस्यांच्या व्हेरिएबल्सची थेट सुरुवात करू शकतो; अशा एक प्रारंभिक स्ट्रक्चर्स सह शक्य नाही
- निर्मितीची निर्मिती: वर्गांमध्ये ऑब्जेक्ट निर्मितीसाठी सामान्य वाक्यरचना अशी आहे:
- डेमो obj = नविन डेमो (); याचा अर्थ असा की वर्गाचे ऑब्जेक्ट तयार करताना आपण 'नवीन' हा शब्द वापरला पाहिजे.तसंच वस्तू तयार करताना हे आवश्यक नाही फक्त त्यांच्या वाक्यरचना पहा:
- डेमो obj; हे कीवर्ड 'नवीन' शिवाय देखील उत्तम कार्य करते
- क्लासचा वापर केव्हा आणि स्ट्रक्चर कधी वापरावे? < क्लासेस डेटा व फंक्शन एकत्रित करण्यातील लवचिक आहेत म्हणून जेव्हा वापरलेले ऑब्जेक्ट गुंतागुंतीच्या आणि मोठ्या असतात तेव्हा आपण त्यासाठी जाऊ शकता. आमच्या उदाहरणामध्ये, मॉल व्यवस्थेची चांगल्या प्रकारे अभिव्यक्त करण्यासाठी वर्ग 'स्टोअर' वापरू शकतो. अभ्यास, तथापि, लहान वस्तूंसाठी मर्यादित आहेत, कारण ते वर्गापेक्षा तुलनेने कमी प्रभावी आहेत. म्हणूनच, आपण आपल्या स्वत: चे स्टोअर डिझाइन केले तर, Structs एक उत्तम पर्याय आहेत एक वर्ग आणि उपपरिल करण्यासाठी एक स्ट्रक्चंड रूपांतर कसे?
- आपण स्ट्रक्चर टू अ क्लासमध्ये रुपांतर करण्यासाठी 'बॉक्सिंग' आणि 'अनबॉक्सिंग' अटी ऐकल्या असतील, आणि उलट. हे रूपांतर करण्यास मदत व्हावी यासाठी ही प्रभावी प्रक्रिया असली तरी ती सावधगिरीने हाताळली पाहिजे. हे थेट मेमरी स्थाने प्रभावित करते म्हणून आमच्या प्रणालीच्या कामगिरीवर प्रचंड प्रभाव पडतो. याव्यतिरिक्त, ते कचरा संकलन प्रक्रिया प्रभावित करते आणि एकूणच प्रणाली अकार्यक्षमता परिणाम. म्हणूनच जेव्हा आवश्यक असेल तेव्हाच हे रुपांतरे वापरा. आपण टेबलवर स्वरूपात उपरोक्त दिलेल्या मतभेदांकडे पाहू.
एस. नाही
संकल्पना
फरक
वर्ग
रचना
1
पुन्हा उपयोगिता
पूर्णपणे पुन: वापरण्यायोग्य
पुन्हा वापरण्यायोग्य नाही < 2