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


153

শ্রেণি থেকে বিপরীত কোন প্রকারটি কী করে?

(সাধারণ ভাষায়-অজ্ঞানীয় অর্থে)


3
কার্যকর সি ++, আইটেম 19: শ্রেণি নকশাকে টাইপ ডিজাইন হিসাবে বিবেচনা করুন।
ব্রেন্ট 8১

উত্তর:


121

নিম্নলিখিত উত্তরটি গোফ বই ( ডিজাইনের প্যাটার্নস ) থেকে এসেছে

কোনও বস্তুর শ্রেণি নির্ধারণ করে যে কীভাবে বস্তুটি বাস্তবায়ন করা হয়। শ্রেণিটি বস্তুর অভ্যন্তরীণ অবস্থা এবং এর ক্রিয়াকলাপগুলি নির্ধারণ করে।

বিপরীতে, কোনও সামগ্রীর ধরণটি কেবল তার ইন্টারফেসকে বোঝায় - অনুরোধের একটি সেট যা তাতে সাড়া দিতে পারে।

একটি অবজেক্টের অনেক প্রকার থাকতে পারে এবং বিভিন্ন শ্রেণীর বস্তুগুলিতে একই ধরণের থাকতে পারে।

//example in c++
template<typename T> 
const T & max(T const & a,T const &b)
{
return a>b?a:b;  //> operator of the type is used for comparison
}

সর্বাধিক ফাংশনটির জন্য অপারেশন সহ একটি প্রকারের প্রয়োজন হয় > তার নিজস্ব প্রকারের সাথে এটির যে কোনও শ্রেণি ইন্টারফেস করে যে উপরোক্ত প্রয়োজনীয়তা পূরণ করে যে শ্রেণীর জন্য নির্দিষ্ট সর্বাধিক ফাংশন উত্পন্ন করতে ব্যবহার করা যেতে পারে।


56

আমি সবসময় 'শ্রেণি' এবং 'আদিম'গুলির জন্য একটি ছাতা শব্দ হিসাবে একটি' টাইপ 'ভাবি।

int foo; // Type is int, class is nonexistent.

MyClass foo; // Type is MyClass, class is MyClass


7
সুন্দর এবং সংক্ষিপ্ত ব্যাখ্যা :)
আকু

3
ভাল,। নেট এ এটি একই হওয়া উচিত, এমনকি আদিম শ্রেণিগুলি (বা আরও সঠিক স্ট্রাক্ট)।
ডালে

4
@ ডাল: সম্মত, প্রকার এবং শ্রেণীর মধ্যে অন্তর্নিহিত কোনও পার্থক্য নেই। এডির উদাহরণটি খুব সি ++ / জাভা নির্ভর। এটি মোটেই সংজ্ঞা নয়।
রবার্ট গোল্ড

আমি কল্পনা করেছি যে কোনও শ্রেণির তুলনায় 'ধরণের' সংজ্ঞা পাওয়া "কঠিন" হবে। অনেক ভাষার নিজস্ব টাইপিং সিস্টেম রয়েছে। .NET- র জন্য আমি একটি সংজ্ঞা শুনেছিলাম যে 'টাইপ'-এ রেফ এবং মান উভয় প্রকারের অন্তর্ভুক্ত থাকে, যেখানে কোনও শ্রেণি কেবল রেফের প্রকারগুলি বর্ণনা করতে ব্যবহৃত হয়।
এডি পার্কার

2
কেবলমাত্র সিস্টেম.আইটি 32 ধরণের জন্য কেবল সংক্ষিপ্ত হাত নয়? অন্য কথায়: int foo; // প্রকারটি ইন্টি, ক্লাসটি সিস্টেম.আইন্ট 32?
Svish

51

উইকিপিডিয়া দ্বারা অনুপ্রাণিত ...

