मेरे पिछले लेख के बाद, हम शून्य का उपयोग क्यों करते हैं, मैंने सोचा कि इस प्रश्न को अन्य चीजों के लिए पूछना एक अच्छा विचार होगा जो हम मानते हैं।
लाइक...
हम बदसूरत कोड के सिर्फ एक GIGANT बूँद के बजाय कक्षाओं का उपयोग क्यों करते हैं?
मौलिक स्तर पर, हम कोड और डेटा को तार्किक इकाइयों में व्यवस्थित करने के लिए कक्षाओं का उपयोग करते हैं।
लेकिन इसके अलावा भी बहुत कुछ है।
एक वर्ग आपको अमूर्त . बनाने की अनुमति देता है ।
एक अमूर्त क्या है?
आप हर एक दिन, हर एक मिनट में अमूर्त का उपयोग करते हैं।
कीबोर्ड मैं इसे इस पर टाइप कर रहा हूं:
- एक केबल
- चेरी एमएक्स ब्लैक स्विच
- प्लास्टिक आवरण जो सब कुछ एक साथ रखता है
- सर्किट बोर्ड जो मेरे कंप्यूटर को विद्युत संकेत भेजता है
कीबोर्ड सिर्फ एक अवधारणा है जो इन चीजों को सही तरीके से एक साथ रखने से उभरती है।
यह एक अमूर्त है क्योंकि आपको यह जानने की आवश्यकता नहीं है कि यह आंतरिक रूप से कैसे काम करता है इसके प्रयेाग के लिए। आपको यह जानने की ज़रूरत नहीं है कि यह किन घटकों से बना है!
आप बस इसे प्लग इन करें और टाइप करना शुरू करें।
ठीक यही कक्षाएं आपको करने की अनुमति देती हैं।
एब्स्ट्रैक्शन क्यों महत्वपूर्ण है?
एब्स्ट्रैक्शन जटिलता को प्रबंधित करने में आपकी सहायता करता है ।
जैसा कि स्टीव मैककोनेल कहते हैं:
<ब्लॉकक्वॉट>“एकल सबसे महत्वपूर्ण एक वर्ग बनाने का कारण कार्यक्रम की जटिलता को कम करना . है "
अमूर्तता इसे कैसे पूरा करती है?
विवरण छुपाकर इस बारे में कि कोई चीज़ कैसे काम करती है और उसकी सेवाओं को सार्वजनिक इंटरफ़ेस के साथ उजागर करती है।
रूबी क्लास में इंटरफ़ेस इसके सार्वजनिक तरीकों से बना होता है। जबकि विवरण निजी तरीकों से छिपाए जाते हैं।
विवरण . के साथ मेरा मतलब है:
- इंस्टेंस वैरिएबल
- आंतरिक तरीके
- एल्गोरिदम और डेटा संरचनाएं
जब वे छिपे होते हैं, तो आप अपनी कक्षा के उपयोगकर्ताओं को प्रभावित किए बिना, जब चाहें उन्हें बदल सकते हैं।
उदाहरण के लिए :
अगर आपके पास GPS
है वर्ग जो डेटा स्टोर करने के लिए एक सरणी का उपयोग करता है, और आपको यह जानना होगा कि इंडेक्स 0 . पर उस सरणी का आपको अक्षांश और अनुक्रमणिका 1 . मिलेगा देशांतर है, ये वे विवरण हैं जिन्हें आपको नहीं जानना चाहिए कक्षा के उपयोगकर्ता के रूप में।
अच्छी कक्षा कैसे लिखें
अब, यह एक बड़ा विषय है ।
एक अच्छी कक्षा बनाने में बहुत सी चीजें लगती हैं, जैसे कि ठोस सिद्धांतों का पालन करना।
लेकिन सबसे महत्वपूर्ण बात यह है कि आपकी कक्षाओं में किसी प्रकार की भूमिका होनी चाहिए , और यादृच्छिक तरीकों से न बने हों।
उदाहरण के लिए, आप व्यावसायिक तर्क (गणना, नियम) को प्रस्तुति तर्क (स्वरूपण) से अलग करना चाहते हैं क्योंकि वे अलग-अलग भूमिकाएँ हैं।
इस कोड को देखें :
require 'rest-client' require 'nokogiri' class ImageCounter def initialize(url) @url = url end def find_images_and_report data = RestClient.get(@url).body html = Nokogiri::HTML.parse(data) images = html.css("img") report = "" report << "=" * 40 << "\n" report << "Found #{images.size} images on #{@url} \n" report << "=" * 40 << "\n" end end reporter = ImageCounter.new("rubyguides.com") report = reporter.find_images_and_report
आप देख सकते हैं कि यह वर्ग गणना और प्रस्तुतीकरण दोनों से कैसे संबंधित है। यह ठीक है यदि आप "त्वरित और गंदी" स्क्रिप्ट लिख रहे हैं, लेकिन अधिक गंभीर अनुप्रयोग के लिए आप उन्हें अलग करना चाहते हैं।
जब आप जिम्मेदारियों को अलग करते हैं तो आप एक अलग प्रस्तुति परत में प्लग इन कर सकते हैं, या आप व्यावसायिक नियमों को बदल सकते हैं और उसी प्रस्तुति का पुन:उपयोग कर सकते हैं।
यह कोड पुन:उपयोग कक्षाओं का पहलू उनमें से अधिक लिखने का एक और अच्छा कारण है।
बेहतर कक्षाएं लिखने में आपकी मदद करने के लिए और भी उपाय हैं।
आगे एक्सप्लोर करने में आपकी सहायता के लिए यहां कुछ हैं:
- सामंजस्य और युग्मन
- बताओ, मत पूछो
- डेमेटर का नियम
यह जानना कि हम पहली जगह में कक्षाएं क्यों लिखते हैं, शुरू करने के लिए एक अच्छी जगह है, इसलिए अच्छा काम अगर आप पूरा लेख पढ़ते हैं!
सारांश
आपने सीखा कि हम कक्षाएं क्यों लिखते हैं, अमूर्तता क्या है और यह क्यों महत्वपूर्ण है। आपने अच्छी कक्षाएँ लिखने के मूल सिद्धांतों को भी सीखा और मैंने आपको कुछ संकेत दिए कि किस बारे में अधिक पढ़ना है।
जब तक आप नहीं चाहते कि आपका कोड मिट्टी का बड़ा गोला . बन जाए अपनी कक्षा के डिजाइन को बेहतर बनाने के लिए इनमें से कुछ अवधारणाओं को अभी लागू करना शुरू करें 🙂
अगर आपको यह उपयोगी लगा तो इस लेख को ट्विटर पर शेयर करना न भूलें!