क्या कार्य करता है और क्या वर्ग करता है के बीच एक बड़ा अंतर था।
आइए मैं इसे बहुत खरोंच से समझाऊंगा। (केवल अनिवार्य के बारे में)
प्रोग्रामिंग इतिहास, हम सभी को सीधे मूल आदेशों (जैसे- विधानसभा) के साथ शुरू हुआ।
नेक्स्ट स्ट्रक्चर्ड प्रोग्रामिंग फ्लो कंट्रोल के साथ आया (जैसे-: अगर, स्विच, जबकि, आदि के लिए) यह प्रतिमान प्रोग्रामर को प्रोग्राम के प्रवाह को प्रभावी ढंग से नियंत्रित करने के लिए देता है और लूप द्वारा कोड लाइनों की इसकी न्यूनतम संख्या भी।
अगली प्रक्रियात्मक प्रोग्रामिंग आई और जो समूह प्रक्रियाओं (फंक्शंस) में निर्देश देते हैं। इससे प्रोग्रामर को दो बड़े लाभ हुए।
1. अलग-अलग ब्लॉकों में बयान (संचालन)।
2. इन ब्लॉकों का पुन: उपयोग कर सकते हैं। (कार्य)
लेकिन ऊपर के सभी प्रतिमानों ने प्रबंध अनुप्रयोगों के लिए एक समाधान नहीं दिया। प्रक्रियात्मक प्रोग्रामिंग भी केवल छोटे पैमाने के अनुप्रयोगों के लिए उपयोग कर सकते हैं। बड़े वेब एप्लिकेशन विकसित करने के लिए इसका उपयोग नहीं किया जा सकता है (जैसे: बैंकिंग, गूगल, यूट्यूब, फेसबुक, स्टिकओवरफ्लो आदि), एंड्रॉइड एसडीके, फ्लटर एसडीके और बहुत कुछ जैसे फ्रेमवर्क नहीं बना सकते ......
इसलिए इंजीनियर कार्यक्रमों को उचित तरीके से प्रबंधित करने के लिए बहुत अधिक शोध करते हैं।
अंत में ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग किसी भी पैमाने पर अनुप्रयोगों के प्रबंधन के लिए सभी समाधान के साथ आता है। (हैलो दुनिया से ट्रिलियन लोगों के लिए सिस्टम निर्माण जैसे-गूगल, अमेज़ॅन और आज 90% अनुप्रयोगों का उपयोग करके)।
ऑप में सभी एप्लिकेशन Objects.It के आसपास निर्मित होते हैं। इसका मतलब है कि एप्लिकेशन इन ऑब्जेक्ट्स का एक संग्रह है।
इसलिए वस्तुएँ किसी भी अनुप्रयोग के लिए आधारभूत इमारत होती हैं।
वर्ग (रनटाइम पर ऑब्जेक्ट) समूह डेटा और उन चर (डेटा) से संबंधित फ़ंक्शन। इसलिए डेटा और उनके संबंधित कार्यों की रचना।
[यहाँ मैं ऊप के बारे में समझाने वाला नहीं हूँ]
👈👈👈Ok अब स्पंदन ढांचे के लिए आ रहा है। L
डार्ट प्रक्रियात्मक और ऊप दोनों का समर्थन करते हैं लेकिन, फ़्लटर फ्रेमवर्क पूरी तरह से कक्षाओं (ऊप) का उपयोग करके बनाते हैं। (क्योंकि बड़े प्रबंधनीय फ्रेमवर्क प्रक्रियात्मक का उपयोग करके नहीं बना सकते हैं)
यहां मैं उन कारणों की सूची बनाऊंगा, जो वे विजेट बनाने के लिए कार्यों के बजाय कक्षाओं का उपयोग करते हैं
1 - ज्यादातर बार निर्माण विधि (चाइल्ड विजेट) सिंक्रोनस और एसिंक्रोनस फ़ंक्शन की कॉल संख्या होती है।
उदाहरण के लिए:
- नेटवर्क छवि डाउनलोड करने के लिए
- उपयोगकर्ता आदि से इनपुट प्राप्त करें
इसलिए बिल्ड मेथड को अलग क्लास के विजेट में रखने की जरूरत है (क्योंकि अन्य सभी तरीके बिल्ड () मेथड को एक क्लास में रख सकते हैं)
2 - विजेट क्लास का उपयोग करके आप बार-बार एक ही कोड लिखे बिना दूसरी कक्षा की संख्या बना सकते हैं (** इनहेरिटेंस का उपयोग ** (फैली हुई))।
और इनहेरिटेंस (विस्तार) और बहुरूपता (ओवरराइड) का उपयोग करके भी आप स्वयं के कस्टम वर्ग बना सकते हैं। (नीचे उदाहरण के लिए, वहां मैं MaterialPageRoute का विस्तार करके एनिमेशन को ओवरराइड (ओवरराइड) करूंगा (क्योंकि इसका डिफ़ॉल्ट संक्रमण मैं अनुकूलित करना चाहता हूं)। In
class MyCustomRoute<T> extends MaterialPageRoute<T> {
MyCustomRoute({ WidgetBuilder builder, RouteSettings settings })
: super(builder: builder, settings: settings);
@override //Customize transition
Widget buildTransitions(BuildContext context,
Animation<double> animation,
Animation<double> secondaryAnimation,
Widget child) {
if (settings.isInitialRoute)
return child;
// Fades between routes. (If you don't want any animation,
// just return child.)
return new FadeTransition(opacity: animation, child: child);
}
}
3 - फ़ंक्शंस उनके मापदंडों के लिए शर्तों को नहीं जोड़ सकते हैं, लेकिन क्लास विजेट के निर्माता का उपयोग करके आप ऐसा कर सकते हैं।
नीचे कोड example (यह सुविधा फ्रेमवर्क विगेट्स द्वारा अत्यधिक उपयोग की जाती है)
const Scaffold({
Key key,
this.bottomNavigationBar,
this.bottomSheet,
this.backgroundColor,
this.resizeToAvoidBottomPadding,
this.resizeToAvoidBottomInset,
this.primary = true,
this.drawerDragStartBehavior = DragStartBehavior.start,
this.extendBody = false,
this.extendBodyBehindAppBar = false,
this.drawerScrimColor,
this.drawerEdgeDragWidth,
}) : assert(primary != null),
assert(extendBody != null),
assert(extendBodyBehindAppBar != null),
assert(drawerDragStartBehavior != null),
super(key: key);
4 - फ़ंक्शंस का उपयोग नहीं किया जा सकता है और क्लास विजेट अपने कंस्ट्रक्टरों के लिए कॉस्ट का उपयोग कर सकते हैं। (जो मुख्य सूत्र के प्रदर्शन को प्रभावित करते हैं)
5 - आप एक ही वर्ग (एक वर्ग / वस्तुओं के उदाहरण) का उपयोग करके किसी भी स्वतंत्र विजेट को बना सकते हैं, लेकिन फ़ंक्शन स्वतंत्र विजेट (उदाहरण) नहीं बना सकता है, लेकिन पुन: उपयोग कर सकता है।
[प्रत्येक उदाहरण का अपना उदाहरण चर होता है और जो अन्य विजेट्स (ऑब्जेक्ट) से पूरी तरह से स्वतंत्र होता है, लेकिन फ़ंक्शन का स्थानीय वैरिएबल प्रत्येक फ़ंक्शन कॉल पर निर्भर होता है * (जिसका अर्थ है, जब आप किसी स्थानीय चर का मान बदलते हैं तो यह अन्य सभी भागों के लिए प्रभावित होता है) अनुप्रयोग जो इस फ़ंक्शन का उपयोग करता है)]
फ़ंक्शंस के वर्ग में कई फ़ायदे थे .. (ऊपर केवल कुछ उपयोग के मामले हैं)
🤯 माई फाइनल थॉट
इसलिए अपने एप्लिकेशन के बिल्डिंग ब्लॉक के रूप में फ़ंक्शंस का उपयोग न करें, उन्हें केवल संचालन करने के लिए उपयोग करें। जब आपके एप्लिकेशन को स्केलेबल मिलता है तो अन्यथा यह कई अनचाही समस्याओं का कारण बनता है ।
- कार्य के छोटे हिस्से को करने के लिए कार्यों का उपयोग करें
- अनुप्रयोग के निर्माण खंड के रूप में वर्ग का उपयोग करें (अनुप्रयोग का प्रबंधन)
📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍 📍📍📍📍📍📍📍
आप इसे (या लाइनों) संख्या के आधार पर कार्यक्रम की संख्या की गुणवत्ता को प्राप्त नहीं कर सकते
📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍 📍📍📍📍📍📍📍
पढ़ने के लिए धन्यवाद