ইন টাইপ তত্ত্ব পদ;

  • একটি প্রকার একটি বিমূর্ত ইন্টারফেস।
    প্রকারগুলি সাধারণত বিশেষ্যকে প্রতিনিধিত্ব করে, যেমন কোনও ব্যক্তি, স্থান বা জিনিস বা নামকরণকৃত কিছু,

  • একটি শ্রেণি এই ধরণের একটি বাস্তবায়ন উপস্থাপন করে।
    এটি একটি কংক্রিট ডেটা স্ট্রাকচার এবং সাবরুটাইনগুলির সংগ্রহ

    বিভিন্ন কংক্রিট শ্রেণি একই বিমূর্ত আকারের (টাইপ সিস্টেমের উপর নির্ভর করে) বস্তু তৈরি করতে পারে।

    * উদাহরণস্বরূপ, কেউ দুটি শ্রেণীর সাথে প্রকারটি প্রয়োগ করতে পারে : (ছোট স্ট্যাকের জন্য দ্রুত, তবে খুব কম স্কেল করে) এবং (ছোট স্ট্যাকের জন্য ভাল পরিমাণে কিন্তু উচ্চ ওভারহেড) *StackSmallStackScalableStack

    একইভাবে, একটি প্রদত্ত শ্রেণিতে বিভিন্ন পৃথক নির্মাণকারী থাকতে পারে ।

এখানে চিত্র বর্ণনা লিখুন

কলা উদাহরণ।

  • একটি Banana ধরণ সাধারণত কলা এর বৈশিষ্ট্য এবং কার্যকারিতা উপস্থাপন করবে।

  • দ্য ABCBananaএবং XYZBanana শ্রেণীর উত্পাদক কলা উপায়ে উপস্থাপনের।
    (বাস্তব জীবনের বিভিন্ন কলা সরবরাহকারী, বা একটি ভিডিও গলায় কলা উপস্থাপন এবং আঁকার জন্য বিভিন্ন ডেটা স্ট্রাকচার এবং ফাংশন)।

    ABCBananaবর্গ তারপর নির্দিষ্ট কলা যা হয় উত্পাদন পারে দৃষ্টান্ত এর ABCBanana বর্গ , তারা হবে বস্তু এর টাইপ কলা

এটি বিরল নয় যে প্রোগ্রামার কোনও ধরণের জন্য একক এবং একমাত্র বাস্তবায়ন সরবরাহ করে। এক্ষেত্রে শ্রেণীর নামটি প্রায়শই টাইপের নামের সাথে মিল থাকে । তবে এখনও একটি প্রকার রয়েছে (যা প্রয়োজনে ইন্টারফেসে বের করা যেতে পারে), এবং একটি বাস্তবায়ন (যা পৃথক ইন্টারফেস প্রয়োগ করবে) যা শ্রেণীর উদাহরণ (বস্তু) তৈরি করে।


3
সত্যিকারের বিশ্বের উদাহরণ না দিয়ে যদি কেউ শেখার জন্য সংগ্রাম করে তবে সত্যই এটি আমাকে সাহায্য করেছিল। ধন্যবাদ।
alexc95

13

প্রকারটি উপলব্ধ সমস্ত অবজেক্ট টেম্পলেট বা ধারণার জন্য ছাতা শব্দ। একটি শ্রেণি হ'ল এই জাতীয় একটি বস্তু টেম্পলেট। স্ট্রাকচার টাইপ, ইন্টিজার টাইপ, ইন্টারফেস টাইপ ইত্যাদি এই সব ধরণের

আপনি যদি চান তবে আপনি এটি এটিকে দেখতে পারেন: একটি প্রকার হল মূল ধারণা। অন্যান্য সমস্ত ধারণা: শ্রেণি, ইন্টারফেস, কাঠামো, পূর্ণসংখ্যার ইত্যাদি এই ধারণা থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হয়। এগুলি প্রকার are


4

