কোন সমস্যার জন্য অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ভাল পছন্দ নয়? [বন্ধ]


19

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

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

সুতরাং আমি আপনাকে জিজ্ঞাসা করতে চেয়েছিলাম, কোন বিষয়গুলির জন্য বাছাইয়ের সমস্যাগুলি কী হবে যার জন্য ভাল উদ্দেশ্য নয়? পদ্ধতিগত প্রোগ্রামিং তুলনায়?


উত্তর:


8

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

উইলিয়াম কুক বস্তু এবং বিমূর্ত তথ্য প্রকারের মধ্যে পার্থক্যটি সুন্দরভাবে ব্যাখ্যা করেছেন।

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


5

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


3
ডিকোপলিং হ'ল ওও প্রোগ্রামিংয়ের একটি দুর্দান্ত পার্শ্ব-প্রতিক্রিয়া, তবে আমি বলব যে ওও প্রোগ্রামিংয়ের প্রাথমিক সুবিধাটি কার্যকারিতার সাংগঠনিক এনক্যাপসুলেশন is
রবার্ট হার্ভে

1
@ রবার্ট হার্ভে: আমার একই বাস্তবতার ভিন্ন দৃষ্টিভঙ্গি রয়েছে: আমার কাছে কার্যকারিতার সাংগঠনিক এনক্যাপসুলেশন হ'ল ডুউপলিং অর্জনের উপায় যা ফলস্বরূপ পুনঃব্যবহারযোগ্যতার সুযোগ দেয়।
mouviciel

@ রবার্ট হার্ভে: সংযোগ এবং সংহতি দুটি মূলত একই জিনিসটি দেখার জন্য দুটি উপায়, যা একধরনের লোকেশন যেখানে আপনি খুব বেশি কিছু বোঝার দরকার না রেখেই কিছু বুঝতে পারবেন।
ডেভিড থর্নলে

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

3

সম্মতি: লকিং ব্যবস্থাটি একধরণের সমস্যাযুক্ত বলে মনে হচ্ছে; প্রকল্পগুলির থ্রেডিং অংশে কাজ করার জন্য কেবলমাত্র খুব ভাল বিকাশকারীকে রাখা হয়েছে

প্রসারিত: বর্তমান ওও ভাষাগুলি কতটা প্রসারণযোগ্য তা জানেন না। কেবলমাত্র জেনে নিন যে জাভা খারাপ। এর জন্য ডিএসএল (ডোমেন-নির্দিষ্ট ভাষা) ফ্রেমওয়ার্ক হিসাবে প্রয়োগ করতে হবে। অন্যদিকে ক্লোজার (এটি কার্যকরী), ম্যাক্রোগুলি রয়েছে।


লকিং যুক্তিটির পক্ষে +1 - প্রমাণ বলে মনে হচ্ছে যে পরিবর্তনীয় জিনিসগুলিতে লক করা যুক্তি OO ভাষাগুলির একটি নির্দিষ্ট বিন্দু ছাড়াই নিয়ন্ত্রণহীনভাবে জটিল হয়ে উঠেছে
মাইক্রা

একমত হওয়ার জন্য +1 অবজেক্টের অনুরূপ ধারণা কিন্তু সমঝোতা সমর্থন একটি অভিনেতার মত। অভিনেতা সমকালীন সত্তা যা অ্যাসিক্রোনাস বার্তা বিনিময় করে যোগাযোগ করে।
জর্জিও

সমঝোতার উপর Ditto; আমি উক্তিটি দিয়েছি যে ওও আপনাকে রাষ্ট্রের পৃথক ইউনিটগুলি সনাক্ত করতে / বজায় রাখতে উত্সাহিত করার ক্ষেত্রে প্রকৃত সম্মতিযুক্ত বিষয়গুলিকে উত্সাহিত করে।
ব্যবহারকারী 1172763

0

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

একটি কোর অ্যালগরিদম মত qsort()স্বেচ্ছাসেবী বস্তুর তুলনা জন্য বিমূর্ততা ব্যবহার করে। fread()স্ট্রিম ইত্যাদির বিবরণ বিমূর্ত করতে একটি ইন্টারফেস ব্যবহার করে etc.

সেই দৃষ্টিকোণ থেকে আমার মনে হয় যে কোনও নির্দিষ্ট সমস্যা রয়েছে যা অ-ওও পদ্ধতির মাধ্যমে আরও ভাল সমাধান করা উচিত with


0

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

থটস?


0

খাঁটি অবজেক্ট ওরিয়েন্টেড ভাষা অনেক ক্ষেত্রে উপযুক্ত নয় for কারণ খাঁটি অবজেক্ট ওরিয়েন্টেড ভাষা হওয়ার জন্য কিছু মানদণ্ড পূরণ করতে হবে। দেখুন- /programming/250062/ কি-is-meant-by-the-term-true-object-orientation/250098#250098

তবে বেশিরভাগ বহুল ব্যবহৃত প্রোগ্রামিং ভাষা হ'ল বহু-দৃষ্টান্ত। তারা বিভিন্ন ধরণের প্রোগ্রামিং এবং বিকাশের সমস্যার মুখোমুখি হওয়ার জন্য অনেকগুলি অ-ওও বৈশিষ্ট্য সমন্বিত করে। সি ++, সি #, জাভা বা রুবি সবার অ-ওও কার্যকারিতা রয়েছে। সুতরাং, তারা এমন সমস্যার মুখোমুখি হতে পারে যে খাঁটি-ওও ভাল নয়।


0

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

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

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

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

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