একটি পদ্ধতি এবং একটি ফাংশন মধ্যে পার্থক্য কি?


1739

কেউ কি ওওপি প্রসঙ্গে পদ্ধতির বনাম ফাংশনগুলির একটি সহজ ব্যাখ্যা সরবরাহ করতে পারেন ?



12
যখন কোনও সম্পত্তির মান একটি ফাংশন হয়, আমরা এটিকে একটি পদ্ধতি বলি
কোডার

2
কোন পদ্ধতির বিপরীতটি কী? এটাই আমার প্রশ্ন। "ফাংশন" হ'ল মূল ধারণা। পদ্ধতি একধরণের ফাংশন। একধরণের ফাংশনটির নাম কী যা কোনও পদ্ধতি নয়, তবে এটিকে সরাসরি নামে ডাকা যেতে পারে?
আলেকজান্ডার মিলস

এটা অন্য ব্যাখ্যা পদ্ধতি ও ইন ফাংশান মধ্যে পার্থক্য outlining দেখতে আকর্ষণীয় হবে । এটি আকর্ষণীয় কারণ পদ্ধতিতে সাধারণত কোনও ফাংশন থাকে । যদি পদ্ধতিটি কোনও অবজেক্টভিত্তিক ফাংশন হয় তবে অবজেক্ট শ্রেণির জন্য ফাংশন চেকিং if(class(object)) { ... } else {stop()}পদ্ধতিটির সমতুল্য হবে?
কনরাড

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

উত্তর:


1830

একটি ফাংশন কোডের একটি অংশ যা নামে ডাকা হয়। এটি (যেমন পরামিতি) অপারেট করতে ডেটা পাস করা যেতে পারে এবং allyচ্ছিকভাবে ডেটা (ফেরতের মান) ফেরত দিতে পারে। কোনও ফাংশনে পাস করা সমস্ত ডেটা স্পষ্টভাবে পাস করা হয়।

একটি পদ্ধতি কোডের একটি অংশ যা কোনও নামের সাথে ডাকা হয় যা কোনও বস্তুর সাথে সম্পর্কিত। বেশিরভাগ ক্ষেত্রে এটি দুটি মূল পার্থক্য ব্যতীত কোনও ফাংশনের সাথে সমান:

  1. একটি পদ্ধতি সুস্পষ্টভাবে সেই বস্তুকে পাশ কাটিয়ে যায় যার উপর এটি ডাকা হত।
  2. একটি পদ্ধতি শ্রেণীর মধ্যে থাকা ডেটাগুলিতে অপারেট করতে সক্ষম হয় (মনে রাখে যে কোনও বস্তু একটি শ্রেণীর উদাহরণ - শ্রেণিটি সংজ্ঞা, বস্তু সেই ডেটার একটি উদাহরণ)।

(এটি সুযোগের বিষয়গুলি উপেক্ষা করে সরলিকৃত ব্যাখ্যা is )


249
1) এর জন্য, আপনার সি ++ তে থাকা পদ্ধতিগুলি সদস্য ফাংশনও বলা উচিত add সুতরাং, এই প্রসঙ্গে ফাংশন এবং পদ্ধতির মধ্যে পার্থক্য সি ++ এ ফাংশন এবং সদস্য ফাংশনগুলির মধ্যে পার্থক্যের সাথে সাদৃশ্যপূর্ণ। তদ্ব্যতীত, জাভা মত ভাষা শুধুমাত্র পদ্ধতি আছে। এই ক্ষেত্রে, ফাংশন স্থির পদ্ধতিগুলির সাথে সাদৃশ্যযুক্ত হবে এবং পদ্ধতিগুলির একই অর্থ থাকবে। 2) এর জন্য, আপনার যুক্ত করা উচিত যে কোনও পদ্ধতি শ্রেণীর অংশ হিসাবে ঘোষিত ব্যক্তিগত নজরে (সদস্য) ডেটা পরিচালনা করতে সক্ষম । যে কোনও কোড জনসাধারণের উদাহরণ ডেটা অ্যাক্সেস করতে পারে।
রাফি খ্যাচডৌড়িয়ান

45
একটি ফাংশন একটি গাণিতিক গঠন। আমি বলব যে সমস্ত পদ্ধতি ফাংশন তবে সমস্ত ফাংশন পদ্ধতি নয়
টাইলার গিলি

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

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

9
এই সংজ্ঞা দ্বারা একটি স্থির পদ্ধতি আসলে একটি পদ্ধতি হিসাবে বিবেচিত হবে না কারণ এটির একটি নির্দিষ্ট উদাহরণের সাথে কিছু করার নেই?
কারসিজেনিকেট

961

একটি পদ্ধতি একটি বস্তুর উপর।
একটি ফাংশন একটি বস্তুর থেকে পৃথক।

জাভা এবং সি # এর জন্য কেবলমাত্র পদ্ধতি রয়েছে।
সি জন্য, শুধুমাত্র ফাংশন আছে।

সি ++ এবং পাইথনের জন্য এটি নির্ভর করে আপনি কোনও শ্রেণিতে রয়েছেন কি না।


39
এটি সি # যুক্ত করার সময় হয়েছে।
রোসদী কাসিম

