ওওপি শক্ত না কারণ এটি প্রাকৃতিক নয়?


86

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

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

আমরা দ্বি-প্রতিযোগী (কখনও কখনও তুচ্ছ, যেমন উদাহরণস্বরূপ, "আমি আপনাকে ফুল দিয়েছি") পদে বিবেচনা করি যেখানে ক্রিয়াপদটি এমন একটি ক্রিয়া (সম্পর্ক) যা কিছু ফল / ক্রম উত্পাদন করতে দুটি বস্তুর উপর পরিচালিত হয়। ফোকাস কর্মের উপর, এবং দুই (বা তিন) [ব্যাকরণগত] বস্তু সমান গুরুত্ব আছে।

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

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

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

এই সমস্যাগুলি দেওয়া, কীভাবে / কেন এমন ঘটল যে বর্তমানে ওওপি করার মূলধারার পদ্ধতিটি এত জনপ্রিয় হয়েছিল? এবং কিছু, যদি এটি ক্ষয়ক্ষতির জন্য করা যেতে পারে?


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

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

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


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

উত্তর:


97

কিছু সমস্যার জন্য ওওপি অপ্রাকৃত। পদ্ধতিগত। তাই কার্যকর। আমি মনে করি ওওপির দুটি সমস্যা রয়েছে যা সত্যই এটি শক্ত দেখাচ্ছে seem

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

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

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

    গ। কার্যক্ষম তখন সেরা যখন আপনার কাছে এমন কিছু থাকে যা ঘোষিতভাবে লিখতে মোটামুটি সহজ যে কোনও রাজ্যের অস্তিত্বই এমন একটি বাস্তবায়ন বিশদ যা সহজেই বিমূর্ত হয়ে যায়। উদাহরণ: মানচিত্র / সমান্তরালতা হ্রাস করুন।

  2. ওওপি সাধারণত বড় প্রকল্পগুলিতে তার কার্যকারিতা দেখায় যেখানে কোডের ভাল-এনক্যাপসুলেটেড টুকরোগুলি থাকা সত্যিই প্রয়োজনীয়। প্রারম্ভিক প্রকল্পগুলিতে এটি খুব বেশি ঘটে না।


4
আমি মনে করি যে প্রশ্নটির একটি গুরুত্বপূর্ণ বিষয়টি ওওপি প্রাকৃতিক কিনা তা নয়, তবে ওওপি-র কাছে মূলধারার পদ্ধতিটি সবচেয়ে প্রাকৃতিক ওওপি পদ্ধতির কিনা। (যাইহোক ভাল উত্তর।)
জর্জিও

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

2
প্রক্রিয়াগত / কার্যকরী থেকে ওওপি সত্যই ভিন্ন ধরণের; এটি কীভাবে কোডটি সংগঠিত এবং এনক্যাপসুলেট করবেন, কীভাবে অপারেশনগুলি বর্ণনা করবেন তা মোকাবেলা করে না। (আপনি সর্বদা একটি মৃত্যুদন্ডের দৃষ্টান্তের সাথে ওওপি অংশীদার হন Yes হ্যাঁ, এখানে ওওপি + কার্যকরী ভাষা রয়েছে))
ডোনাল ফেলো

1
এটা কী বলা যায় না যে ওওপি হ'ল আমরা বাক্সগুলিকে কেবল প্রক্রিয়াভিত্তিক স্টাফ রেখেছি?
এরিক পুনরায়

ওওপি-তে, আপনি এখনও পদ্ধতি লিখতে পারেন। প্রসিডেরাল প্রোগ্রামিংয়ের চেয়ে ওওপি কে দুর্বল করে তোলে?
Mert Akcakaya

48

আইএমএইচও এটি ব্যক্তিগত স্বাদ এবং চিন্তাভাবনার প্রশ্ন। ওও নিয়ে আমার খুব বেশি সমস্যা নেই।

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

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

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

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

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

