আমার প্রকল্প অবজেক্ট ওরিয়েন্টেশন ছাড়া বেঁচে থাকতে পারে?


9

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

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

আপনি যদি মনে করেন যে এটির ডোমেনে এটি আরও উপযুক্ত।

উত্তর:


6

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

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

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

পাইথন বন্দরটির জন্য, এটি আপনার বর্তমান জ্ঞানের ভিত্তিতে শুরু করার জন্য করুন এবং এটির উল্লেখযোগ্যভাবে আরও ভাল করার জন্য আপনি যথেষ্ট শিখার পরে একটি দ্বিতীয় শুরু করুন।


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

3

এই প্রশ্নটি স্ট্যাক ওভারফ্লোয়ের জন্য ভাল ফিট হতে পারে। আমি মনে করি এটি এখানে খুব ভাল ফিট কারণ এটি গণনা বিজ্ঞানের একটি সাধারণ বিষয়।

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


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

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

2

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

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

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