वस्तु-उन्मुख विचार प्रक्रिया क्या है? [बन्द है]


9

मैं पिछले कुछ महीनों से Zend के MVC कार्यान्वयन के साथ OOP का अध्ययन कर रहा हूं। मैं प्रोग्रामिंग के लिए बहुत नया हूं, आम तौर पर, लेकिन मुझे दृढ़ता से लगता है कि मुझे चीजों को 'सही' तरीके से सीखना चाहिए, जो मेरे लिए यह सुनिश्चित करने का मतलब है कि मैं समझता हूं कि चीजों को जिस तरह से किया जाता है। Ie, मैंने पाया है कि कुछ करने के लिए सीखने में (कुछ भी कहो, संगीत), सीखने का सबसे अच्छा तरीका कुछ करना है यह जानने के लिए कि पहली जगह में ऐसा क्यों किया गया है।

वैसे भी, मैं अपने स्वयं के व्यवसाय मॉडल (यानी, MVC के M) को विकसित करने के तरीके को समझने में बहुत कठिन संघर्ष कर रहा हूं, और मैंने फैसला किया है कि ऐसा नहीं है क्योंकि मैं सामान्य रूप से OOP को नहीं समझता, क्योंकि मैंने इसे कई के लिए अध्ययन किया है महीनों और मुझे नहीं लगता कि अवधारणाओं को समझना बहुत मुश्किल है। मुझे उन उदाहरणों का पता चला है जिनका मैंने वास्तव में बहुत सहज अध्ययन किया है। मेरे लिए समस्या, मुझे लगता है, अपनी समस्याओं को वस्तु उन्मुख समाधान में बदलने की प्रक्रिया में निहित है। पुस्तकों में उदाहरण (जो मैंने अब तक पढ़ा है) बहुत स्पष्ट हैं, इसलिए समस्या को वस्तुओं में अनुवाद करने की प्रक्रिया बहुत कठिन नहीं है। मुझे लगता है कि मुझे याद आ रहा है कि यह एक उच्च-स्तरीय अमूर्त प्रक्रिया है। किसी प्रकार के चरणों या प्रश्नों की सूची जो प्रत्येक वस्तु-उन्मुख समाधान को उच्चतम स्तर पर उत्तर देना होगा।

यदि आपको पाँच से अधिक चरणों में ऐसी प्रक्रिया का वर्णन करना है, तो वे क्या और क्यों होंगे? किसी भी समस्या को वस्तु-उन्मुख समाधान में अनुवाद करने में सबसे प्रभावी प्रक्रिया क्या है?


1
OOP हमेशा यह सब ...
नौकरी

OOP के अपने अध्ययन में क्या आपने अभी तक डिजाइन पैटर्न के बारे में कुछ पढ़ा है?
Zoredache

1
मैं आपको एरिक इवान की पुस्तक को डोमेन ड्रिवेन डिज़ाइन के बारे में पढ़ने की सलाह देता हूं जब आपके पास मॉडल बनाने में मुश्किल समय होता है। @Simon Stellings का उत्तर भी देखें। पुस्तक इस प्रक्रिया को काफी विस्तार से कवर करती है।
फाल्कन

@Zoredache मैं डिज़ाइन पैटर्न की अवधारणा के साथ-साथ कुछ के कुछ उदाहरण भी आया हूँ, जैसे सिंगलटन, फैक्ट्री, और MVC स्वयं (जो कि Zend के कार्यान्वयन में भी फ्रंट कंट्रोलर है)। हालाँकि, यह मेरी अगली चाल थी, इसलिए बोलना था। मैंने एंटरप्राइज़ पैटर्न पर मार्टिन फाउलर की पुस्तक को उठाया और मैंने अब तक केवल परिचय का एक हिस्सा पढ़ा है। एक स्पष्ट, आसान परिचय है जिसे आप सुझाएंगे?

@ फाल्कन मैं एक सवाल था कि दूसरे दिन एसओ पर php / MySQL और फॉर्मेटिंग के बारे में, और मैंने आपका जवाब चुना होगा, लेकिन यह केवल एक टिप्पणी थी कि यह किस लिए लायक है।

जवाबों:


10

एक उपयुक्त मॉडल ढूँढना हमेशा सीधे आगे नहीं होता है। यह उन चीजों में से एक है, जिन्हें सादे ज्ञान की तुलना में अधिक अनुभव की आवश्यकता होती है। हालांकि, निम्नलिखित सरल नुस्खा आपको एक प्रारंभिक मानसिक ब्लॉक पर पहुंचने में मदद कर सकता है।

एबॉट द्वारा इस पत्र में इसका मूल रूप से वर्णन किया गया था और इसे अक्सर "एबॉट के शाब्दिक विश्लेषण" के रूप में जाना जाता है।

  1. एक सादा पाठ विनिर्देश लिखें।
  2. वर्गों को पहचानें : संज्ञाएं अच्छे उम्मीदवार हैं।
  3. विशेषताएँ खोजें : विशेषण / क्रिया विशेषण अच्छे उम्मीदवार हैं।
  4. संचालन का पता लगाएं : क्रिया अच्छे उम्मीदवार हैं।
  5. कक्षाओं के बीच संघों का पता लगाएं ।
  6. परिष्कृत।

उदाहरण:

संज्ञा , क्रियाएं और adjectivesचिह्नित हैं।

पुस्तकालय शामिल पुस्तकों और पत्रिकाओं । इसमें किसी पुस्तक की कई प्रतियां हो सकती हैं । कुछ पुस्तकें केवल ऋण के लिए हैं । अन्य सभी पुस्तकों को किसी भी पुस्तकालय सदस्य द्वारा तीन सप्ताह के लिए उधार लिया जा सकता है । पुस्तकालय के सदस्य सामान्य रूप से छह तक उधार ले सकते हैं आइटम एक समय में, लेकिन स्टाफ के सदस्यों सकता है उधार 12 तक आइटम एक समय में। केवल स्टाफ के सदस्य ही जर्नल्स उधार ले सकते हैंshort-term

एक पहला विश्लेषण चलना होगा:

क्लास:

  • पुस्तकालय
  • पुस्तक, जर्नल
  • प्रतिलिपि
  • ऋण
  • पुस्तकालय सदस्य
  • मद
  • स्टाफ के सदस्य

यहां से, आप सोच सकते हैं कि व्यवहार को लागू करने के लिए किस वर्ग को किन विशेषताओं और तरीकों की आवश्यकता है और फिर उस मॉडल को तेजी से परिष्कृत करें।


1
अच्छा उत्तर। एबॉट के पेपर के अलावा, मैं एरिक इवान की पुस्तक को डोमेन ड्रिवेन डिज़ाइन पर सुझाता हूं । यह सिखाता है कि परियोजना के लिए एक सर्वव्यापी भाषा कैसे बनाई जाए और उससे एक शक्तिशाली मॉडल को कैसे डिस्टिल किया जाए।
फाल्कन

मैं इस जवाब के लिए तैयार हूं क्योंकि मैंने भाषा विज्ञान का थोड़ा अध्ययन किया है और यह बहुत प्रयास के बिना मेरे लिए अच्छा सहज ज्ञान युक्त समझ में आता है, हालांकि मैं इसके लिए उन्हीं कारणों से डरता हूं क्योंकि मैंने पाया है कि बहुत अधिक सादृश्य मुझे भटका सकता है ।

कैंडिंस्की कवर आर्ट वाली किताब की सिफारिश के लिए @ फाल्कन +1।

@ tbj1982: आप बिल्कुल सही कह रहे हैं। यह एक सरल हेयुरिस्टिक है, और परिणामों को ध्यान में रखते हुए व्यवहार किया जाना चाहिए। यह सुनहरी गोली नहीं है, लेकिन यह एक सहायक स्टार्टर हो सकता है।
ब्लूब

4

मेरी राय में, TDD दृष्टिकोण प्राकृतिक और कुशल है:

  1. विशिष्ट आवश्यकताएं लिखें (दिए गए, जब, तब)
  2. एक इकाई परीक्षण में प्रत्येक आवश्यकता (सबसे महत्वपूर्ण एक पहले) का अनुवाद करें।
  3. # 2 में लिखित परीक्षा पास करने के लिए कम से कम कोड लिखें।
  4. टेस्ट पास करने के बाद, SOLIDD डिजाइन सिद्धांतों के अनुसार अपने कोड को रिफलेक्टर करें।
  5. # 4 के बाद, सुनिश्चित करें कि आपका कोड अभी भी लिखे गए सभी परीक्षणों को पास करता है।
  6. 2-5 दोहराएं।

इस प्रक्रिया के साथ, आप धीरे-धीरे ध्वनि डिजाइन के साथ परीक्षण योग्य कोड का उत्पादन कर सकते हैं। आप पहले सोच सकते हैं कि लेखन परीक्षण अनावश्यक है लेकिन यह गतिविधि वास्तव में आपको ध्वनि वास्तुकला का निर्माण करने में मदद करती है।


3

यहाँ मैं c ++ कोड में चरणों का उपयोग कर रहा हूँ:

  1. वर्ग का नाम तय करें
  2. निर्माता पैरामीटर और डेटा सदस्य तय करें।
  3. सदस्य फ़ंक्शन नाम और प्रोटोटाइप तय करें
  4. इसे अन्य वर्गों से स्वतंत्र करें
  5. डिजाइन किया जाता है, और बाकी सब सिर्फ कार्यान्वयन है।

(1) का कारण यह है कि यह वर्ग की कार्यक्षमता को परिभाषित करता है। (2) का कारण यह है कि यह परिभाषित करता है कि वर्ग बाहरी दुनिया के साथ कैसे संवाद करता है। (3) का कारण यह है कि यह परिभाषित करता है कि प्रत्येक स्थिति में कक्षा की किस कार्यक्षमता की जरूरत है। (4) का कारण यह है कि यह कई अलग-अलग स्थितियों में कक्षा का उपयोग करने की अनुमति देता है। (5) का कारण यह है कि यह डिजाइन और कार्यान्वयन के बीच की सीमा को परिभाषित करता है।


नामकरण के लिए +1। यह आश्चर्यजनक है कि केवल नाम जोड़ने से विचार प्रक्रियाएं व्यवस्थित हो सकती हैं, क्योंकि आप इसके साथ "वास्तविक दुनिया" के सभी ज्ञान प्राप्त कर रहे हैं।
मार्क ब्रैकेट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.