তবে তাদের এখনও প্রসঙ্গে তাদের সুস্পষ্ট সংজ্ঞাযুক্ত ভূমিকা রয়েছে: বিষয়, অবজেক্ট, ক্রিয়া ইত্যাদি "আমি আপনাকে ফুল দিয়েছি" বা "আপনি আমাকে ফুল দিয়েছিলেন" এক নয় ("ফুল আপনাকে আমাকে দিয়েছে" উল্লেখ করার মতো নয়: -)

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

আমি এর সাথে একমত নই। আইএমএইচও ইংরেজি বাক্যটি "বিল, নরকে যাও" bill.moveTo(hell)বরং প্রোগ্রাম কোডে আরও স্বাভাবিকভাবে পড়ছে move(bill, hell)। এবং প্রাক্তনটি আসলে আসল সক্রিয় কণ্ঠের আরও এনালগ।

সুতরাং কেউ সিদ্ধান্ত নিতে হবে যে কেউ টার্মিনাল উইন্ডো.শো (কিছু পাঠ্য) বা কিছু টেক্সট.শো (টার্মিনাল উইন্ডো) বলবে কিনা

আবার, টার্মিনালটিকে কিছু পাঠ্য দেখানোর জন্য জিজ্ঞাসা করা বা টার্মিনালটি টার্মিনালটি প্রদর্শন করতে বলা অনুরূপ নয়। আইএমএইচও এটি একেবারেই প্রকট যা কোনটি প্রাকৃতিক।

এই সমস্যাগুলি দেওয়া, কীভাবে / কেন এমন ঘটল যে বর্তমানে ওওপি করার মূলধারার পদ্ধতিটি এত জনপ্রিয় হয়েছিল?

সম্ভবত ওও বিকাশকারীদের সংখ্যাগরিষ্ঠরাই ওওকে আপনার চেয়ে আলাদাভাবে দেখেন?


15
অ্যালান কে থেকে বস্তুর মধ্যে এবং তাদের
গুরুত্বগুলির

3
@ জভ্রবা, প্রকৃতপক্ষে অন্যান্য ওও অগ্রগামীও ছিলেন, তবে এটি এই আলোচনার মূল বিষয়টির পাশে beside "সবচেয়ে স্বাভাবিক জিনিসটি পাঠ্যটি দেখানোর জন্য জিজ্ঞাসা করা হয়েছে।" - এখন আপনি যে দাবি করেছেন একই প্যাসিভ ভয়েসটি আপনি দাবি করেছেন যে ওওপিতে এটি "অপ্রাকৃত"।
পিয়েটার তারেক

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

6
@ zvrba, এটি প্রতি ও ও নয়, এমন একটি বিকাশকারী / ডিজাইনার যিনি বিভিন্ন বস্তুর ভূমিকা এবং দায়িত্ব সম্পর্কে সিদ্ধান্ত নেন। ওও পদ্ধতির সাহায্যে ভাল বা খারাপ ডোমেন মডেল এবং ডিজাইন পাওয়া যায়, ঠিক যেমন একটি ছুরি ব্যবহার করে আপনি সূক্ষ্ম রুটির টুকরো বা রক্তপাতের আঙুল পেতে পারেন - তবুও আমরা ছুরিটিকে দোষ দিই না, কারণ এটি কেবল একটি সরঞ্জাম। আরও লক্ষ করুন যে মডেলের ধারণাগুলি / অবজেক্ট / এজেন্টগুলি বাস্তব বিশ্বের জিনিসগুলির বিমূর্ততা এবং যেমন সর্বদা সীমাবদ্ধ এবং বিকৃত হয় কেবল নির্দিষ্ট "আকর্ষণীয়" দিকগুলিতে ফোকাস করে।
পিটার টারিক

6
@zvrba, একটি গাড়ী প্রকৃতপক্ষে নিজের ইচ্ছার শুরু করে না - ঠিক যেমন কোনও Carবস্তু start()কেবল তখনই তার পদ্ধতিটি যখন কোনও ব্যক্তির দ্বারা ডাকা হয়।
পিয়েটার টার্ক