7
@ রসদিকাসিম সি # এর জন্য, কেবলমাত্র পদ্ধতি রয়েছে। (যেহেতু স্থির পদ্ধতিগুলিও কোনও
জিনিসের

38
একটি ক্লাসে স্থির পদ্ধতি সম্পর্কে কীভাবে? এগুলি কোনও বস্তুর (জাভাতে) স্বাধীন হবে। তাহলে কি কোনও ফাংশন হবে না?
স্কোয়াজার

12
@Squeazer যে সম্প্রতি সম্পর্কে একটি প্রশ্ন আছে stackoverflow.com/questions/30402169/... জাভা ল্যাঙ্গুয়েজ স্পেসিফিকেশন শুধু "বর্গ পদ্ধতি" (স্ট্যাটিক) এবং "উদাহরণস্বরূপ পদ্ধতি" তাদের পৃথক। সুতরাং তারা এখনও সব পদ্ধতি।
এক্সজি

13
জাভাতে ল্যাম্বডা এক্সপ্রেশন রয়েছে, যা ফাংশন যা কোনও পদ্ধতি নয়
ম্যাক্স হাইবার

228

'পদ্ধতি' হ'ল 'ফাংশন' এর জন্য অবজেক্ট ভিত্তিক শব্দ । এটি প্রায় সমস্ত কিছুই (যেমন। কোনও বাস্তব পার্থক্য নেই)।

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

সত্যই - এটি এত কিছুই নেই, একই জিনিসটির জন্য কেবল আলাদা শব্দ।

[দেরীতে সংযোজন]


প্রকৃতপক্ষে, ব্রায়ান নিল যেমন এই প্রশ্নের মন্তব্যে উল্লেখ করেছেন , সদস্য কার্যগুলি উল্লেখ করার সময় সি ++ স্ট্যান্ডার্ডটি কখনই 'পদ্ধতি' শব্দটি ব্যবহার করে না। কিছু লোকেরা এটি ইঙ্গিত হিসাবে নিতে পারে যে সি ++ আসলে কোনও বস্তু-কেন্দ্রিক ভাষা নয়; তবে, আমি এটিকে একটি ইঙ্গিত হিসাবে নিতে পছন্দ করি যে একটি চমত্কার স্মার্ট গোষ্ঠী লোকেরা ভাবেনি যে আলাদা শব্দটি ব্যবহারের কোনও বিশেষ কারণ আছে।


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

4
@ ty1824 সবসময় এমন হয় না যে পদ্ধতিগুলি অন্তর্নিহিত যুক্তিগুলি দিয়ে যায়। পাইথনে, selfযুক্তিটি সুস্পষ্ট। এবং অনেক ভাষায় স্থির পদ্ধতি রয়েছে, যা উদাহরণ দিয়ে যায় না passed
ম্যাক্স হাইবার

1
@ মেহেবার সেগুলি কিছু কার্যকর পয়েন্ট। নিজের প্রতি শ্রদ্ধা সহ, আপনি সঠিক, এটি স্পষ্টভাবে সংজ্ঞায়িত করা হয়েছে । মূলটি হ'ল মূল অবজেক্ট রেফারেন্সের ভিত্তিতে কলটি অন্তর্ভুক্ত। এমন একটি ভাষা রয়েছে যা একটি thisবা ওভাররাইডকে সমর্থন করে selfতবে সেগুলি নির্মাণগুলি সাধারণত পদ্ধতিগুলির পরিবর্তে ফাংশন হিসাবে উল্লেখ করা হয়।
ty1824

1
@ মাহেবার যতদূর স্থির পদ্ধতির সাথে সম্পর্কিত - জাভা এগুলি কার্যকর হিসাবে প্রয়োগ করেছে যাতে কোনও প্রসঙ্গের প্রয়োজন ছাড়াই কার্যাদি কার্যকর করা যায়। আমি এতদূর যেতে পারব যে 'স্থিতিশীল পদ্ধতি' একটি বিভ্রান্তিমূলক শব্দ এবং প্রতিস্থাপন করা উচিত ... একটি আদর্শ তাত্ত্বিক বিশ্বে :)
ty1824

1
@ ty1824 সি ++, স্কালা, পাইথন, রুবি, জাভাস্ক্রিপ্ট এবং স্কালা সবগুলিরই স্থির পদ্ধতি রয়েছে, তাই আমি মনে করি এটি কেবল জাভা জিনিস নয়। আমি সেগুলিও পছন্দ করি না: এগুলি অবজেক্ট (রাষ্ট্রের বান্ডিল) ব্যবহার করে যেমন তারা নেমস্পেস হয় to
ম্যাক্স হাইবার

99

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

নিম্নলিখিত অজগর উদাহরণ নিন:

class Door:
  def open(self):
    print 'hello stranger'

def knock_door:
  a_door = Door()
  Door.open(a_door)

knock_door()

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

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

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


2
এই উত্তর --- বেশিরভাগ ক্ষেত্রে এর প্রথম বাক্য --- এ পর্যন্ত প্রশ্নের সবচেয়ে সংক্ষিপ্ত এবং সামগ্রিক সেরা উত্তর।
yourcomputergenius