প্রকারে ডেটা (যেমন সম্পত্তি, ক্রিয়াকলাপ ইত্যাদি) এর বিবরণ থাকে,

শ্রেণি একটি নির্দিষ্ট ধরণের - এটি বস্তুর উদাহরণ তৈরি করার জন্য একটি টেমপ্লেট ।

কঠোরভাবে বলতে গেলে শ্রেণিটি একটি বিশেষ ধারণা, এটি একটি প্যাকেজ হিসাবে দেখা যেতে পারে যা কোনও অবজেক্টের কিছু দিক বর্ণনা করে মেটাডেটার সাবসেটযুক্ত।

উদাহরণস্বরূপ সি # তে আপনি ইন্টারফেস এবং ক্লাসগুলি সন্ধান করতে পারেন। এগুলি উভয়ই ধরণের, তবে ইন্টারফেস কেবল কিছু চুক্তি সংজ্ঞায়িত করতে পারে এবং শ্রেণীর তুলনায় তা ইনস্ট্যান্ট করা যায় না।

সোজা কথা বলার শ্রেণি হ'ল একটি বিশেষ ধরণের যা কোনও বস্তুর বৈশিষ্ট্য এবং আচরণকে encapsulate করতে ব্যবহৃত হয়।

উইকিপিডিয়া আপনাকে আরও সম্পূর্ণ উত্তর দিতে পারে:


4

এটি দ্রুততমভাবে চিত্রিত করার জন্য:

একটি স্ট্রাক্ট একটি প্রকার, তবে স্ট্রাক্ট কোনও শ্রেণি নয়।

যেমন আপনি দেখতে পাচ্ছেন, কোনও প্রকার শ্রেণীর সংজ্ঞা নয়, তবে স্ট্রাক্ট এবং আদিম ডাটা টাইপের যেমন ভাসা, ইনট, বুলের জন্য একটি "বিমূর্ত" শব্দ is


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

3

প্রকারটি ধারণাগতভাবে শ্রেণীর একটি সুপারস্টার। বিস্তৃত অর্থে, একটি শ্রেণি এক প্রকারের।

ক্লাসের সাথে ঘনিষ্ঠভাবে সম্পর্কিত হ'ল ইন্টারফেসগুলি, যা মৌমাছিকে একটি বিশেষ ধরণের শ্রেণীর হিসাবে দেখা যেতে পারে - খাঁটি বিমূর্ত একটি। এগুলিও প্রকার।

সুতরাং "টাইপ" ক্লাস, ইন্টারফেস এবং বেশিরভাগ ভাষায় আদিমকে অন্তর্ভুক্ত করে। ডট নেট সিএলআরের মতো প্ল্যাটফর্মগুলিতেও কাঠামোর ধরণ রয়েছে।


রাজকুমার, আপনার প্রশ্নটি বেশ অস্পষ্ট। আপনি কিছু ভাষার বৈশিষ্ট্য হিসাবে বা একটি সাধারণ ধারণা হিসাবে "টাইপ" হিসাবে?
ak

সমস্ত ব্যবহারকারী-সংজ্ঞায়িত প্রকারগুলি যদিও ক্লাস নয় তবে কমপক্ষে সমস্ত ভাষায় নয়।
জাল্ফ

জাল্ফ, এটি একটি ভুল বৈশিষ্ট্য সম্মত হন। ইন্টারফেসটিও ব্যবহারকারী-সংজ্ঞায়িত, এবং কোনও ব্যবহারকারী-সংজ্ঞায়িত প্রকার থাকতে পারে না। ক্লাস একটি বিশেষ ধরনের বিশেষ চাহিদা ভজনা করা হয় (বস্তুর দৃষ্টান্ত তৈরি)
Aku

একটি ইন্টারফেস কেবল একটি বিশেষ ধরণের, একটি সম্পূর্ণ বিমূর্ত শ্রেণি - এটি এখনও এক ধরণের (বৃহত্তর অর্থে)।
লরেন্স ডল

