ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग (OOP) कौशल को सीखने या सुधारने के लिए अच्छी चुनौतियाँ / कार्य / अभ्यास [बंद]


81

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में अपने कौशल को बेहतर बनाने के लिए एक अच्छी चुनौती क्या है?

इस सर्वेक्षण के पीछे यह विचार है कि ओओपी सीखने के लिए कौन से अभ्यास उपयोगी हैं।

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

चुनौतियों का समाधान तब "कैसे ..." प्रश्न के उत्तर के रूप में पोस्ट किया जा सकता है और यहां से जुड़ा हुआ है।

उदाहरण के लिए:

  • चुनौती - अंतिम-इन-पहले आउट स्टैक को लागू करें
  • कौशल स्तर - शुरुआत
  • औचित्य - वस्तुओं का संदर्भ देने का अनुभव देता है

मेरे कॉलेज में एक व्यायाम था जो अनिवार्य था: एमपी 3 फ़ाइलों को चलाने के लिए एक जावा मीडिया प्लेयर लिखें। यह कई हफ्तों से अधिक काम था, जो शुरुआती लोगों के लिए बहुत अच्छा था। प्रत्येक के लिए नमूना समाधान के साथ 8 अध्याय थे, यूनिट परीक्षण भी। ~ कोड का 70% हमेशा दिया गया था और आपने प्रति अध्याय एक दर्जन से अधिक विशिष्ट कार्य किए थे। सरल यूआई, फ़ाइल एक्सेस, भंडारण सेटिंग्स, विरासत और बहुरूपता का उपयोग करते हुए, अपनी खुद की कक्षाएं, जाहिर है लूप और शर्तों को जोड़ना। इसमें वह सब कुछ था जो आप शुरू करना चाहते थे। अफसोस की बात है कि यह कॉपी राइट प्रोटेक्टेड है -__- मैंने अपने काम करने के बाद अपने फीचर्स भी जोड़े।
हेंज़लमाईन

जवाबों:


43

ऑब्जेक्ट-ओरिएंटेड डिज़ाइन में बिल्डिंग स्किल एक मुफ्त पुस्तक है जो उपयोग की हो सकती है।

[ संपादित करें: मूल पुस्तक में बिटट्रेट (सभी प्रारूपों के लिए 404 अंक) प्रतीत होता है, लेकिन इंटरनेट आर्काइव में HTML , PDF और MOBI के रूप में संस्करण हैं ]

विवरण इस प्रकार है:

"इस पुस्तक का उद्देश्य ओओ डिजाइन में दिलचस्प और मध्यम जटिल अभ्यासों का एक क्रम देकर शुरुआत करने वाले डिजाइनर की मदद करना है। यह पुस्तक ओओ सॉफ्टवेयर विकास की प्रक्रिया के साथ प्रबंधकों को आराम के स्तर को विकसित करने में भी मदद कर सकती है। हम जो आवेदन करते हैं। बिल्ड तुच्छ से ऊपर एक कदम है, और कुछ सावधान विचार और डिजाइन की आवश्यकता होगी। इसके अलावा, क्योंकि अनुप्रयोग काफी हद तक प्रकृति में मनोरंजक हैं, वे दिलचस्प और आकर्षक हैं। यह पुस्तक पाठक को परियोजना की समय सीमा से पहले ओओ डिजाइन की प्रक्रियाओं और कलाकृतियों का पता लगाने की अनुमति देती है। अच्छा डिजाइन असंभव लगता है। ”


1
मैं यह दूसरा - वास्तव में अच्छी किताब।
निकोला अनुसेव

14

स्क्रैच से एक चुनौतीपूर्ण कार्यक्रम लिखें । इसका उपयोग करने के लिए कुछ लोगों (पांच के आसपास, जो करने योग्य होना चाहिए) पाने की कोशिश करें। उनके परिवर्तन अनुरोधों का जवाब दें।

अपने कार्यक्रम के डिजाइन को अनुकूलित करें। छोटे से शुरू करें, फिर इसे बढ़ते हुए देखें। इस विकास को प्रबंधित करें। यह कठिन है। आपको समय के साथ बग को ठीक करना होगा और उस चीज को बनाए रखना होगा, जो मेरे लिए बहुत मूल्यवान सबक था।