61

মনে রাখার সহজ উপায়:

  • F unction → F ree (মুক্ত অর্থ কোনও বস্তু বা শ্রেণীর অন্তর্গত নয়)
  • এম → ethod এম জলন্ত (একটি বস্তু বা বর্গ একজন সদস্য)

যেহেতু সাধারণত বিনিময়যোগ্য হয় তাই আপনার কেন একটি স্মৃতিবিজাল দরকার?
Sapphire_Brick

44

একটি কার্য এবং একটি পদ্ধতির মধ্যে প্রধান পার্থক্যের একটি খুব সাধারণ সংজ্ঞা :

ক্লাসের বাইরে ফাংশনগুলি সংজ্ঞায়িত করা হয়, অন্যদিকে ক্লাসের ভিতরে এবং অংশগুলির পদ্ধতিগুলি সংজ্ঞায়িত হয়।


30

আপনি যদি এখানে পড়ার মতো মনে করেন তবে এটি "ওও পদ্ধতিগুলির সাথে আমার পরিচিতি" is

অবজেক্ট ওরিয়েন্টেড দৃষ্টান্তের পিছনে ধারণাটি হ'ল "হুমকি" দেওয়া সফ্টওয়্যারটি .. ভাল "অবজেক্টস" দ্বারা গঠিত of বাস্তব বিশ্বের বস্তুগুলির বৈশিষ্ট্য রয়েছে, উদাহরণস্বরূপ যদি আপনার কোনও কর্মচারী থাকে, কর্মচারীর একটি নাম, কোনও কর্মীর আইডি, কোনও অবস্থান থাকে, তিনি কোনও বিভাগের অন্তর্ভুক্ত হন ইত্যাদি ইত্যাদি etc.

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

employe whatAreYouDoing.

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

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

অন্যান্য সম্ভাব্য পদ্ধতিগুলি হ'ল

employee whatIsYourName
employee whatIsYourDepartmentsName

প্রভৃতি

অন্যদিকে ফাংশনগুলি হল কোনও প্রোগ্রামিং ভাষার কিছু ডেটা গণনা করতে হয়, উদাহরণস্বরূপ আপনার কাছে ফাংশন অ্যাডভ্যালু (8, 8) থাকতে পারে যা 16 ফেরত দেয়

// pseudo-code
function addValues( int x, int y )  return x + y 
// call it 
result = addValues( 8,8 )
print result // output is 16...

যেহেতু প্রথম জনপ্রিয় প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি (যেমন ফরট্রান, সি, পাস্কাল) ওও দৃষ্টান্তটি আবরণ করে না, তারা কেবল এই শিল্পকর্মগুলিতে "ফাংশন" ডাকে।

উদাহরণস্বরূপ সি এর আগের ফাংশনটি হ'ল:

int addValues( int x, int y ) 
{
   return x + y;
}

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

public static int addValues( int x, int y ) {
    return x + y;
}

চেনা লাগছে? এটি কারণ জাভা এর শিকড় সি ++ এবং সি ++ সি তে রয়েছে because

শেষে কেবল একটি ধারণা, বাস্তবায়নে এগুলি দেখতে একই রকম হতে পারে তবে ওও ডকুমেন্টেশনে এগুলিকে পদ্ধতি বলা হয়।

এখানে জাভাতে আগের কর্মচারী বস্তুর উদাহরণ।

public class Employee {

    Department department;
    String name;

    public String whatsYourName(){
        return this.name;
    }
    public String whatsYourDeparmentsName(){
         return this.department.name();
    }
    public String whatAreYouDoing(){
        return "nothing";
    } 
    // Ignore the following, only set here for completness
    public Employee( String name ) {
        this.name = name;
    }

}

// Usage sample.
Employee employee = new Employee( "John" ); // Creates an employee called John

// If I want to display what is this employee doing I could use its methods.
// to know it.
String name = employee.whatIsYourName():
String doingWhat = employee.whatAreYouDoint();

// Print the info to the console.

 System.out.printf("Employee %s is doing: %s", name, doingWhat );

Output:
Employee John is doing nothing.

তারপরে পার্থক্যটি "ডোমেন" এ রয়েছে যেখানে এটি প্রয়োগ করা হয়।

অ্যাপলস্ক্রিপ্টে "প্রাকৃতিক ভাষা" ম্যাথফোরের ধারণা রয়েছে যা কোনও সময়ে ওওর কাছে ছিল। উদাহরণস্বরূপ স্মার্টটাক। আমি আশা করি এটি পড়ার পরে অবজেক্টগুলির পদ্ধতি বোঝা আপনার পক্ষে যুক্তিসঙ্গত সহজ হতে পারে।

দ্রষ্টব্য: কোডটি সংকলন করতে হবে না, কেবল উদাহরণ হিসাবে পরিবেশন করার জন্য। পোস্টটি সংশোধন করতে এবং পাইথনের উদাহরণটি নির্দ্বিধায় محسوس করুন।


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

18

ওও বিশ্বে সাধারণত দুটি একই জিনিস বোঝাতে ব্যবহৃত হয়।