সফটওয়্যার বানর, ইন্টারফেস খাঁটি বিমূর্ত শ্রেণি নয় - এটি একটি বিশেষ ধারণা। "ব্যবহারকারী-সংজ্ঞায়িত" শ্রেণিগুলির একটি সংজ্ঞায়িত সম্পত্তি নয়
আকু

3

পার্থক্যের আরেকটি উদাহরণ যুক্ত করতে: সি ++ এ আপনার পয়েন্টার এবং রেফারেন্স টাইপ রয়েছে যা ক্লাসগুলি উল্লেখ করতে পারে তবে তারা নিজের এবং ক্লাস নয়।

Bar b; // b is of type "class Bar"
Bar *b2 = &b; // b2 is of type "pointer to Class Bar"
Bar &b3 = b; // b3 is of type "reference to Class Bar"
Bar *b4[7]; // b4 is of type "7-element array of pointers to Class Bar"
Bar ***b5; //b5 is of type "pointer to a pointer to a pointer to Class Bar"

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


3

আমার চিন্তাগুলি আকুর উত্তরের সাথে সামঞ্জস্যপূর্ণ।

আমি শ্রেণিগুলি অবজেক্ট তৈরির জন্য একটি টেম্পলেট হিসাবে দেখি, যখন প্রকারগুলি সেই জিনিসগুলিকে শ্রেণিবদ্ধ করার একটি উপায় এবং সেগুলিতে আমাদের একটি ইন্টারফেস সরবরাহ করে।

পাইথন মেটাক্লাসগুলিও যুক্ত করে, এটি ক্লাস তৈরির জন্য কেবল একটি প্রক্রিয়া, যেমন শ্রেণিগুলি অবজেক্ট তৈরি করে (এবং ভাল, ক্লাস এবং মেটাক্লাসগুলি উভয় বস্তু)।

লম্বায় একই প্রশ্নের এই প্রতিক্রিয়াটি চূড়ান্ত বলে মনে হচ্ছে আমার কাছে একটি সঠিক ব্যাখ্যা।


3

নিচ থেকে জিওএফের উদ্ধৃতি থেকে নেওয়া:

কোনও বস্তুর শ্রেণি নির্ধারণ করে যে কীভাবে বস্তুটি বাস্তবায়ন করা হয় class শ্রেণিটি বস্তুর অভ্যন্তরীণ অবস্থা এবং এর ক্রিয়াকলাপগুলি নির্ধারণ করে।

বিপরীতভাবে, একটি বস্তু এর টাইপ শুধুমাত্র অনুরোধ যা এটি উত্তর দিতে পারেন এর যে সময়টাতে সেট তার ইন্টারফেস বোঝায়।

আমি জাভা ব্যবহার করে একটি উদাহরণ সরবরাহ করতে চাই:

public interface IType {
}

public class A implements IType {
public A{};
}

public class B implements IType {
public B{};
}

উভয় শ্রেণি Aএবং Bইন্টারফেস বাস্তবায়ন এবং এই ধরণের হয় IType। অতিরিক্তভাবে জাভাতে, উভয় শ্রেণিই তাদের নিজস্ব ধরণের উত্পাদন করে (যথাক্রমে তাদের শ্রেণীর নামের সাথে)। সুতরাং শ্রেণিটি Aধরণের A এবং IType শ্রেণিটি Bধরণের B এবং IType সন্তোষজনক:

একটি অবজেক্টের অনেক প্রকার থাকতে পারে এবং বিভিন্ন শ্রেণীর বস্তুগুলিতে একই ধরণের থাকতে পারে।

সাব টাইপ এবং সাবক্লাসের মধ্যে পার্থক্য সম্ভবত সেই সমস্যাটি বুঝতে সহায়তা করে:

https://www.cs.princeton.edu/courses/archive/fall98/cs441/mainus/node12.html


2

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

