ব্যতিক্রম কি একটি ওওপি ধারণা আছে?


37

গতকাল একটি পোস্ট পড়ে, আমি বুঝতে পেরেছি ব্যতিক্রমগুলির উত্স সম্পর্কে আমি বেশি কিছু জানি না। এটি কি কেবল ওওপি সম্পর্কিত ধারণা? আমি এটি মনে করি প্রবণতা, কিন্তু আবার ডাটাবেস ব্যতিক্রম আছে।


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

7
হাস্কেলের ব্যতিক্রম আছে এবং এটি মোটেও অবধি নয়
ড্যানিয়েল গ্রেটজার

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

একটি ব্যতিক্রম এবং একটি GOTO এর মধ্যে পার্থক্য কী একটি আকর্ষণীয় প্রশ্ন হবে would
অস্টিন হেনলি

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

উত্তর:


5

ব্যতিক্রমগুলি কোনও ওওপি ধারণা নয়।

তবে এগুলি একটি সামান্য ক্ষুদ্র বিন্দুতেও পুরোপুরি সম্পর্কিত নয়।

অন্যান্য উত্তরগুলি যেমন দেখিয়েছে: ব্যাতিক্রমের ধারণাটি এটি বেশ কয়েকটি নন-ওওপি ভাষায় তৈরি করেছে। এই ধারণার কোনও কিছুর জন্য ওওপি থেকে কিছু প্রয়োজন হয় না

তবে যে কোনও ওওপি ভাষা ওওপিকে গুরুত্ব সহকারে গ্রহণ করে সেগুলির ব্যতিক্রমগুলির প্রয়োজন হয় না কারণ ত্রুটি-পরিচালনা করার অন্যান্য পদ্ধতিগুলি একটি নির্দিষ্ট সময়ে ব্যর্থ হয়: কনস্ট্রাক্টর।

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

Foo myFoo = Foo("foo", "bar", 42);

তবে এর অর্থ এটি হচ্ছে যে কিছু ত্রুটির কারণে কনস্ট্রাক্টরও ব্যর্থ হতে পারে। ব্যতিক্রম ছাড়াই কীভাবে নির্মাণকারীর কাছ থেকে ত্রুটি সম্পর্কিত তথ্য প্রচার করবেন?

  • ফেরত মূল্য? কিছু ভাষায় ব্যর্থতা newকেবল ফিরে আসতে পারে nullতবে কোনও অর্থবহ তথ্য নয়। অন্যান্য ভাষায় (যেমন সি ++) myFooপয়েন্টার নয়। আপনি এটির বিরুদ্ধে পরীক্ষা করতে পারেন নি null। এছাড়াও আপনি myFooত্রুটি সম্পর্কে জিজ্ঞাসা করতে পারবেন না - এটি আরম্ভ করা হয়নি এবং তাই ওওপি চিন্তাভাবনায় "অস্তিত্ব নেই"।

  • বিশ্বব্যাপী ত্রুটি পতাকা? এনপ্যাপুলেটিং রাষ্ট্র এবং তারপরে কিছু বৈশ্বিক পরিবর্তনশীল সম্পর্কে এত কি? এইচ ... ;-) এ যান

  • একটি মিশ্রণ? কোনওভাবেই এর চেয়ে ভাল নয়।

  • ?

সুতরাং ব্যতিক্রমগুলি ওওপির চেয়েও বেশি মৌলিক ধারণা তবে ওওপি তাদের উপর প্রাকৃতিক উপায়ে তৈরি করে।


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

@ গ্যানাট: দ্য টু আরও জানায় যে ব্যতিক্রমগুলির উত্স সম্পর্কে তিনি জানেন না। সুতরাং ও ও জমিতে সর্বত্র ব্যতিক্রম কেন আমার সামান্য ব্যাকগ্রাউন্ড আমার কাছে ঠিক আছে বলে মনে হয়েছিল। ওয়াইএমএমভি
এএইচ