খাঁটি গণিত এবং সিএস দৃষ্টিকোণ থেকে, একই আর্গুমেন্ট (এফ (এক্স, ওয়াই) = (x + y)) এর সাথে ডাকা হলে কোনও ফাংশন সর্বদা একই ফলাফল ফিরে আসবে। অন্যদিকে একটি পদ্ধতি, সাধারণত শ্রেণীর উদাহরণের সাথে সম্পর্কিত। আবার যদিও, বেশিরভাগ আধুনিক ওও ভাষাগুলি বেশিরভাগ অংশে "ফাংশন" শব্দটি ব্যবহার করে না। অনেক স্থিতিশীল পদ্ধতিগুলি ফাংশনের মতো হতে পারে, কারণ তাদের সাধারণত কোনও রাজ্য থাকে না (সর্বদা সত্য নয়)।


17

ধরা যাক একটি ফাংশন কোডের একটি ব্লক (সাধারণত তার নিজস্ব স্কোপ সহ এবং কখনও কখনও এটির নিজের বন্ধ হয়ে থাকে) যা কিছু যুক্তি পেতে পারে এবং ফলাফলও ফিরে আসতে পারে।

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

সাধারণত পদ্ধতিগুলি বস্তু / শ্রেণীর মধ্যে তাদের আচরণের বর্ণনা করে কিছু অতিরিক্ত বৈশিষ্ট্যও অর্জন করে, উদাহরণস্বরূপ: দৃশ্যমানতা (এনক্যাপসুলেশনের অবজেক্ট ওরিয়েন্টেড ধারণার সাথে সম্পর্কিত) যা কোন বস্তু (বা শ্রেণিগুলি) থেকে পদ্ধতিটি আহ্বান করা যেতে পারে তা নির্ধারণ করে।

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


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

15

পদ্ধতিগুলি ক্লাসগুলির ফাংশন। সাধারণ জারগনে, লোকেরা পদ্ধতি পরিবর্তন করে এবং সমস্তদিকে কাজ করে। মূলত আপনি তাদের একই জিনিস হিসাবে ভাবতে পারেন (গ্লোবাল ফাংশনগুলি পদ্ধতিগুলি বলা হয় কিনা তা নিশ্চিত নয়)।

http://en.wikipedia.org/wiki/Method_(computer_science)


13

একটি ফাংশন একটি গাণিতিক ধারণা। উদাহরণ স্বরূপ:

f(x,y) = sin(x) + cos(y)

বলে যে ফাংশন চ () দ্বিতীয় প্যারামিটারের কোসাইন যুক্ত করা প্রথম প্যারামিটারের পাপ ফিরিয়ে দেবে। এটা শুধু গণিত। যেমনটি ঘটে পাপ () এবং কোস () এছাড়াও ফাংশন। একটি ফাংশনটির আরেকটি সম্পত্তি রয়েছে: একই পরামিতিগুলির সাথে একটি ফাংশনে সমস্ত কলগুলি একই ফলাফল ফেরত দেয়।

অন্যদিকে একটি পদ্ধতি হ'ল একটি ফাংশন যা কোনও অবজেক্ট-ওরিয়েন্টেড ভাষায় কোনও বস্তুর সাথে সম্পর্কিত। এটির একটি অন্তর্নিহিত প্যারামিটার রয়েছে: অবজেক্টটিতে অভিনয় করা হচ্ছে (এবং এটির অবস্থা))

সুতরাং, আপনার যদি কোনও পদ্ধতি জি (এক্স) দিয়ে জেডটির অবজেক্ট থাকে তবে আপনি নিম্নলিখিতটি দেখতে পাবেন:

Z.g(x) = sin(x) + cos(Z.y)

এই ক্ষেত্রে, প্যারামিটার এক্স পাস করা হয়েছে, আগের ফাংশন উদাহরণ হিসাবে একই। তবে কোস () -এর প্যারামিটারটি এমন একটি মান যা জেড জেড অবজেক্টের অভ্যন্তরে থাকে এবং এর মধ্যে থাকা ডেটা (জাই) জেড জি () পদ্ধতির অন্তর্নিহিত পরামিতি।


13

ফাংশন বা কোনও পদ্ধতি হ'ল কোডের নামযুক্ত কল টুকরা যা কিছু ক্রিয়াকলাপ সম্পাদন করে এবং বিকল্পভাবে একটি মান দেয়।

ইন সি ভাষা শব্দটি ফাংশন ব্যবহার করা হয়। জাভা এবং সি # লোকেরা এটিকে একটি পদ্ধতি বলবে (এবং এই ক্ষেত্রে কোনও ফাংশন একটি শ্রেণি / অবজেক্টের মধ্যে সংজ্ঞায়িত করা হয়)।

একটি সি ++ প্রোগ্রামার এটিকে একটি ফাংশন বা কখনও কখনও পদ্ধতি হিসাবে কল করতে পারে (যদি তারা পদ্ধতিগত স্টাইল সি ++ কোড লিখছে বা সি ++ এর অবজেক্ট ভিত্তিক পদ্ধতিতে করছে তার উপর নির্ভর করে, কেবল একটি সি / সি ++ কেবল প্রোগ্রামারই এটিকে একটি ফাংশন বলবেন কারণ শব্দটি 'পদ্ধতি' হয়) সি / সি ++ সাহিত্যে কম ব্যবহৃত হয়)।