10

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

... তবে ওওপির ফোকাসটি পৃথক ক্লাস এবং তাদের শ্রেণিবিন্যাস ডিজাইন করছে।

ওওডি এটি সম্পর্কে নয়। ওওডি জিনিসগুলি কীভাবে আচরণ করে এবং ইন্টারঅ্যাক্ট করে তা নির্ধারণের বিষয়ে।

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

OOD- এ ফোকাস সর্বদা কর্মের দিকে থাকে, যেখানে ক্রিয়া হ'ল বস্তুর আচরণ। অবজেক্টগুলি তাদের আচরণ ছাড়া কিছুই নয়। OOD এর একমাত্র অবজেক্ট সীমাবদ্ধতা হ'ল সবকিছুই কিছু না কিছু করে করতে হয়।

আমি কুকর্মীকে আরও গুরুত্বপূর্ণ হিসাবে দেখছি না তবে জিনিসটি এটির সাথে কিছু করেছে।

তবে কেন এমন কোনও তাত্পর্যপূর্ণ সিদ্ধান্তের সাথে লোকেরা বোঝা নেবে যখন কোনও বাস্তবিক পরিণতি নেই যখন সত্যিকার অর্থে শো (টার্মিনাল উইন্ডো, সামারটেক্সট) দেখানো হয়?

আমার কাছে এটি একই জিনিস একটি আলাদা স্বরলিপি সহ। আপনাকে এখনও সিদ্ধান্ত নিতে হবে কে শো-এর এবং কে শো-ই। একবার আপনি এটি জানতে পারবেন, তারপরে OOD- তে কোনও সিদ্ধান্ত নেই। উইন্ডোজ টেক্সট প্রদর্শন -> উইন্ডো। প্রদর্শন করুন (পাঠ্য)।

সেখানে প্রচুর পরিমাণে জিনিস (বিশেষত উত্তরাধিকারের অঞ্চলে) বলে যে এটি যখন না তখন ওও O উদাহরণস্বরূপ এখানে প্রচুর পরিমাণে সি ++ কোড রয়েছে যা ওওডির একটি ডুমুর বাস্তবায়ন করে না।

আপনি কম্পিউটারের জন্য কোনও সমস্যার সমাধান করছেন এমন মানসিকতাটি ভেঙে গেলে ওওডি সহজ। স্টাফ করে এমন জিনিসগুলির জন্য আপনি সমস্যার সমাধান করছেন।


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

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

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

4
@ অ্যান্টোনিও ২০১১ এ, কোনও একক প্রোগ্রামিং বা মডেলিং দৃষ্টান্ত নেই যা সম্ভাব্য সমস্ত সমস্যা ডোমেনগুলি দক্ষতার সাথে কভার করতে পারে। ওওপি, ক্রিয়ামূলক, ডেটাফ্লো, প্রথম-আদেশের যুক্তি, অন্য যাই হোক না কেন - এগুলি সবই সমস্যাযুক্ত ডোমেন-নির্দিষ্ট দৃষ্টান্ত এবং আরও কিছু নয়। আমি কেবল সমস্যা সমাধানের বৈচিত্র্য এবং মুক্তমনা দৃষ্টিভঙ্গির পক্ষে পরামর্শ দিচ্ছি। আপনার চিন্তাকে একক দৃষ্টান্তকে সঙ্কুচিত করা কেবল বোকামি। সর্বজনীন পদ্ধতির সবচেয়ে কাছের জিনিসটি, আপনাকে কোনও একক শব্দার্থক কাঠামোর মধ্যে সীমাবদ্ধ করে না, এটি হ'ল এন.ইউইকিপিডিয়া.র.উইকি
-

3
@ কলমারিয়াস আপনি কম্পিউটারের জন্য প্রোগ্রামিংকে সহজ করে তুলবেন কেন? এটা ঠিক নির্বোধ। এটি এমন মানুষ যাঁকে আরও কঠোর পরিশ্রম করতে হবে।
ম্যাট এলেন