যেহেতু একটি শ্রেণি সংজ্ঞা দেয় যে আপনি সেই শ্রেণীর অবজেক্টগুলির সাথে কী করতে পারেন, একটি শ্রেণি একটি প্রকারকে সংজ্ঞায়িত করে। একটি শ্রেণি তার চেয়েও বেশি, যেহেতু এটি পদ্ধতিগুলি কীভাবে প্রয়োগ করা হয় (কোনও ধরণের দ্বারা বোঝানো হয় না) এবং কীভাবে অবজেক্টের ক্ষেত্রগুলি স্থাপন করা হয় তার বিবরণও সরবরাহ করে।

এটিও নোট করুন যে কোনও বস্তুর মানটিতে কেবল একটি শ্রেণি থাকতে পারে তবে এতে একাধিক প্রকার থাকতে পারে, যেহেতু প্রতিটি সুপারক্লাস বস্তুর শ্রেণিতে উপলব্ধ কার্যকারিতার একটি উপসেট সরবরাহ করে।

সুতরাং যদিও বস্তু এবং প্রকারগুলি নিবিড়ভাবে সম্পর্কিত, তারা সত্যই একই জিনিস নয়।


2

সি তে প্রকার, যেমন ইন ফ্লোট, চর ইত্যাদি এমন ডেটা সংজ্ঞায়িত করে যা সেগুলি পরিচালনা করতে পারে এমন নির্দিষ্ট পদ্ধতির সাথে কাজ করতে পারে। এটি এর চেয়ে জটিল আর কিছু নয়। ইন্টের মত আমি যুক্ত করতে পারি, গুণফল বিয়োগ করতে পারি এবং সম্ভবত বিভাজন করতে পারি। এগুলি হল আমার পদ্ধতি (বা অপারেশন) ইনট এর জন্য। একটি ক্লাস কেবল একটি নতুন ধরণের সংজ্ঞা। আমি প্রথমে ডেটা দেখতে কেমন তা সংজ্ঞায়িত করি। সম্ভবত এটি একটি বিট। একটি বাস্তব এবং কাল্পনিক অংশযুক্ত একটি জটিল মত এটি দুটি শব্দ হতে পারে। বা সম্ভবত এটি বৃহস্পতিবারে একটি অদ্ভুত কণার পারমাণবিক মেকআপ উপস্থাপন করে 309734325 বাইট সহ জটিল জটিল জিনিস y আমি পাত্তা দিই না। একটি পূর্ণসংখ্যার মতো, আমি এই নতুন ডেটা টাইপের সাথে আমি যে কাজগুলি করতে পারি তা করতে করতে পারাতে চাই। পূর্ণসংখ্যার ক্ষেত্রে আমার যুক্ত, বিয়োগ ইত্যাদি ছিল new এই নতুন ডেটা টাইপের সাহায্যে আমি যে কোনও ক্রিয়াকলাপটি বোধগম্য মনে করতে পারি। তারা হতে পারে যোগ বিয়োগ ইত্যাদি। তবে তারা অন্যান্য জিনিস যুক্ত করতে পারে। আমি আমার ক্লাসে যুক্ত করার সিদ্ধান্ত নেওয়ার যাই হোক না কেন এগুলি।

নীচের লাইনটি হ'ল সি'র একটি টাইপ সহ আপনার কাছে ডেটা কী, এর একটি সংজ্ঞা রয়েছে; একটি বাইট, শব্দ, ভাসা, চর ইত্যাদি কিন্তু এর যে কোনওটিও বোঝায় যে কোন ক্রিয়াকলাপ আইনসম্মত এবং নির্ভরযোগ্য ফলাফল আনবে।

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

ক্লাসগুলি কেবলমাত্র নতুন ধরণের সংজ্ঞা দেয় এবং তারা কীভাবে কাজ করে সে সম্পর্কে সবকিছু নির্ধারণ করার জন্য আপনাকে নমনীয়তা দেয়।

