শ্রেণী এবং কাঠামোর মধ্যে পার্থক্য

Anonim

শ্রেণী এবং কাঠামোর মধ্যে পার্থক্য বোঝার আগে, আমরা তাদের সাথে জড়িত কয়েকটি মৌলিক ধারণাগুলি সম্পর্কে জানতে হবে। ধারণার একটি বোঝার ছাড়া, এটি দুটি মধ্যে পার্থক্য বোঝা কঠিন।

ক্লাস ও অবজেক্ট কী:

এগুলি অবজেক্ট অব ওরিয়েন্টেড প্রোগ্রামিং এর সাথে সম্পর্কিত দুইটি গুরুত্বপূর্ণ ধারণা এবং অন্যান্য ফাংশনগুলির সাথে কাজ করা ফাংশন এবং ডাটা তৈরি করার জন্য তারা ভিত্তি করে গঠন করে। একটি ভাল বোঝার জন্য, আমরা একটি বাস্তব জীবন উদাহরণ থেকে এটি সহরকম করতে পারেন। একটি ক্লাস একটি দোকান হিসাবে বিবেচনা করা যেতে পারে, এবং একটি অবজেক্ট ব্যক্তিগত, বিশেষত যেমন মুদি দোকান, স্টেশনারি, ফল, ইত্যাদি হতে পারে। সমস্ত বস্তুর মূল শ্রেণীর সাধারণ বৈশিষ্ট্য ভাগ - দোকান - এবং ঘুরে, বস্তুগুলির নিজস্ব নিজস্ব বৈশিষ্ট্য যেমন একটি নির্দিষ্ট নকশা, আলো ইত্যাদি থাকতে পারে। বস্তুর মাধ্যমে আমরা আসলে বর্গ ব্যবহার করতে পারি; তারা একটি বর্গ দৃষ্টান্ত গঠন।

ক্লাসের সিনট্যাক্স

ক্লাস স্টোর {

পাবলিক স্ট্রিং জিনিস;

পাবলিক স্ট্রিং নকশা;

}

একটি বস্তুর সিনট্যাক্স

স্টোর মুদি = নতুন দোকান ();

স্টোর স্টেশনরি = নতুন স্টোর ();

একটি কাঠামো কি?

একটি স্ট্রাক শুধুমাত্র তথ্য অন্তর্ভুক্ত, এবং সেইজন্য এটি স্ট্রাক্ট বস্তুর মাধ্যমে পৃথক তথ্য প্রয়োজনীয়তা framing সহায়ক। একটি বর্গ থেকে ভিন্ন, এটি ফাংশন অভাব। এখানে এর সিনট্যাক্স:

--২ ->