7

হতে পারে, আমি পয়েন্টটি পেতে সক্ষম নই, তবে:

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

আমার জন্য, এটি বেশ স্পষ্ট: একটি কুকুর একটি প্রাণী, একটি প্রাণী অবশ্যই খাওয়া উচিত, আমার কুকুর একটি কুকুর, তাই এটি অবশ্যই খাওয়া উচিত ...

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

আমি স্বীকার করি, আধুনিক ওও-ভাষাগুলির কিছু নির্মাণ কিছুটা বিশ্রী হলেও এটি বিবর্তন।


1
কোবল থেকে দুর্গানে, তারপরে সমাবেশে (এবং বাকী) সরে যাওয়ার জন্য আপনার ঠিক কী কাজ ছিল?
রক

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

1
আমি তাতে কোন প্রতিক্রিয়া জানাইনি। আপনার কাজের ডোমেইনে আরও; কারণ আমি অনেক লোককেই জানি না (সত্যই কেউ) যারা সিওবিওএল (ব্যবসায়িক দিকনির্দেশক), ফোরটারান (বৈজ্ঞানিক ডোমেন), এসেম্বলার (আরও সিএস ওরিয়েন্টেড) এবং তারপরে other অন্যান্যগুলি নিয়ে কাজ করেছেন। তবুও তারা পেশাদার প্রোগ্রামার হচ্ছে বা না।
রুক

1
কোনও রহস্য নেই: দল এবং প্রকল্পগুলিতে যোগদান যেখানে ল্যাঙ্গোয়েজ পদ্ধতির সিদ্ধান্ত নেওয়া হয়েছিল আগে। এবং যে সরঞ্জামগুলি তারা ব্যবহার করছিল সে সম্পর্কে কৌতূহলের কিছু অ-তুচ্ছ স্তর।
নেরেভার

6

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

তারপরে আমি এসআইসিপি পড়েছি এবং একটি নতুন উপলব্ধিতে এসেছি যে এটি আসলে ডেটা ধরণের এবং তাদের অ্যাক্সেসকে নিয়ন্ত্রণ করার বিষয়ে was আমি যে সমস্যাগুলি শেষ করে দিয়েছি সেগুলি একটি মিথ্যা ভিত্তির উপর ভিত্তি করে তৈরি হয়েছিল যে ওওপিতে আপনি বিশ্বের মডেলিং করছেন।

এই ভ্রান্ত ভিত্তিটি আমাকে যে অবিচ্ছিন্ন সমস্যাটি দিয়েছিল আমি এখনও অবাক হয়েছি (এবং কীভাবে আমি নিজেকে এটির কাছে দেখি)।


বিশ্বের মডেল করার চেষ্টা করার বিপদটি নির্দেশ করার জন্য আপনাকে ধন্যবাদ।
শান ম্যাকমিলান

4

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


5
ঠিক আছে, বাস্তব বিশ্বের সঠিকভাবে বর্ণনা করার চেষ্টা করে যে কোনও প্রকার আনুষ্ঠানিক স্বরলিপি এটি সমানভাবে সত্য।
পিয়েটার টার্ক

1
@ পেটার টার্ক, ঠিক আমার বক্তব্য। এমন কোনও একক আনুষ্ঠানিকতা নেই যা সমস্ত কিছু coversেকে রাখে। আপনাকে তাদের সমস্ত ভয়ঙ্কর জনতার মধ্যে ব্যবহার করতে হবে। এবং এই কারণেই আমি কোনও ভাষা-ভিত্তিক প্রোগ্রামিংয়ে বিশ্বাস করি - এটি বিভিন্ন, প্রায়শই বেমানান ফর্মালিজমিকে একটি কঠিন কোড সত্তায় রূপান্তর করতে দেয়।
এসকে-লজিক

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