এটি একবার সংজ্ঞায়িত হয়ে গেলে, প্রতিবার যখন আমি ক্লাস "জিনিস" এর কোনও অবজেক্ট ইনস্ট্যান্ট করি, এতে আমার সংজ্ঞায়িত ডেটা স্ট্রাকচার এবং অপারেশনগুলি (পদ্ধতি) যা আমি বলেছি আপনি এটি দিয়ে করতে পারেন। ক্লাস "ট্যাটি" হ'ল সি ++ আমাকে সংজ্ঞায়িত করতে দেয় এমন একটি নতুন ধরণের চেয়ে পরিষ্কার বা বেশি কিছু নয়।


1

প্রকারটি সাধারণত আদিম মানগুলির শ্রেণিবিন্যাসকে বোঝায় - পূর্ণসংখ্যা, স্ট্রিং, অ্যারে, বুলিয়ানস, নাল ইত্যাদি Usually সাধারণত, আপনি কোনও নতুন ধরণের তৈরি করতে পারবেন না।

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

এই সংজ্ঞাটি বেশিরভাগ ক্ষেত্রেই সত্য তবে কয়েকটি ভাষা বিভিন্ন উপকারের ফলাফল সহ বিভিন্ন উপায়ে এবং শ্রেণিকে একত্রিত করার চেষ্টা করেছে।


1
এমনকি দরিদ্র ভাষা সিতেও আপনি নতুন প্রকার তৈরি করতে পারেন তবে এর স্ট্রাক্ট, রেকর্ড এবং ক্লাস সব ধরণের একে অপরের সাথে সাদৃশ্য ব্যতীত লোকেরা সাধারণত শ্রেণি হিসাবে যা ভাবেন তেমন কিছুই নেই।
জেমস আইরি

1

প্রকার এবং শ্রেণিগুলি সম্পর্কিত তবে অভিন্ন নয়। আমার গ্রহণযোগ্যতাটি হ'ল ক্লাসগুলি প্রয়োগের উত্তরাধিকারের জন্য ব্যবহৃত হয়, যেখানে প্রকারগুলি রানটাইম বিকল্পের জন্য ব্যবহৃত হয়।

প্রতিস্থাপন নীতিটি ব্যাখ্যা করার জন্য এখানে একটি লিঙ্ক রয়েছে এবং কেন সাবক্ল্যাস এবং সাব-টাইপগুলি সর্বদা একই জিনিস হয় না (উদাহরণস্বরূপ জাভাতে)। উইকিপিডিয়া সহভেদাংক এবং contravariance পৃষ্ঠার এই পার্থক্য সম্পর্কে আরো তথ্য রয়েছে।


1

ইন জেনারেল ভাষা-অজ্ঞেয়বাদী ইন্দ্রিয় - ক্লাস একটি হল উপলব্ধি এর প্রকার

প্রায়শই যখন এই ধরণের একমাত্র উপলব্ধি হয় তবে আপনি উভয় পদটি কিছু প্রসঙ্গে উল্লেখ করতে পারেন।

বিপরীতভাবে, উদাহরণস্বরূপ, সি # প্রেক্ষাপটে - ক্লাস ঠিক হয় এক এর আরো অনেক বাস্তবায়নের একটি এর প্রকার মত প্রিমিটিভের, structs অন্তর্ভুক্ত, পয়েন্টার ইত্যাদি ধারণা


0

আকর্ষণীয় প্রশ্ন। আমি মনে করি আকুর উত্তর স্পট রয়েছে। ArrayListএকটি উদাহরণ হিসাবে জাভা ক্লাস নিন

public class ArrayList<E> extends AbstractList<E>
    implements List<E>, RandomAccess, Cloneable, java.io.Serializable

