স্ট্রাকচার্ড প্রোগ্রামিং বনাম ওও প্রোগ্রামিং


11

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

কোন ধারনা ??


2
এই প্রশ্নটি প্রোগ্রামার্স.স্ট্যাকেক্সচেঞ্জ.কম এ জিজ্ঞাসা করা আপনাকে আরও উত্তর দেবে।
রেগি

2
আপনার শ্রোতা কি? অভিজ্ঞ অ-ও প্রোগ্রামাররা (কোবল ইত্যাদি)? স্বল্প অভিজ্ঞ প্রোগ্রামার (ছাত্র ইত্যাদি)? এক্সিকিউটিভ (মোটেই নন প্রোগ্রামার)?

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

কম অভিজ্ঞ
আহমেদ

4
আমি আশা করি কিছু ওও প্রোগ্রামগুলি আরও ভাল কাঠামোগত হয়েছে।
স্কট হুইটলক

উত্তর:


17

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

  • কাঠামোগত প্রোগ্রামিং হ'ল শৃঙ্খলাবদ্ধ করা (সরাসরি নিয়ন্ত্রণের স্থানান্তর)

  • ও প্রোগ্রামিংটি ফাংশনগুলির প্রতি নির্দেশকারীদের উপর শৃঙ্খলাবদ্ধ হয় (নিয়ন্ত্রণের পরোক্ষ স্থানান্তর)

  • কার্যনির্বাহী প্রোগ্রামিং নিয়োগের উপর শৃঙ্খলাবদ্ধ হয়।

    প্রথমটি বোঝা খুব কঠিন নয়। ডিজকસ્ત્રা আবিষ্কার করেছেন যে অ্যালগরিদমে যখন গিটোকে অনুমতি দেওয়া হয়েছিল তখন সঠিকতার সাধারণ প্রমাণ তৈরি করা অসম্ভব। তবে যদি নিয়ন্ত্রণ কাঠামোগুলি ক্রম, নির্বাচন এবং পুনরাবৃত্তির মধ্যে সীমাবদ্ধ ছিল, তবে সঠিকতার প্রমাণগুলি সম্ভব ছিল were অবশ্যই আমরা আজকাল জিনিসগুলি সঠিক প্রমাণ করার চেষ্টাও করি না, তবে আমরা কাঠামোগত প্রোগ্রামিংয়ের সরলতা এবং কমনীয়তা পছন্দ করি।

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

স্ট্রাকচার্ড প্রোগ্রামিং গোটো কীভাবে ব্যবহার করবেন না সে সম্পর্কে । ওও ফাংশনগুলিতে পয়েন্টার কীভাবে ব্যবহার করবেন না সে সম্পর্কে । এবং কার্যকরী প্রোগ্রামিংও কী না করা উচিত তা সম্পর্কে । ফাংশনাল প্রোগ্রামিংয়ে আমরা সবচেয়ে কঠোরভাবে নিয়ন্ত্রিত ক্ষেত্রে বাদে ভেরিয়েবলগুলি বরাদ্দ করি না।

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

কী করবেন না তা শেখা ভাল; কিন্তু এখানে ধকল প্রশ্ন: কী নতুন জিনিস আমরা শিখেছি আছে করতে হবে?


@ আহমেদ: "টিএল; ডিআর, ভিডিওর জন্য ধন্যবাদ" এর জন্য +1
শুভ

লিঙ্ক পচা ... মৃত লিঙ্ক
স্ল্যাশডটটিয়ার

7

কম্পিউটার প্রোগ্রাম করার 3 টি প্রাথমিক উপায় রয়েছে:

  1. কাঠামোগত প্রোগ্রামিং - এর সাথে gotoপুরানো বেসিক দোভাষী বা সমাবেশ ভাষায় in খুব কম লোক এইভাবে প্রোগ্রাম করে।
  2. কাঠামোগত অত্যাবশ্যক প্রোগ্রামিং - যেমন সি বা পাস্কাল।
  3. কাঠামোগত ফাংশনাল প্রোগ্রামিং - যেমন হাস্কেল, এমএল বা লিস্পে।

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


আমি আপনাকে ভাল বুঝতে পারছি না! আপনি বলতে চাইছেন যে আমরা অবশ্যই 3 টি দৃষ্টান্তের মধ্যে একটি ব্যবহার করব তবে আমরা জানি না .. এবং ওওপি আরও বেশি সংগঠন সম্পর্কে ??
আহমেদ

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