আপনি কেবলমাত্র এর নাম হিসাবে কল করে একটি ফাংশন ব্যবহার করেন,

result = mySum(num1, num2);


আপনি কোনও পদ্ধতিকে প্রথমে এর বিষয়টিকে উল্লেখ করে কল করবেন,

result = MyCalc.mySum(num1,num2);

13

.তিহাসিকভাবে, "পদ্ধতি" এমন কোনও কিছু যা একটি মান দেয় না এবং একটি "ফাংশন" যার সাথে একটি সূক্ষ্ম পার্থক্য থাকতে পারে ach প্রতিটি ভাষার বিশেষ অর্থ সহ শব্দের নিজস্ব অভিধান রয়েছে

ইন "সি" , শব্দ "ফাংশন" মানে একটি প্রোগ্রাম রুটিন

ইন জাভা শব্দটি "ফাংশন" কোনো বিশেষ অর্থ নেই। যদিও "পদ্ধতি" বলতে কোনও একটি রুটিনকে বোঝায় যা শ্রেণীর প্রয়োগ বাস্তবায়ন করে।

ইন সি # যে হিসাবে অনুবাদ হবে:

public void DoSomething() {} // method
public int DoSomethingAndReturnMeANumber(){} // function

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


প্রকৃতপক্ষে, আপনার উদাহরণে উভয়ই হ'ল method... অথবা আমি এটিকে ডাকব procedureএবং function
ইউশা আলেয়ুব

9

ফাংশন যুক্তিগুলির একটি সেট যা ডেটা ম্যানিপুলেট করতে ব্যবহার করা যেতে পারে।

যখন, মেথডটি এমন ফাংশন যা এটির সাথে সম্পর্কিত যেখানে অবজেক্টের ডেটা ম্যানিপুলেট করতে ব্যবহৃত হয়। প্রযুক্তিগতভাবে, যদি আপনার এমন কোনও ফাংশন থাকে যা আপনার ক্লাসের সাথে পুরোপুরি সম্পর্কিত নয় তবে ক্লাসে ঘোষিত হয়েছিল, এটি কোনও পদ্ধতি নয়; একে খারাপ নকশা বলা হয়।


8

শ্রেণীর উদাহরণে শ্রেণীর কাজ করার পদ্ধতি, যাকে অবজেক্ট বলা হয়।

class Example
{
   public int data = 0; // Each instance of Example holds its internal data. This is a "field", or "member variable".

   public void UpdateData() // .. and manipulates it (This is a method by the way)
   {
      data = data + 1;
   }

   public void PrintData() // This is also a method
   {
      Console.WriteLine(data);
   }
}

class Program
{
   public static void Main()
   {
       Example exampleObject1 = new Example();
       Example exampleObject2 = new Example();

       exampleObject1.UpdateData();
       exampleObject1.UpdateData();

       exampleObject2.UpdateData();

       exampleObject1.PrintData(); // Prints "2"
       exampleObject2.PrintData(); // Prints "1"
   }
}

8

ওজ ভাষাগুলিতে যেমন অবজেক্ট পাস্কেল বা সি ++ তে, একটি "পদ্ধতি" হ'ল একটি বস্তুর সাথে সম্পর্কিত একটি ফাংশন। সুতরাং, উদাহরণস্বরূপ, একটি "কুকুর" অবজেক্টের "বাকল" ফাংশন থাকতে পারে এবং এটি একটি "পদ্ধতি" হিসাবে বিবেচিত হবে। বিপরীতে, "StrLen" ফাংশনটি একা দাঁড়িয়ে থাকে (এটি একটি আর্গুমেন্ট হিসাবে সরবরাহিত স্ট্রিংয়ের দৈর্ঘ্য সরবরাহ করে)। এটি কেবল একটি "ফাংশন"। জাভাস্ক্রিপ্ট প্রযুক্তিগতভাবেও অবজেক্ট ওরিয়েন্টেড তবে সি ++, সি # বা পাসকালের মতো পূর্ণ বিকাশের ভাষার তুলনায় অনেক সীমাবদ্ধতার মুখোমুখি। তবুও, পার্থক্যটি এখনও রাখা উচিত।

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

শেষ অবধি - ঠিক তাই কোনও পাস্কাল গুরু এখানে আমার উপর ঝাঁপিয়ে পড়ে না - পাস্কাল এছাড়াও "ফাংশন" (যা একটি মান দেয়) এবং "পদ্ধতি" যা না দেয় তার মধ্যে পার্থক্য করে। সি # স্পষ্ট করে এই পার্থক্য তৈরি করে না যদিও আপনি অবশ্যই কোনও মান ফিরিয়ে দিতে বা না বেছে নিতে পারেন।


8

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

# perfectly normal function
def hello(greetee):
  print "Hello", greetee

# generalise a bit (still a function though)
def greet(greeting, greetee):
  print greeting, greetee

# hide the greeting behind a layer of abstraction (still a function!)
def greet_with_greeter(greeter, greetee):
  print greeter.greeting, greetee