7
+1 उनके परिवर्तन के अनुरोधों पर प्रतिक्रिया दें
bhathiya-perera

9

चुनौती: अपनी वेब साइट / पसंद की अपनी भाषा में सेवा एपीआई के लिए एक आवरण लिखें, जो पहले से मौजूद नहीं है ( C # में लिखा गया ZenDFS API आवरण। दूसरों के उपयोग के लिए रैपर को ओपन सोर्स के रूप में जारी करें।

कौशल स्तर: इंटरमीडिएट के लिए शुरुआती

Rationale: वस्तुओं / वर्गों के एक सार्थक सेट में एक 3 पार्टी वेब सेवा एपीआई को एक्सट्रपलेशन करने का तरीका जानने के लिए, अपनी चुनी हुई भाषा में उस एपीआई के पुन: उपयोग को आसान बनाएं।


4

मूल बातें जानने के बाद, "गैंग ऑफ़ फोर" डिज़ाइन पैटर्न बुक का अध्ययन करें।

http://www.amazon.com

यह एक क्लासिक है, और किसी भी कोडर के लिए पढ़ना चाहिए जो यह समझना चाहता है कि आम कोडिंग समस्याओं के लिए सुरुचिपूर्ण समाधान डिजाइन करने के लिए ओओ का उपयोग कैसे करें।


7
GOF के सभी सम्मान के साथ, "डिजाइन पैटर्न में प्रमुख पहले" एक बहुत अधिक सुखद पढ़ा है।
कैप्टनहैस्टिंग्स

2
GOF अंतिम है और हमें इसके बारे में डरना नहीं चाहिए। सोने जाने से पहले इसे रोज पढ़ें।
काटा

3

एक प्रक्रिया-शैली लिखित कोड का टुकड़ा लें और इसे OOP आधारित समाधान में बदलने का प्रयास करें। प्रक्रिया के दौरान, रिफैक्टिंग और डिज़ाइन पैटर्न पर एक किताब से परामर्श करें। मेरा एक दोस्त वास्तव में इस तरह से वस्तु उन्मुख अवधारणाओं को समझने में एक बड़ा कदम बनाने में सक्षम था। कुछ के साथ के रूप में, यह हर किसी के लिए काम नहीं कर सकता।



1

निश्चित रूप से एक अच्छी चुनौती है, हालांकि "स्क्रैच से शुरू" असाइनमेंट की तुलना में कम सुलभ, कुछ मौजूदा कोड को रिफलेक्टर करना है जो या तो वंशानुक्रम का उपयोग नहीं करता है या वंशानुक्रम का अधिक उपयोग करने के लिए इसका बहुत उपयोग नहीं करता है। परावर्तन की प्रक्रिया बहुत सारे लाभों और ऊप्स के गोश्त को उजागर करेगी, क्योंकि यह निश्चित रूप से मेरे हालिया प्रोजेक्ट पर मेरे लिए है। इसने मुझे पिछली परियोजनाओं की तुलना में अवधारणाओं को बेहतर ढंग से समझने के लिए प्रेरित किया है जहां मैंने अपनी वस्तु उन्मुख डिजाइन बनाए हैं।


0

किसी दिए गए कार्य का "OOP" होने के साथ बहुत कम है, यह अधिक है कि आप इसे कैसे ग्रेड करते हैं।

मैं Refactoring किताब, अध्याय 3 को देखूंगा, और यह सुनिश्चित करूंगा कि समाधान में कोई भी खराब कोड गंध मौजूद नहीं है। या, इससे भी महत्वपूर्ण बात यह है कि जो लागू होते हैं, उनके ऊपर जाएं।

सबसे महत्वपूर्ण बात, बसने वालों और गेटर्स के अस्तित्व के लिए देखें (यह दर्शाता है कि आप एक वर्ग से मूल्यों पर काम कर रहे हैं और कक्षा को अपने स्वयं के मूल्यों पर संचालित करने के लिए नहीं कह रहे हैं) - या Liskov प्रतिस्थापन सिद्धांत को लागू किए बिना "फैली" का उपयोग करते हुए, सामान की तरह उस।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.