4

আপনি কীভাবে পরিবর্তনের প্রত্যাশা করছেন এগুলি সবই।

দুটি ধারণাই পুনঃব্যবহারযোগ্যতার জন্য নিজেকে ধার দেয় তবে ওওপি সহজেই পরিবর্তনের দরজা খুলে দেয়। ওওপি-তে স্ট্রাকচারাল প্রোগ্রামিংয়ের সমস্ত পুনঃব্যবহারযোগ্যতা রয়েছে তবে আপনি এটি কম চেষ্টা করে নতুন কার্যকারিতা তৈরি করতেও ব্যবহার করতে পারেন।

আপনি বলতে পারেন যে ওওপি স্ট্রাকচারাল প্রোগ্রামিংয়ের সমস্ত কার্যকারিতা উত্তরাধিকারের অতিরিক্ত কার্যকারিতা সহ উত্তরাধিকার সূত্রে প্রাপ্ত! :-D


আমি এই মুহুর্তে উত্তরাধিকারের খুব পছন্দ করি না।

4
আমিও নই, তার কারণ সরকার আমার দাদাকে তার পেনশন থেকে সরিয়ে দিয়েছে। ওওপির ক্ষেত্রে, যদিও উত্তরাধিকার আমাকে বেশ ভালভাবে সেবা করেছে!
করসিকা

আমার অভিজ্ঞতা হিসাবে, উত্তরাধিকার OOP এ সেরা এড়ানো হয়। কোনও ইন্টারফেসের বিপরীতে আপনি আসলে কতবার একটি সুপারক্লাস তৈরি করেন? একটি সাধারণ নিয়ম হিসাবে পছন্দ রচনা।
জানস

1
@ জাঙ্কস: "আপনি ইন্টারফেসের বিপরীতে আসলে কতবার একটি সুপারক্লাস তৈরি করেন?" তাই না? আপনি "সুপার ক্লাস তৈরি করেন না"; আপনি তাদের কাছ থেকে বিদ্যমান ক্লাস এবং বিল্ড subclasss নিতে, এবং আপনি কি যে সব সময়। যদি আপনি উত্তরাধিকার ব্যবহার না করে থাকেন তবে আপনি লিসকভের প্রতিস্থাপন এবং পলিমারফিজমের সুবিধা পাচ্ছেন না, তবে আপনি প্রথমে অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ে কী করছেন? রচনা হ'ল উত্তরাধিকারের প্রতিস্থাপন নয়, ভিন্ন ব্যবহারের ক্ষেত্রে একটি পৃথক সরঞ্জাম। আপনি একে অপরের উপর "অনুগ্রহ" করা উচিত নয়; আপনার উভয়কেই ব্যবহার করা উচিত, যার জন্য তারা দরকারী for
ম্যাসন হুইলারের

1
@ ম্যাসন - উল্লেখযোগ্য যে বারবারা লিসকভ (লিসকভ সাবস্টিটিউশন নীতিমালার) আসলে বলেছেন (দীর্ঘ ভিডিও) তিনি বিশেষত উত্তরাধিকার পছন্দ করেন না।
আইদন কুলি

2

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


1

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

তথ্য গোপন এবং মডুলারালিটির বিষয়ে কথা বলা স্বাভাবিকভাবেই ওওপিকে স্টাইল হিসাবে উত্সাহিত করার একটি ভাল উপায়।

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


0

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

ওওপি সহজ পরিবর্তনগুলির জন্য ডিজাইন করা হয়েছে। কাঠামোগত প্রোগ্রামে পরিবর্তন সম্ভব তবে কোড দ্বারা বর্ণিত হতে হবে। ওও প্রোগ্রামে পরিবর্তনটি বিমূর্ত মডেল পরিবর্তনের মাধ্যমে বর্ণনা করা যেতে পারে।


0

পরিবর্তনশীল সুযোগ:

আমি মনে করি ভাল প্রোগ্রামিং নিশ্চিত করার জন্য ভাষার একটি নীতি হল ভেরিয়েবলের পরিধি সীমাবদ্ধ করা । সি এর মতো কাঠামোগত ভাষায়, স্কোপটি মূলত দুটি ধরণের-

  • বিশ্বব্যাপী সুযোগ
  • স্থানীয় / কার্য / পদ্ধতি সুযোগ

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

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

এটি ওওপি-র দুর্দান্ত বৈশিষ্ট্যগুলির মধ্যে একটি।

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