# very simple class we can pass to greet_with_greeter
class Greeter(object):
  def __init__(self, greeting):
    self.greeting = greeting

  # while we're at it, here's a method that uses self.greeting...
  def greet(self, greetee):
    print self.greeting, greetee

# save an object of class Greeter for later
hello_greeter = Greeter("Hello")

# now all of the following print the same message
hello("World")
greet("Hello", "World")
greet_with_greeter(hello_greeter, "World")
hello_greeter.greet("World")

এখন ফাংশন greet_with_greeterএবং পদ্ধতিটির তুলনা করুন greet: কেবলমাত্র পার্থক্যটি হল প্রথম প্যারামিটারের নাম (ফাংশনে আমি একে "গ্রিটার" বলেছি, পদ্ধতিতে আমি এটি "স্ব" বলেছি)। সুতরাং আমি greetপদ্ধতিটি ঠিক একইভাবে ব্যবহার করতে পারি যেমন আমি greet_with_greeterফাংশনটি ব্যবহার করি (এটি পেতে "ডট" সিনট্যাক্স ব্যবহার করে, যেহেতু আমি এটি একটি শ্রেণীর অভ্যন্তরে সংজ্ঞায়িত করেছি):

Greeter.greet(hello_greeter, "World")

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

Greeter.greet2 = greet_with_greeter
hello_greeter.greet2("World")

হ্যাঁ, ফাংশনটি greet_with_greeterএখন পদ্ধতি হিসাবেও পরিচিত greet2। এটি কোনও পদ্ধতি এবং একটি ফাংশনের মধ্যে একমাত্র আসল পার্থক্য দেখায়: আপনি যখন কোনও পদ্ধতিকে কল করে কোনও বস্তুকে "চালু" করেন object.method(args), তখন ভাষাটি যাদুতে একে রূপান্তরিত করে method(object, args)

(ওও পিউরিস্টরা তর্ক করতে পারে যে কোনও পদ্ধতি কোনও ফাংশন থেকে আলাদা কিছু, এবং আপনি যদি উন্নত পাইথন বা রুবি - বা স্মার্টটাল্কে প্রবেশ করেন - আপনি তাদের বিন্দুটি দেখতে শুরু করবেন languages ​​এছাড়াও কিছু ভাষা পদ্ধতিগুলিকে কোনও অবজেক্টের বিটগুলিতে বিশেষ অ্যাক্সেস দেয় But তবে মূল ধারণাগত পার্থক্যটি এখনও লুকানো অতিরিক্ত প্যারামিটার)


7

আমার জন্য: আমি যদি একমত হয় তবে কোনও পদ্ধতির কাজ এবং ফাংশন একই হয়:

  • একটি ফাংশন একটি মান দিতে পারে
  • পরামিতি আশা করতে পারে

কোডের যে কোনও অংশের মতোই আপনার রাখা বস্তু থাকতে পারে এবং ফলস্বরূপ আপনার কাছে কোনও অবজেক্ট থাকতে পারে। এটি করার সময় তারা কোনও জিনিসের অবস্থা পরিবর্তন করতে পারে তবে এটি আমার জন্য তাদের প্রাথমিক কার্যকারিতা পরিবর্তন করে না।

অবজেক্টস বা অন্যান্য কোডগুলির কলিংয়ের ক্ষেত্রে পৃথক সংজ্ঞা থাকতে পারে। কিন্তু এটি কি মৌখিক পার্থক্যের জন্য কিছু নয় এবং সে কারণেই লোকেরা তাদের বিনিময় করে? গণনার উদাহরণের সাথে উল্লেখ করলাম আমি সাবধানতা অবলম্বন করব। কারণ আমি আমার গণনাগুলি করার জন্য নিয়োগকারীদের নিয়োগ করি:

new Employer().calculateSum( 8, 8 );

সেভাবে এটি করার মাধ্যমে আমি কোনও নিয়োগকর্তাকে গণনার জন্য দায়বদ্ধ হওয়ার উপর নির্ভর করতে পারি। যদি তিনি আরও অর্থ চান তবে আমি তাকে মুক্তি দিন এবং কার্বেজ সংগ্রাহকের অব্যবহৃত কর্মচারীদের নিষ্পত্তি করার কাজটি বাকী কাজটি করতে দিন এবং নতুন কর্মী পেতে দিন।

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


5

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


4

আমার বোধগম্যতা থেকে কোনও পদ্ধতিটি কোনও ক্রিয়াকলাপ যা কোনও ক্লাসে করা যায় can এটি প্রোগ্রামিংয়ে ব্যবহৃত একটি সাধারণ শব্দ।

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

উদাহরণস্বরূপ, যাক আপনি একটি বিড়াল বর্ণনা করতে চান এবং আপনি এটি যোনে সক্ষম হতে চান। আপনি হ্যাঁ পদ্ধতিতে একটি বিড়াল শ্রেণি তৈরি করবেন যা সম্ভবত কোনও রিটার্ন মান ছাড়াই একটি ফাংশন হবে।


4