1
"শ্রেণিবদ্ধ শ্রেণিবৃত্তি" এর মতো একটি শব্দ ব্যবহার করে, আমি মনে করি আপনি উত্তরাধিকার সম্পর্কে ভাবছেন। উত্তরাধিকার সম্পর্কে আসলেই বলা শক্ত। এজন্য লোকেরা উত্তরাধিকারের চেয়ে বেশি রচনা তৈরির পরামর্শ দেয়।
ফ্রাঙ্ক শিয়েরার

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

4

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

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

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

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

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


3

এটি ওওপি-তে কী সমস্যা হয়েছে তার কেবলমাত্র একটি অংশ।

মূলত, ফাংশনগুলি দ্বিতীয় শ্রেণির নাগরিক হয় এবং এটি খারাপ।

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


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

3

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


3

সম্পাদিত

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

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

অন্যদিকে, অবজেক্ট-ওরিয়েন্টেশনের প্রবক্তারা দাবি করেন যে কোনও সিস্টেমের প্রাথমিক বিকাশের সময় ওওপি অপরিহার্যতার তুলনায় আরও বেশি সময় নিতে পারে, দীর্ঘমেয়াদে কোডটি বজায় রাখা এবং প্রসারিত করা সহজতর হয় ডেটা এবং এর মধ্যে দৃ tight় সংযোজনের কারণে and অপারেশন।

আমি মূলত ওওপি ভাষাগুলি (সি ++, জাভা) নিয়ে কাজ করেছি তবে আমি প্রায়শই অনুভব করি যে আমি বড় প্রকল্পগুলির জন্য তাদের চেষ্টা করার পরেও আমি পাস্কাল বা অ্যাডা ব্যবহার করে উত্পাদনশীল হতে পারি।

OOP এর সাথে এটির বিপরীতে যেখানে আপনাকে প্রথমে একটি অবজেক্ট (বিশেষ্য) খুঁজে পেতে হবে এবং অন্য কোনও অবজেক্টে কিছু ক্রিয়াকলাপ করতে বলবে।

[কাটা]

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

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

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

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


3

একচেটিয়াভাবে ওওপি দৃষ্টান্ত অনুসন্ধান করা বন্ধ করুন এবং কিছু জাভাস্ক্রিপ্ট চেষ্টা করুন।

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

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

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

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

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


2

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

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

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


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

2

শ্রেণিবিন্যাসের মাধ্যমে বিশ্বকে চিন্তা করার প্রাকৃতিক উপায়। ওও যা কমবেশি এটি। ওওপি শক্ত কারণ প্রোগ্রামিং শক্ত।


তবে আপনি কিছু বস্তুর সাধারণ বৈশিষ্ট্য বা সাধারণ আচরণ রয়েছে কিনা সে অনুযায়ী শ্রেণিবদ্ধ করেন? নাম এবং উপাধি রয়েছে এমন সমস্ত কি একজন ব্যক্তির নাম? সমস্ত কি একটি প্রাণী হাঁটা?
zvrba

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

1
@zvrba: প্রশ্ন মন্তব্যে যাকে জাহির আমার উত্তর হল it doesn't matter। যার একটি নাম এবং একটি উপাধি রয়েছে তা প্রতিটি প্রোগ্রামের একজন ব্যক্তি যা কেবলমাত্র মানুষের যত্ন করে। কোনও প্রোগ্রাম মানুষ বা অ- মানুষ কোন জ্ঞান আছে যা জন্য, এটি একটি এর IHasNameAndSurname। অবজেক্টগুলির কেবল হাতে সমস্যাটি সমাধান করা দরকার।
টম ডব্লিউ

@ জেফ হে এমনকি একই প্রজাতি / জাত / জনগোষ্ঠীর মধ্যেও বিভিন্নতা রয়েছে এবং এর আদর্শ (প্রয়োজনীয়) উদাহরণ নেই। সুতরাং, হ্যাঁ ওও প্রকৃতি প্রকৃতপক্ষে যেমনটি নয়, তবে মানুষ কীভাবে প্রাকৃতিকভাবে চিন্তা করে তার পক্ষে এটি বেশ উপযুক্ত।
টম হাটিন -