1
@ এএইচআর আমাকে প্রথম দিকের লাইন বাদে জিএনট-এর সাথে একমত হতে হবে, এটি সত্যই প্রশ্নটির সমাধান করে না। জিনাত সম্পর্কে আপনার প্রতিক্রিয়া ছিল "বলেছিলেন তিনি ব্যতিক্রমগুলির উত্স সম্পর্কে জানেন না" তবুও আপনি বাস্তবে ব্যতিক্রমগুলির উত্স দেননি, অবজেক্ট ইনস্ট্যান্টেশনের সময় ব্যতিক্রমের কিছু এলোমেলো ব্যবহার usage

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

44

এটি কি ওওপি সম্পর্কিত?

না। ব্যতিক্রম এবং OOP সম্পর্কিত নয়।

ব্যতিক্রম হ্যান্ডলিং ত্রুটিগুলি পরিচালনা করার একটি প্রক্রিয়া। একটি ব্যতিক্রম হ'ল পূর্বনির্ধারিত স্থানে মৃত্যুদন্ড কার্যকর করার বর্তমান অবস্থা সংরক্ষণ করে এবং এক্সেকশনটিকে একটি ব্যতিক্রম হ্যান্ডলার হিসাবে পরিচিত একটি নির্দিষ্ট সাবরুটিনে স্যুইচ করে।

সি এর তুলনা ( সত্যই ওওপি ভাষা নয় , সি-তে কোনওভাবে ব্যতিক্রম অনুকরণ করা সম্ভব ) এবং সি ++ (ওওপি, ব্যতিক্রমগুলি সমর্থন করে) কিছুই সি এর মানক কমিটি সি-তে ব্যতিক্রম হ্যান্ডেলিং থেকে বাধা দেয় না, এটি সি কে এখনও ওওপি ভাষা হিসাবে তৈরি করবে না।


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

12
এমনকি এমএস বেসিক 80 এর দশকের প্রথমদিকে ফর্ম হ্যান্ডলিংয়ের ব্যতিক্রম ছিল:ON ERROR GOTO xxxx
জার্নার্নি

1
@ ভাক তিনি উইন্ডোজের মেমোরি ডাম্প সম্পর্কেও কথা বলতে পারেন
জনল

11
@ জর্নার্নি ত্রুটি পরিচালনা করছেন? অবশ্যই। তবে কেউই এই ব্যতিক্রমটিকে হ্যান্ডলিং বলবে না। আসলে, এটি নিয়মিত (কাঠামোগত) ব্যতিক্রম হ্যান্ডলিংয়ের সাথে বিপরীতে ছিল ।
কনরাড রুডল্ফ

1
@ জর্নার্নী নিশ্চিত নয় যে আমি অনুসরণ করি; ব্যতিক্রম হ্যান্ডলিং হিসাবে আমি বুঝতে পেরেছি এটি ত্রুটি পরিচালনা করার একটি খুব নির্দিষ্ট উপায়। আমি যখন ব্যতিক্রম শুনি আমি সর্বদা try catchনির্মাণের কথা ভাবি ।
অ্যান্ডি

12

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

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

#include <stdio.h>
#include <setjmp.h>

jmp_buf test1;

void tryjump()
{
    longjmp(test1, 3);
}

int main (void)
{
    if (setjmp(test1)==0) {
        printf ("setjmp() returned 0.");
        tryjump();
    } else {
        printf ("setjmp returned from a longjmp function call.");
    }
}

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

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

জন্য +1 setjmp.h
মশা

9

উত্তর একটি সহজ NO।

ব্যতিক্রম সহ অ-ওও ভাষার পক্ষে একটি ভাল উদাহরণ হ'ল এডিএ।


4
হুঁ, এডিএ ওও ভাষা নয় কেন? মঞ্জুর, ADA83 পলিমারফিজমের অভাব ছিল তবে এটি এখনও অবজেক্ট ভিত্তিক হিসাবে বিবেচিত হতে পারে। এছাড়াও ADA95 সাল থেকে ভাষা সম্পূর্ণরূপে উদ্দেশ্য ভিত্তিক।
ইয়ানিস

আমি যতদূর জানি ব্যতিক্রম হ্যান্ডলিং ADA83 এর চেয়ে পুরানো তাই এডিএ নিজেই ব্যতিক্রম হ্যান্ডলিং সহ একটি অ-ওও।
উওয়ে প্লোনাস