প্রথম অর্ডারের প্রায় অনুসারে, একটি পদ্ধতি (সি ++ স্টাইল ওওতে) সদস্য ফাংশনের জন্য অন্য শব্দ, এটি একটি ফাংশন যা শ্রেণীর অংশ।

সি / সি ++ এর মতো ভাষায় আপনার ফাংশন থাকতে পারে যা কোনও শ্রেণীর সদস্য নয়; আপনি কোনও ফাংশনকে ক্লাসের সাথে সম্পর্কিত নয় এমন পদ্ধতি বলে না call


4

ফাংশনটি মূলত প্রক্রিয়া ভিত্তিক প্রোগ্রামিং সম্পর্কিত ধারণা যেখানে ফাংশন এমন একটি সত্তা যা ডেটা প্রসেস করতে পারে এবং আপনাকে মূল্য দেয়

পদ্ধতিটি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিংয়ের ধারণা যেখানে একটি পদ্ধতি এমন একটি শ্রেণীর সদস্য যা বেশিরভাগ শ্রেণীর সদস্যদের উপর প্রক্রিয়াজাত করে।


3

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

আপনি যদি পদ্ধতিগুলি বলতে থাকেন তবে আপনি ক্লাসের অভ্যন্তরে ফাংশন বলতে চাইছেন। আপনি যদি ফাংশন বলতে থাকেন তবে আপনি ক্লাসের বাইরে কেবল ফাংশন বোঝাচ্ছেন।

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

ফাংশন এমন একটি কোড যা কিছু করার একটি ভূমিকা ( একটি ফাংশন ) খেলতে হয় । পদ্ধতি একটি পদ্ধতি সমস্যা সমাধান করার জন্য।

এটি একই জিনিস করে। এটা একই জিনিস। আপনি যদি খুব সুনির্দিষ্ট হতে চান এবং কনভেনশনটির সাথে যেতে চান তবে আপনি অবজেক্টের অভ্যন্তরের ফাংশন হিসাবে পদ্ধতিগুলি কল করতে পারেন।


2

আমি বিশেষজ্ঞ নই, তবে এটি আমি জানি:

  1. ফাংশনটি সি ভাষার শব্দ, এটি কোডের একটি অংশকে বোঝায় এবং ফাংশনটির নাম এই ফাংশনটি ব্যবহার করার জন্য সনাক্তকারী হবে।

  2. পদ্ধতিটি ওও পদ, সাধারণত ফাংশন প্যারামিটারে এটির এই পয়েন্টার থাকে। আপনি এই কোডটির মতো টুকরো সি হিসাবে চালিত করতে পারবেন না, এটির জন্য আপনাকে অবজেক্টটি ব্যবহার করতে হবে।

  3. আহবান পদ্ধতিগুলিও পৃথক। কোডের এই টুকরোটির ঠিকানা সন্ধানের জন্য এখানে অর্থ প্রার্থনা করুন। সি / সি ++, লিঙ্কিংয়ের সময়টি চিহ্নিত করতে ফাংশন প্রতীকটি ব্যবহার করবে।

  4. অবজেক্টিভ-সি আলাদা। ঠিকানা সন্ধানের জন্য ডেটা স্ট্রাকচার ব্যবহার করার জন্য একটি সি ফাংশন অর্থ দাও। এর অর্থ রান টাইমে সমস্ত কিছুই জানা থাকে।


2

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

একটি পদ্ধতি হ'ল একটি ফাংশন যার সংজ্ঞায়িত রিসিভার থাকে, ওওপি পদগুলিতে কোনও পদ্ধতি কোনও অবজেক্টের উদাহরণে একটি ফাংশন।


2

পদ্ধতি এবং কার্যকারিতা মধ্যে পার্থক্য

মাইক্রোসফ্টে এই ডকটি পড়া থেকে

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

সুতরাং পদ্ধতিগুলি ফাংশনগুলির উপসেট হয়। প্রতিটি পদ্ধতি একটি ফাংশন তবে প্রতিটি ফাংশন একটি পদ্ধতি নয়, উদাহরণস্বরূপ, constructorএকটি পদ্ধতি হিসাবে বলা যায় না তবে এটি একটি ফাংশন।


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

2

ফাংশন - কোডের একটি স্বাধীন টুকরোতে একটি ফাংশন যাতে কিছু যুক্তি অন্তর্ভুক্ত থাকে এবং এটি অবশ্যই স্বাধীনভাবে কল করা উচিত এবং শ্রেণীর বাইরে সংজ্ঞায়িত হয়।

পদ্ধতি - একটি পদ্ধতি কোডের একটি স্বতন্ত্র অংশ যা কিছু বস্তুর রেফারেন্সে ডাকা হয় এবং শ্রেণীর অভ্যন্তরে সংজ্ঞায়িত হয়।


স্ট্যাটিক ক্লাসে আপনি কোডের টুকরোটিকে কী বলে, এটিও স্থির, এটি কি কোনও পদ্ধতি বা কোনও ফাংশন? শ্রেণীর কোনও স্থির ক্রিয়াকলাপ / পদ্ধতিটির জন্য শ্রেণীর ঘোষিত শ্রেণীর কোনও সামগ্রীর প্রয়োজন হয় না
ওল্ফগাং রোথ

