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