2

আমি মনে করি যখন লোকেরা বাস্তবতা উপস্থাপনের জন্য ওওপি ব্যবহার করার চেষ্টা করে তখন কিছু অসুবিধা হয়। সকলেই জানেন যে একটি গাড়ীর চার চাকা এবং একটি ইঞ্জিন রয়েছে। সবাই জানে যে কার পারেন Start(), Move()এবং SoundHorn()

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


1

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

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

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


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

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

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

1
"এটি পুঁজিবাদ সম্পর্কে পুরাতন উক্তিটির মতো, আমরা যা চেষ্টা করেছি সেগুলি বাদ দিয়ে ওওপি সেখানে সফ্টওয়্যার সংগঠিত করার জন্য সবচেয়ে খারাপ ব্যবস্থা" ": সম্ভবত আমরা দীর্ঘদিন চেষ্টা করিনি। :-)
জর্জিও

1
আমি মনে করি আপনি 'গণতন্ত্র' বলতে চাইছেন: quotationspage.com/quote/364.html
nicodemus13

1

কোন । প্রোগ্রামিং ব্যবহার করে সমস্যা সমাধানের বিভিন্ন উপায় রয়েছে: ক্রিয়ামূলক, কার্যবিধায়ক, যৌক্তিক, ওওপি, অন্যান্য।

বাস্তব বিশ্বে, কখনও কখনও লোকেরা কার্যকরী দৃষ্টান্ত ব্যবহার করে এবং কখনও কখনও আমরা পদ্ধতিগত দৃষ্টান্ত ব্যবহার করি। এবং কখনও কখনও আমরা মিশ্রিত। এবং শেষ পর্যন্ত আমরা তাদেরকে একটি নির্দিষ্ট স্টাইল বা প্রোগ্রামিংয়ের দৃষ্টান্ত হিসাবে প্রতিনিধিত্ব করি।

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

ওওপি এবং "সবকিছুই একটি তালিকা বা আইটেম" প্যারাডিমগুলি আরও প্রাকৃতিক প্রোগ্রামিং শৈলীর মধ্যে 2 বিবেচনা করা হয় , কারণ আমি কিছু কৃত্রিম বুদ্ধিমত্তার ক্লাসে মনে করি।

আমার কাছে অদ্ভুত শোনায়, "ওওপি প্রাকৃতিক নয়", আপনি যেভাবে শিখছেন বা ওওপি সম্পর্কে আপনাকে যেভাবে শেখানো হয়েছে তা ভুল, তবে নিজেই ওওপি নয়।


1

এই সমস্যাগুলি দেওয়া, কীভাবে / কেন এমন ঘটল যে বর্তমানে ওওপি করার মূলধারার পদ্ধতিটি এত জনপ্রিয় হয়েছিল? এবং কিছু, যদি এটি ক্ষয়ক্ষতির জন্য করা যেতে পারে?

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

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


ওপি তর্ক করে না যে ওও সাধারণভাবে খারাপ এবং তাকে ক্ষমতাচ্যুত করা উচিত তবে "বর্তমানে ওওপি করার মূলধারার পদ্ধতি" সবচেয়ে স্বাভাবিক নয় ("একাধিক প্রেরণের" তুলনায়)।
জর্জিও

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

1

আমি মনে করি ওওপি এবং ওওপি ভাষাগুলিতেও সমস্যা আছে।

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

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

আরেকটি বিষয় হ'ল কম্পিউটার কেবল নির্দেশগুলি ক্রমানুসারে কার্যকর করে। আসুন ধরে নেওয়া যাক আপনার একটি VCRএবং একটি Televisionঅবজেক্ট রয়েছে, আপনি কীভাবে ভিডিও খেলবেন? আপনি সম্ভবত কিছু লিখুন:

connect(television, vcr);
vcr.turnOn();
television.turnOn();
insert(vcr, yourFavoriteCasette);
vcr.play();
while (vcr.isPlaying()) {} // Wait while the VCR is playing the casette.
vcr.eject();
vcr.turnOff();
television.turnOff();

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

সুতরাং আমি মনে করি একটি অবজেক্ট অরিয়েন্টেড ডিজাইন বিশ্বকে বেশ ভালভাবে বর্ণনা করতে পারে তবে এটি কম্পিউটারের জন্য সেরা বিমূর্ততা নয়।


0

কটাক্ষপাত ডিসিআই (ডেটা, প্রসঙ্গ এবং পারস্পরিক আদানপ্রদান) MVC প্যাটার্ন উদ্ভাবক দ্বারা আবিষ্কৃত।

ডিসিআই এর লক্ষ্য (উইকিপিডিয়া থেকে উদ্ধৃত):

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

এখানে লেখকদের একটি ভাল নিবন্ধ এবং আপনি যদি কিছু কোড দেখতে চান তবে এখানে একটি ছোট উদাহরণ প্রয়োগকরণ (। নেট) is এটি শোনার চেয়ে অনেক সহজ এবং খুব স্বাভাবিক অনুভূত।


0

একজন প্রায়শই শুনতে পারেন যে ওওপি প্রাকৃতিকভাবে লোকেরা বিশ্ব সম্পর্কে যেভাবে চিন্তা করে তার সাথে মিলে যায়। তবে আমি এই বক্তব্যের সাথে দৃ strongly়ভাবে একমত নই (...)

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

(...) তবে ওওপির ফোকাসটি পৃথক ক্লাস এবং তাদের শ্রেণিবিন্যাসকে ডিজাইন করছে।

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

"" অবজেক্ট "এবং" অবজেক্ট ওরিয়েন্টেড "এর সরল, আধুনিক সংজ্ঞাগুলির জন্য একটি প্রস্তাব http://wcook.blogspot.com.br/2012/07/proposal-for-somplified-modern.html

এই সমস্যাগুলি দেওয়া, কীভাবে / কেন এমন ঘটল যে বর্তমানে ওওপি করার মূলধারার পদ্ধতিটি এত জনপ্রিয় হয়েছিল?

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

এবং কিছু, যদি এটি ক্ষয়ক্ষতির জন্য করা যেতে পারে?

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

সবশেষে, আপনার অনুসন্ধানগুলি আমাদের সাথে ভাগ করুন।


-1

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

উত্তরাধিকার এবং ইন্টারফেস স্তরক্রম হ'ল "জিনিস" যা উপ-উপাদান হিসাবে অবজেক্টগুলিকে ব্যবহার করে। এটি বস্তুর বর্ণনা দেওয়ার একটি বিশেষ উপায়, বস্তুর সাধারণ বোঝার উপায় নয়।

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

বিপরীতে, একটি বস্তু যা কোনও প্রক্রিয়া উপস্থাপন করে, যেমন "এনক্রিপ্ট" বা "সংক্ষেপণ" বা "সাজান", একটি "ক্রিয়াপদ" এর মতো দেখাচ্ছে।

কিছু বস্তু নাম স্থান হিসাবে তাদের ভূমিকার জন্য ব্যবহার করা হয়, যেমন জাভাতে "স্ট্যাটিক" ফাংশন রাখার একটি জায়গা।

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


-3

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

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

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

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

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

সর্বাধিক উপলব্ধ 16K মেমরির জন্য এসেম্বলারের মধ্যে দাবা-প্লেয়ার অ্যাপ্লিকেশন কীভাবে লিখতে হয় তা জানার জন্য যে কোনও অবজেক্ট অরিয়েন্টেড প্রোগ্রামারটির এটি বাধ্যতামূলক প্রয়োজন। তারপরে তারা কীভাবে চর্বি ছাঁটাবেন, অলসতা কাটাবেন এবং দক্ষ সমাধান তৈরি করবেন তা শিখতেন।

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