1

জাভা স্ক্রিপ্ট উদাহরণ ব্যবহার করে পদ্ধতি বনাম ফাংশনটির জন্য এখানে কিছু ব্যাখ্যা রয়েছে:

test(20, 50); ফাংশনটি সংজ্ঞায়িত করা হয় এবং কিছু পদক্ষেপ চালাতে ব্যবহার করে বা এমন কোনও কিছু ফিরিয়ে দেয় যা কোথাও সঞ্চিত / ব্যবহৃত হতে পারে।

আপনি কোডটি পুনরায় ব্যবহার করতে পারেন: একবার কোডটি সংজ্ঞায়িত করুন এবং এটি বহুবার ব্যবহার করুন।

আপনি বিভিন্ন যুক্তি দিয়ে বিভিন্ন ফলাফল তৈরি করতে একই কোডটি বহুবার ব্যবহার করতে পারেন।

var x = myFunction(4, 3);   // Function is called, return value will end up in x

function myFunction(a, b) {
    return a * b;          // Function returns the product of a and b
}

var test = something.test(); এখানে পরীক্ষা () কোনও বস্তু বা কাস্টমকে ইনবিল্ট অবজেক্টের জন্য প্রোটোটাইপ সংজ্ঞায়িত করার পদ্ধতি হতে পারে, এখানে আরও ব্যাখ্যা দেওয়া হয়েছে:

জাভাস্ক্রিপ্ট পদ্ধতি হ'ল পদক্ষেপগুলিতে সম্পাদন করা যায় এমন ক্রিয়া।

একটি জাভাস্ক্রিপ্ট পদ্ধতি এমন বৈশিষ্ট্য যা একটি ফাংশন সংজ্ঞাযুক্ত।

জাভাস্ক্রিপ্টে স্ট্রিংয়ের জন্য অন্তর্নির্মিত সম্পত্তি / পদ্ধতি:

var message = "Hello world!";
var x = message.toUpperCase();
//Output: HELLO WORLD!

কাস্টম উদাহরণ:

function person(firstName, lastName, age, eyeColor) {
    this.firstName = firstName;  
    this.lastName = lastName;
    this.age = age;
    this.eyeColor = eyeColor;
    this.changeName = function (name) {
        this.lastName = name;
    };
}

something.changeName("SomeName"); //This will change 'something' objject's name to 'SomeName'

আপনি স্ট্রিং, অ্যারে ইত্যাদির জন্য বৈশিষ্ট্যগুলিও সংজ্ঞায়িত করতে পারেন

String.prototype.distance = function (char) {
    var index = this.indexOf(char);

    if (index === -1) {
        console.log(char + " does not appear in " + this);
    } else {
        console.log(char + " is " + (this.length - index) + " characters from the end of the string!");
    }
};

var something = "ThisIsSomeString"

// now use distance like this, run and check console log

something.distance("m");

কিছু তথ্যসূত্র: জাভাস্ক্রিপ্ট অবজেক্টের পদ্ধতি , ফাংশন , প্রোটোটাইপের আরও তথ্য


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

প্রতিক্রিয়াটির জন্য আপনাকে ধন্যবাদ, আমি অন্য উত্তরটি টেইলরি করি নি, আমি সেই আনওয়ারটি মুছে ফেলেছি। :-)
লাহার শাহ

1

টি এল; ডিআর

একটি ফাংশন চালানোর জন্য কোডের একটি অংশ।
একটি পদ্ধতি কোনও অবজেক্টের অভ্যন্তরে একটি ফাংশন।

একটি ফাংশনের উদাহরণ:


function sum(){
  console.log("sum")l
}

একটি পদ্ধতির উদাহরণ:

const obj = {
a:1,
b:2,
sum(){
  }
}

সুতরাং আমরা কেন বলব যে কোনও ফাংশনের অভ্যন্তরে "এই" কীওয়ার্ডটি খুব কার্যকর নয় যদি না আমরা এটি কল, প্রয়োগ বা বাঁধাই ব্যবহার না করি .. কারণ কল, প্রয়োগ, বাইন্ড সেই ফাংশনটিকে অবজেক্টের অভ্যন্তরে একটি পদ্ধতি হিসাবে কল করবে ==> মূলত এটি পদ্ধতিতে ফাংশন রূপান্তর করে


1

এগুলি প্রায়শই আদান- প্রদানের যোগ্য হয় তবে একটি পদ্ধতি সাধারণত শ্রেণীর অভ্যন্তরে থাকা সাবরুটিনকে বোঝায় এবং একটি ফাংশন সাধারণত শ্রেণীর বাইরে সাব্রোটিনকে বোঝায়। উদাহরণস্বরূপ, রুবিতে:

# function
def putSqr(a)
   puts a ** 2
end


class Math2
   # method
   def putSqr(a)
      puts a ** 2
   end
end

জাভাতে, যেখানে সবকিছু (প্যাকেজ এবং আমদানির বিবৃতি ব্যতীত) অবশ্যই শ্রেণীর ভিতরে থাকতে হবে, লোকেরা প্রায়শই তাদের "পদ্ধতি" হিসাবে উল্লেখ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.