2
@ ইয়ান্নিসিজোস: অ্যাডা ৩৩ এর প্যাকেজ এবং জেনেরিক প্যাকেজ রয়েছে তবে অবজেক্ট নয়। এডা 95 এর সাথে তাদের পরিচয় হয়েছিল।
mouviciel

2
@ ইন্নিস - পলিমারফিজম ছাড়াই অবজেক্টগুলি নেস্টেড ব্লকগুলি ছাড়া কাঠামোগত প্রোগ্রামিংয়ের মতো। পলিমারফিজম ওওপির অন্যতম নির্ধারিত বৈশিষ্ট্য। এমনকি এডা 95 তেও যে ধরণের রান-টাইম বাইন্ডিং সমর্থন করে তাদের "শ্রেণি" না দিয়ে "ট্যাগযুক্ত প্রকার" বলা হয়, যদিও এটি কেবল বানান। অ্যাডা 83 এর বৈকল্পিক রেকর্ড এবং অন্যান্য বিভিন্ন ধরণের রয়েছে, তবে এই ধরণের কোনওটিই ওওপি-র সাথে সুনির্দিষ্ট বৈশিষ্ট্য সরবরাহ করে না। অ্যাডা 83 মডিউলার এবং কাঠামোগত ছিল, তবে এটি উদ্দেশ্য ভিত্তিক ছিল না।
স্টিভ 314

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

7

ইতিমধ্যে এখানে কিছু খুব ভাল উত্তর। অপ-ওওপি প্রোগ্রামিং ভাষাগুলির জন্য অন্যান্য উদাহরণ ব্যতিক্রম রয়েছে:

  • ওরাকল পিএল / এসকিউএল

  • ক্লাসিক ভিজ্যুয়াল বেসিক (ভি 6 এবং নীচে, "অন ত্রুটি গোটো" IMHO ব্যতিক্রম হ্যান্ডলিংয়ের একটি ফর্ম)

(কথায় কথায়: আপনি উভয় ভাষায় কিছু ওও উপাদান খুঁজে পান, তবে ব্যতিক্রম হ্যান্ডলিং মেকানিকরা সেগুলি ব্যবহার করে না, আমার ধারণা gu ভাষাগুলিতে ওও উপাদান যুক্ত হওয়ার বহু বছর আগে ধারণাটি চালু হয়েছিল)।


কমপক্ষে ডস-এর পরবর্তী কুইকব্যাসিক সংস্করণগুলিতে (যা ভিজ্যুয়াল বেসিকের পূর্বাভাস করেছিল; উইকিপিডিয়া অনুসারে কিউবি 4.5 ছিল 1988, ভিবি 1.0 1991) ON ERROR GOTOসিনট্যাক্স ব্যবহার করে ত্রুটি করেছিল । এমনকি কুইকব্যাসিকের কয়েকটি ওও-অনুরূপ ধারণাগুলি ছিল (আমার মনে হয় কিউবি ৪.৫ এমনকি কোনও ধরণের শ্রেণিবদ্ধ সমর্থিত) তবে আপনি বেশিরভাগ-traditionalতিহ্যবাহী বেসিককে একটি সঠিক অবজেক্ট-ভিত্তিক ভাষা বলতে কঠোরভাবে চাপতে চাইবেন। [উইকিপিডিয়া ]
একটি সিভিএন

5

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

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

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

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


3

অন্যরা ভাষার উদাহরণ সহ সঠিকভাবে "না" উত্তর দিয়েছেন। আমি ভেবেছিলাম যে কোনও ভাষাতে ওওপি-কে জড়িত না করে কীভাবে ব্যতিক্রম যুক্ত করা যায় তার একটি উদাহরণ যুক্ত করে আমি প্রসারিত করতে পারি।

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

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

তারপরে আমরা যদি কার্নেল ভাষায় ব্যতিক্রম যুক্ত করি তবে আমাদের কোনও OOP- সমর্থন না থাকলেও তার ব্যতিক্রম থাকতে পারে language আমাকে কীভাবে দেখান:

স্ট্যাক এবং স্টোরেজ সহ একটি বিমূর্ত মেশিনের সংজ্ঞা দিয়ে আমরা আমাদের ভাষার প্রতিটি বিবৃতিতে কী করা উচিত তা বিবরণ দিতে পারি ( বিবৃতিটির শব্দার্থিক )। উদাহরণস্বরূপ skipস্ট্যাকের মধ্যে কিছুই করা উচিত নয়, A = 3স্ট্যাকটিতে এটিকে (/ একীকরণ করা) 3 আবদ্ধ করা উচিত।

আমরা কীভাবে আমাদের ব্যতিক্রমগুলি সংজ্ঞায়িত করা উচিত তার বাক্য গঠন যুক্ত করে শুরু করি । আমরা <statement>ডি কেএল- তে আরও দুটি ধারা যুক্ত করে এটি করি।

<statement>  ::== ... (old stuff)
                 | try <statement> catch <id> then <statement> end
                 | raise <id> end

এখানে পরিচিত চেষ্টা / ধরা, এবং ব্যতিক্রম বাড়াতে / নিক্ষেপের একটি উপায়।

বিমূর্ত মেশিনে কীভাবে তাদের কাজ করা উচিত তা দ্বারা আমরা তাদের শব্দার্থবিজ্ঞানের সংজ্ঞা দিই :


শব্দার্থক বক্তব্যটি চেষ্টা করুন : (try <statement1> catch <id> then <statement2> end)
করুন:

  1. শব্দার্থক বিবৃতি স্ট্যাকের উপর চাপুন (catch <id> then <statement2> end)
  2. শব্দার্থক বিবৃতি স্ট্যাকের উপর চাপুন (<statement1>)

নোট করুন যে বিবৃতি 1 স্ট্যাকের শীর্ষে থাকবে এবং প্রথমে কার্যকর করার চেষ্টা করা হবে।

উত্থাপন
মূল শব্দটি হল: (raise <id> end)
করুন:

  1. যদি আরও কিছু স্ট্যাকের উপরে না থাকে তবে থামুন এবং একটি অব্যক্ত ব্যতিক্রমের প্রতিবেদন করুন।
  2. অন্যথায়, স্ট্যাক থেকে প্রথম অর্থবোধ বিবৃতি পপ করুন। এটি যদি ক্যাচ স্টেটমেন্ট না হয় তবে 1 ধাপে যান।
  3. ফর্মটিতে স্ট্যাকের উপরে (catch <id> then <statement> end)
    পুশ করে আমরা একটি ক্যাচ পেয়েছি (<statement>)

ক্যাচ
আমরা যদি সাধারণ সম্পাদনের সময় একটি ক্যাচ-স্টেটমেন্ট দেখি তবে এর অর্থ হ'ল ভিতরে যা ছিল তা এই স্তরের ব্যতিক্রম না বাড়িয়েই মৃত্যুদণ্ড কার্যকর করা হয়েছে। সুতরাং আমরা কেবল catchস্ট্যাকের পপ এবং কিছুই করি না।

কিয়েড, আমাদের ব্যতিক্রম রয়েছে এবং OOP এর কোনও সম্ভাবনা নেই with

আমি অ্যাবস্ট্রাক্ট মেশিন থেকে পরিবেশের অংশটিকে সরল করে তুলতে সরিয়েছি।


1

না।

আইআইআরসি, ব্যতিক্রমগুলি প্রথম ওও ভাষার আগে উপস্থিত হয়েছিল। আফাইক, ব্যতিক্রমগুলি প্রথমদিকে এলআইএসপি বাস্তবায়ন দ্বারা সমর্থিত হয়েছিল। প্রাথমিক কাঠামোগত ভাষা (যেমন ALGOL) এবং প্রাথমিক ওও ভাষা (যেমন সিমুলা) ব্যতিক্রমগুলি সমর্থন করে না।


অ্যালগন, 68 এর অবশ্যই ব্যতিক্রম ছিল ("ইভেন্ট"), তবে এর সমস্ত কিছুও ছিল। পিএল / আমার কাছে সেগুলি ছিল ("শর্তাবলীতে"), এবং তাদের ব্যবহারের বর্ণনা দেওয়ার জন্য 1969 সালের সাহিত্য রয়েছে।
রস প্যাটারসন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.