স্ট্রাক্ট গ্রীসেসারেন্টস {

চারটি প্রবেশদ্বার_নাম [50];

int entrance_size;

মুদি দোকান;

সমস্ত দোকান পৃথক নাম এবং মাপ সঙ্গে স্ট্রাক্ট 'প্রবেশদ্বার' ব্যবহার করতে পারেন।

উত্তরাধিকার কি?

এভাবেই একটি পুত্র তার পিতার সম্পদের উত্তরাধিকারী হয় এবং তারপরেও ছেলে তার নিজের কিছু অন্যান্য সম্পদও যোগ করতে পারে। ক্লাসটি মূল শ্রেণি বা একটি প্রাপ্ত শ্রেণি হতে পারে, যার মধ্যে পূর্বেরটি পরবর্তীতে আংশিকভাবে গঠিত হতে পারে। প্রাপ্ত শ্রেণিতে তার জন্য কিছু অন্যান্য বৈশিষ্ট্য যোগ করা হয় যা মূল শ্রেণী থেকে পায়। আমরা উপরের উদাহরণ বিবেচনা করে, মুদি দোকান এখনও একটি নির্দিষ্ট মুদি দোকান থেকে উদ্ভূত হতে পারে, যেমন XYZ মুদি দোকান হিসাবে।

এখন আমরা মৌলিক ধারণার সাথে পরিচিত, আমরা ক্লাস এবং স্ট্রাক্টের মধ্যে প্রকৃত পার্থক্য নিয়ে যেতে পারি।

তারা কিভাবে পার্থক্য করে?

  • পুনরায় ব্যবহারযোগ্যতা: ক্লাসগুলি মৌলিক কাঠামো গঠন করে, তাদের পুনরায় ব্যবহার করা যেতে পারে; Structs, তবে, নির্দিষ্ট বৈশিষ্ট্য সঙ্গে পৃথক উপাদান, তাই তারা পুনরায় ব্যবহার করা যাবে না। উদাহরণস্বরূপ, মুদি দোকানের দোকানটি যেকোনো প্রকারের মুদি দোকানের জন্য ব্যবহার করা যেতে পারে, তবে স্ট্রাক্ট মুদি-ইন্ট্রান্সটি শুধুমাত্র সেই জন্যই নির্দিষ্ট এবং অন্য ক্লাসগুলিতে পুনরায় ব্যবহার করার কোনও ইঙ্গিত নেই।
  • দৃশ্যমানতা: একটি ক্লাসের সমস্ত ফাংশনটি তার অবজেক্টগুলিতে সর্বজনীনভাবে উপলব্ধ।উদাহরণস্বরূপ, আমাদের ক্লাস 'স্টোর' এর অধীনে 'জিনিসগুলি' নামে একটি ফাংশন রয়েছে। ফাংশন 'জিনিসগুলি' সমস্ত বস্তুর জন্য দৃশ্যমান, যেমন 'মুদি দোকান,' স্টিরিসার দোকান 'ইত্যাদি। স্ট্রাক্টগুলির সাথে এই দৃশ্যমানতা সম্ভব নয় কারণ স্ট্রাক্টের তথ্য নিজেই সীমাবদ্ধ এবং অন্যান্য স্ট্র্যাটেবলগুলিতে দৃশ্যমান নয়। বিষয়গুলি পরিষ্কার করতে, আমরা বলতে পারি যে 'মুদি-ইন্ট্রান্স' এর ডেটা অন্য সব দোকানে প্রকাশ্যে দৃশ্যমান নয়।
  • মান দ্বারা রেফারেন্স এবং পাস দ্বারা পাস: রেফারেন্স দ্বারা পাস শুধুমাত্র ফাংশন যাও প্রকৃত তথ্য না মেমরি অবস্থান পাঠানো হয়। এর মানে হল যে যখনই মান পরিবর্তন হবে, পরিবর্তনটি সংশ্লিষ্ট ফাংশনে প্রতিফলিত হয়। মান দ্বারা পাস, পরিবর্তে, ফাংশন মান প্রেরণ করা হয়। এই ক্ষেত্রে, এটি পাঠানো পরে মান পরিবর্তন একটি ফাংশন মধ্যে প্রতিফলিত হবে না। ক্লাস রেফারেন্স দ্বারা পাস পাস করে, এবং স্ট্রোল পাস মান ব্যবহার করে।
  • উত্তরাধিকার: ক্লাসগুলি উপ-শ্রেণী গঠনের জন্য উত্তরাধিকারসূত্রে উত্তীর্ণ হতে পারে, তবে স্ট্রোকগুলি উত্তরাধিকারকে ব্যবহার করতে পারে না। উদাহরণস্বরূপ, ক্লাসের দোকানটি তার কার্যগুলি উপ-শ্রেণীর 'মুদি দোকান' এ দেয়। কিন্তু স্ট্রাক্ট 'গ্রিস_েন্ট্রেন্স' কোন ফাংশন উত্তরাধিকার লাভ করতে পারে না। আমরা বলতে পারি যে এখানে sub-struct মত কোন ধারণা নেই।
  • ডিফল্ট দৃশ্যমানতা: শ্রেণির সকল সদস্যকে ডিফল্টভাবে ব্যক্তিগত সংস্থার হিসাবে রাখা হয়, তবে একটি স্ট্রাকের সদস্যরা ডিফল্টভাবে পাবলিক সংস্থার হিসাবে রাখা হয়।
  • একটি খালি ক্লাস এবং স্ট্রাকের আকার: ক্লাসটি 1 বাইটের আকার ব্যবহার করে এমনকি যখন এটি খালি থাকে, যখন স্ট্রাকটি কোনও স্মৃতি ব্যবহার করে না যখন এটি খালি থাকে। এর অর্থ আমরা বলতে পারি যে খালি স্ট্রাক্টের আকার 0 বাইট সমান।
  • আবর্জনা সংগ্রহ: শ্রেণির সাথে আবর্জনা সংগ্রহ করা সম্ভব, কারণ তারা রেফারেন্স দ্বারা পাস ব্যবহার করে। অতএব, এটি একস্থানে পরিষ্কার করা সহজ, যেখানে ডাটা সংরক্ষণ করা হয়। অন্যদিকে, স্ট্রাক্টের সাথে আবর্জনা সংগ্রহ করা সম্ভব নয়, কারণ এটি মান দ্বারা পাস করে এবং ডেটা বিভিন্ন অবস্থানে ছড়িয়ে পড়ে।
  • মেমরি ম্যানেজমেন্ট: ক্লাস ক্লাসকে আবর্জনা সংগ্রহের অনুমতি দেয়, তবে মেমরি ম্যানেজমেন্টও কার্যকর। যাইহোক, এটি Structs সঙ্গে যে কার্যকর নয়
  • কনস্ট্রাক্টর: একটি কনস্ট্রাক্টর সাধারণত নির্দিষ্ট নির্দিষ্ট মানের সাথে ক্লাস আরম্ভ করে। আমরা এমন কিছু দেখতে পারি যা মূল্যের সাথে শুরু করা হয়েছে। যদি একটি নতুন শ্রেণী তৈরি করতে হয় তবে কন্সট্রাকটরকে সেই উদাহরণের জন্য মেমরি বরাদ্দ করতে বলা হয়। একটি কন্সট্রাকটর কল করার সময় আমরা এমনকি আর্গুমেন্ট হিসাবে মান পাস করতে পারি। আসুন আমরা এখন আমাদের প্রকৃত আলোচনায় আসি। ক্লাস সকল ধরনের কন্সট্রাকটরগুলিকে অনুমতি দেয়, যেমন আর্গুমেন্ট সহ বা ছাড়া, যখন structs শুধুমাত্র আর্গুমেন্টগুলির সাথে কনস্ট্রাক্টরকে অনুমতি দেয়, i। ঙ। প্যারামিটারাইজড কনস্ট্রাক্টর
  • ধ্বংসকর্তা: যখনই আমরা একটি ক্লাস একটি দৃষ্টান্ত মুছে ফেলার প্রয়োজন একটি ধ্বংসক বলা হয়। ধ্বংসাত্মক, পরিবর্তে, যে উদাহরণ মুছে ফেলে এবং মেমরি মুক্ত করে। একটি শ্রেণী একটি ধ্বংসক ব্যবহার করতে পারে, একটি স্ট্রাক করতে পারে না।
  • সদস্য ভেরিয়েবলের সূচনা: ক্লাসে, আমরা সরাসরি সদস্য ভেরিয়েবল ইনিশিয়াল করতে পারি; স্ট্রাক্টস যেমন একটি আরম্ভ একটি সম্ভব নয়।
  • বস্তুর ক্রিয়েশন: ক্লাসে বস্তুর সৃষ্টির জন্য সাধারণ সিনট্যাক্স হলো:

ডেমো obj = নতুন ডেমো ();

এর মানে হল আমরা একটি ক্লাসের বস্তু তৈরি করার সময় 'নতুন' শব্দটি ব্যবহার করতে হবে।স্ট্রাক্টের বস্তু তৈরি করার সময় এটির প্রয়োজন হয় না। শুধু তাদের বাক্য গঠন দেখুন:

ডেমো obj;

এটি 'নতুন' শব্দ ছাড়াও পুরোপুরি কাজ করে।

শ্রেণী এবং কখন কাঠামো ব্যবহার করতে হবে?

শ্রেণিসমূহ তথ্য এবং কার্যগুলি একত্রিত করতে আরো নমনীয় হয়, যখন বস্তুগুলি ব্যবহার করা জটিল এবং বড় হয় তখন আমরা এটির জন্য যেতে পারি। আমাদের উদাহরণে, একটি ম্যাল আরও ভাল পদ্ধতিতে সিস্টেমটি প্রকাশ করার জন্য ক্লাস 'স্টোর' ব্যবহার করতে পারে। তবে, স্ট্রোকগুলি ছোট অবজেক্টগুলিতে সীমাবদ্ধ থাকে, যেহেতু তারা ক্লাসের চেয়ে তুলনামূলকভাবে কম কার্যকর। অতএব, যদি আপনি নিজের একটি দোকান ডিজাইন, Structs ভাল পছন্দ হয়।

কিভাবে একটি শ্রেণী এবং উপসর্গ একটি স্ট্রাকচার রূপান্তর?

আপনি স্ট্রাক্ট টু এ ক্লাস রূপান্তর করার জন্য এবং 'বিপরীতমুখী' শব্দগুলি শব্দটি শুনেছেন এবং এর বিপরীত। যদিও রূপান্তরটিতে আমাদের সাহায্য করার জন্য এইগুলি কার্যকরী প্রক্রিয়াগুলি, তবে তাদের সাবধানতা অবলম্বন করা উচিত। এই সরাসরি মেমরি অবস্থান প্রভাবিত করে, আমাদের সিস্টেমের কর্মক্ষমতা একটি বিশাল প্রভাব আছে। উপরন্তু, এটি আবর্জনা সংগ্রহ প্রক্রিয়া প্রভাবিত করে এবং সামগ্রিক সিস্টেম অদক্ষতা মধ্যে ফলাফল। অতএব, শুধুমাত্র প্রয়োজন হলে এই রূপান্তরগুলি ব্যবহার করুন।

ট্যাবুলার আকারে উপরে বর্ণিত পার্থক্যগুলি দেখি।

s। ধারণার পার্থক্য
শ্রেণী কাঠামোবদ্ধ
1 পুনরায় ব্যবহারযোগ্যতা সম্পূর্ণরূপে পুনরায় ব্যবহারযোগ্য পুনরায় ব্যবহারযোগ্য নয়
2 দৃশ্যমানতা < একটি ক্লাসের সমস্ত ফাংশন তার বস্তুর জন্য দৃশ্যমান হয় একটি স্ট্রাক্টের বস্তুর তথ্য একই স্ট্রাক্টের অন্যান্য বস্তুর জন্য দৃশ্যমান নয় 3
রেফারেন্স দ্বারা পাস এবং মান দ্বারা পাস > রেফারেন্স দ্বারা পাস ব্যবহার করে মূল্য 4 উত্তরাধিকার
দ্বারা উপভোগ করে একটি শ্রেণীতে তার উপসর্গ দ্বারা উত্তরাধিকারসূত্রে পাওয়া যায়; উত্তরাধিকার উত্তরাধিকারের অনুমতি দেয় না 5 ডিফল্ট দৃশ্যমানতা
ক্লাসের সকল সদস্য ডিফল্টভাবে ব্যক্তিগত হয় একটি স্ট্রাকের সমস্ত সদস্য ডিফল্টরূপে সর্বজনীন 6 খালি যখন আকার
খালি ক্লাসের আকার 1 বাইট খালি স্ট্রাকের আকার 0 বাইট 7 আবর্জনা সংগ্রহ
রেফারেন্স দ্বারা পাস ব্যবহার করে, আবর্জনা সংগ্রহ সম্ভব এটি মূল্য দ্বারা পাস ব্যবহার করে, আবর্জনা সংগ্রহ করা সম্ভব নয় 8 স্মৃতি ব্যবস্থাপনা
আবর্জনা সংগ্রহের প্রক্রিয়াটি সহজে কার্যকর স্মৃতি ব্যবস্থাপনায় আবর্জনা সংগ্রহের অভাব দুর্বল মেমরি ম্যানেজমেন্ট 9 কনস্ট্রাক্টর
সব ধরনের কন্সট্রাক্টরকে অনুমতি দেয়, যেমন প্যারামিটার সহ বা ব্যতীত শুধুমাত্র প্যারামিটারাইজড কন্সট্রাক্টর 10 ডাস্ট্রাক্টর
এটি ব্যবহার করতে পারে পারবেন না এটি ব্যবহার করুন 11 সদস্য ভেরিয়েবল প্রারম্ভিকীকরণ
সদস্য ভেরিয়েবলের সরাসরি প্রারম্ভিকতা অনুমোদন করে সদস্য ভেরিয়েবলের সরাসরি শব্দ আরম্ভের অনুমতি দেয় না 12 < বস্তুর ক্রিয়েশন বস্তু সৃষ্টি করার সময় 'নতুন' শব্দটি ব্যবহার করা আবশ্যক;
বস্তুর সৃষ্টির সময় 'নতুন' শব্দটি ব্যবহার করতে ঐচ্ছিক নয় 13 কখন ব্যবহার করা হবে? বৃহত্তর এবং জটিল বস্তুর জন্য উত্তরাধিকারের প্রয়োজন যেখানে উত্তরাধিকার প্রয়োজন হয়
ছোট এবং সহজ বস্তুর জন্য উত্তম যেখানে উত্তরাধিকার কম গুরুত্বের হয় আমরা ক্লাস এবং স্ট্র্টের মধ্যে সমস্ত পার্থক্যকে প্রায় আচ্ছাদিত করেছি, এবং যদি আপনি অনুভব করেন যে কিছু অনুপস্থিত, তবে দয়া করে আমাদের জানান। আসুন একসঙ্গে শিখতে এবং যে জ্ঞান অধিকাংশ করতে!