আপনি কীভাবে ওওপিগুলিতে শ্রেণি নকশার কাছে যান?


12

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

এই ব্লগে জিনিস নিচের এই বিশেষ্য-ক্রিয়া পদ্ধতির সম্পর্কে বলার আছে

   ...This approach, which I will call “noun and verb,” is so limited 
   I’ll dare to call it brain damaged....

আমার প্রশ্ন হ'ল ওও পদ্ধতির ব্যবহারের জন্য কী আরও ভাল মডেলিং কৌশল রয়েছে?


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

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

উত্তর:


12

ন্যায্যতার সাথে, তিনি সেই দাবিতে "মজা" করেছিলেন did

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

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

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

তবে আপনি পরীক্ষা লিখতে শুরু করার সাথে সাথেই আপনি বুঝতে পারবেন যে কোনও খেলায় কোন বিষয়টি সবচেয়ে গুরুত্বপূর্ণ: বিধিগুলি।

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

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

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

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

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

আসুন পরীক্ষা করার জন্য কিছু আসল যুক্তি সন্ধান করি। এই ঘর এবং হোটেল প্রচুর আছে, কিন্তু তাদের পরীক্ষার দরকার নেই। টাকা, না। সম্পত্তি কার্ড, না। ইত্যাদি। এমনকি বোর্ডটি রাষ্ট্রীয় মেশিন ছাড়া কিছুই নয়, এতে কোনও যুক্তি নেই doesn't

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

আপনি বিশেষ্য এবং ক্রিয়াগুলি লেখার সময় কি সেই আগমনটি দেখেছেন?

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


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

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

3

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

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

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

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

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


2
ত্রুটি: লাইন 2: অবৈধ হাইপারলিঙ্ক!
ক্র্যাকার

1
এসই সফটওয়্যার এটি hused। এটি পূর্বরূপে দুর্দান্ত কাজ করছিল। এখানে পাঠ্য আকারে লিঙ্কটি দেওয়া হয়েছে: অবজেক্টমোয়ারস
এডওয়ার্ড স্ট্রেঞ্জ

0

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

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

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

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