ArrayListশ্রেণীর উদাহরণটি বলা হয় যে এটি প্রসারিত প্রতিটি সুপারক্লাস এবং এটি প্রয়োগ করে এমন প্রতিটি ইন্টারফেসের ধরণের। অতএব, একটি দৃষ্টান্ত ArrayListবর্গ একটি টাইপ হয়েছে ArrayList, RandomAccess, Cloneable, এবং তাই ঘোষণা। অন্য কথায়, মান (বা উদাহরণ) এক বা একাধিক প্রকারের অন্তর্ভুক্ত, শ্রেণিগুলি এই ধরণের কী তা নির্ধারণ করে।


0

বিভিন্ন শ্রেণি একই ধরণের বর্ণনা দিতে পারে।

প্রকারটি এই অংশগুলি নিয়ে গঠিত:

  1. অপারেশনস = সিনট্যাক্স
  2. ক্রিয়াকলাপসমূহ = শব্দার্থবিজ্ঞানের বর্ণনা

শ্রেণি এই অংশগুলি নিয়ে গঠিত:

  1. অপারেশনস = সিনট্যাক্স
  2. বাস্তবায়ন (= বিভিন্ন বাস্তবায়ন একই শব্দার্থবিজ্ঞানের বর্ণনা দেয়)

কিছু নোট:

  • ইন্টারফেস (জাভা হিসাবে) টাইপ হয় না, কারণ এটি শব্দার্থবিজ্ঞানের বর্ণনা দেয় না (কেবল সিনট্যাক্স বর্ণনা করে)

  • সাবক্লাস সাব টাইপ নয়, কারণ সাবক্লাস সুপারক্লাসে সংজ্ঞায়িত শব্দার্থবিজ্ঞান পরিবর্তন করতে পারে, সাব টাইপ সুপারটাইপ শব্দার্থবিজ্ঞান পরিবর্তন করতে পারে না (দেখুন লিসকভ সাবস্টিটিউশন নীতি, যেমন এই এলএসপি উদাহরণ )।


0

স্পষ্টতই, টাইপ সিস্টেমের সাথে ভাষা যেমন ওও প্রোগ্রামিং ভাষা নয়, টাইপটি শ্রেণীর চেয়ে বিস্তৃত ধারণা হতে হবে

এমনকি জাভা-র মতো ভাষায়ও int(আদিম) ধরণের, তবে শ্রেণি নয়।

অতএব: প্রতিটি শ্রেণি একটি ধরণের, তবে প্রতিটি প্রকারই একটি শ্রেণি নয়।


0

আমরা যদি এই প্রশ্নটিকে সি # প্রসঙ্গে ভাবি, তবে আমরা উত্তরটি পৌঁছে দেব।

সি # টাইপ সিস্টেমটি নিম্নলিখিত বিভাগগুলিতে বিভক্ত:

মান প্রকার:

  • সরল প্রকার: ইনট, লং, ফ্লোট ইত্যাদি
  • এনাম প্রকার
  • স্ট্রাক্ট প্রকার
  • অবিচ্ছিন্ন প্রকার

উল্লেখের ধরণ:

  • শ্রেণির ধরণ
  • ইন্টারফেস প্রকার
  • অ্যারে প্রকারের
  • প্রতিনিধি প্রকার

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

সুতরাং আমি যেমন দেখতে পাচ্ছি, টাইপ হ'ল অনেকগুলি আইটেমের উপরে একটি ছাতা যা শ্রেণি তাদের মধ্যে একটি।

রেফারেস: সিএসএআরপি ল্যাঙ্গুয়েজ স্পেসিফিকেশন ডক, পৃষ্ঠা 4


-1

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


1
তাই আপনাকে স্বাগতম। এই উত্তরটি কমপক্ষে অন্য একজনের সাথে খুব মিল এবং এসও ব্যবহারকারীরা 'জিনিসযুক্ত' এর চেয়ে বেশি প্রযুক্তিগত ভাষা পছন্দ করেন!
নিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.