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


13

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

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

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

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

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

তার কারণে, অবজেক্ট অরিয়েন্টেশন অনুশীলনের একটি ভাল উপায় কী?


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

3
পিএইচপি বস্তু-ভিত্তিক; আপনি শুধু এটি ব্যবহার করা হয়নি। php.net/manual/en/language.oop5.php
রবার্ট হার্ভে

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

শুরুতে ছোট গেমস (গ্রাফিক্স ব্যতীত), কার্ড গেমস বা অনুরূপ তৈরি করুন, সেই গেমগুলিতে ক্লাস পুনরায় ব্যবহার করার চেষ্টা করুন। stackoverflow.com/questions/1301606/...
grizwako

উত্তর:


20

এখন, অবজেক্ট অরিয়েন্টেশনে আমাদের কাছে অতিরিক্ত অতিরিক্ত জিনিস রয়েছে।

না আপনি না ...

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

অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং অনুশীলনের জন্য এই জিনিসগুলির কোনওটিরই প্রয়োজন নেই।

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

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

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

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


3
+1 "কীভাবে চুষে ফেলেছে তা চিত্রিত করুন" আমার কোডটি এটি: লজ্জা এবং স্বতঃস্ফূর্ততায় ভরা ... সর্বদা পূর্ববর্তী প্রকল্পগুলি থেকে শেখার জন্য লড়াই করে।
ওয়ার্নারসিডি

1
আমি পদ্ধতির পছন্দ। অতিরিক্ত জটিলতা এবং একবারে সবকিছু শিখার চেষ্টা করার পরিবর্তে ছোট ছোট পদক্ষেপের সাথে শুরু করুন এবং আপনার যে সমস্ত জ্ঞান অর্জন করা হয়েছে তা প্রয়োগ করে পুনরাবৃত্তি করুন।
সুপারম

6

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

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

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

এই রিফ্যাক্টরিং পদক্ষেপটি করার সময় নিজেকে সর্বদা এসআরপির কথা মনে করিয়ে দিন। আপনি যদি নিজের অবজেক্টে দ্বিতীয় দায়িত্ব যুক্ত করেন তবে নতুন কিছু তৈরি করার সময় এসেছে।

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


1
সুতরাং মূলত আপনি "টিডিডি এবং জিওএফ শিখুন" বলছেন
রবার্ট হার্ভে

3

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

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

সিরিয়াসলি, সুপারমার্কেটে পরবর্তী ট্রিপ, কল্পনা করুন যে কেউ আপনাকে স্থানটির ওওপি সিমুলেশন লেখার কাজ দিয়েছে ...


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

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

1

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

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


0

1990 এর দশকে পিটার কোডের মতো কিছু পরিভাষা, অবজেক্ট-ওরিয়েন্টেড এনালাইসিস এবং অবজেক্ট-ওরিয়েন্টেড ডিজাইন যুক্ত করা যাক

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

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

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


0

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

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

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