क्या कोई परिभाषित कर सकता है कि वास्तव में 'POCO' का क्या मतलब है? मैं अधिक से अधिक बार इस शब्द का सामना कर रहा हूं, और मैं सोच रहा हूं कि क्या यह केवल सादे वर्गों के बारे में है या इसका मतलब कुछ और है?
क्या कोई परिभाषित कर सकता है कि वास्तव में 'POCO' का क्या मतलब है? मैं अधिक से अधिक बार इस शब्द का सामना कर रहा हूं, और मैं सोच रहा हूं कि क्या यह केवल सादे वर्गों के बारे में है या इसका मतलब कुछ और है?
जवाबों:
"प्लेन ओल्ड सी # ऑब्जेक्ट"
बस एक सामान्य वर्ग, बुनियादी सुविधाओं की चिंताओं या अन्य जिम्मेदारियों का वर्णन करने वाली कोई विशेषता नहीं है जो आपके डोमेन ऑब्जेक्ट में नहीं होनी चाहिए।
EDIT - जैसा कि अन्य उत्तरों में कहा गया है, यह तकनीकी रूप से "प्लेन ओल्ड सीएलआर ऑब्जेक्ट" है, लेकिन मैं, डेविड अरनो की टिप्पणियों की तरह, विशिष्ट भाषाओं या प्रौद्योगिकियों के संबंध से बचने के लिए "प्लेन ओल्ड क्लास ऑब्जेक्ट" पसंद करता हूं।
TO CLARIFY: दूसरे शब्दों में, वे कुछ विशेष आधार वर्ग से नहीं निकलते हैं, और न ही वे अपने गुणों के लिए कोई विशेष प्रकार लौटाते हैं।
प्रत्येक के एक उदाहरण के लिए नीचे देखें।
POCO का उदाहरण:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
एक POCO नहीं है कि कुछ का उदाहरण:
public class PersonComponent : System.ComponentModel.Component
{
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public string Name { get; set; }
public int Age { get; set; }
}
उदाहरण के एक विशेष वर्ग से दोनों inherits ऊपर यह अतिरिक्त व्यवहार के साथ ही परिवर्तन व्यवहार करने के लिए एक कस्टम विशेषता का उपयोग करता है देने के लिए ... एक ही गुण दोनों वर्गों पर मौजूद हैं, लेकिन एक है नहीं सिर्फ एक सादे पुराने वस्तु अब और।
System.Object
पीओसीओ है। यदि यह ExternalFramework.OrmMapperBase
इस तरह से या कुछ और से विरासत में मिला है, तो यह अब एक POCO नहीं है।
अधिकांश लोगों ने यह कहा है - प्लेन ओल्ड सीएलआर ऑब्जेक्ट (पहले के POJO के विपरीत - प्लेन ओल्ड जावा ऑब्जेक्ट)
POJO एक EJB से निकला, जिसके लिए आपको एक विशिष्ट माता-पिता वर्ग से मूल्य की वस्तुओं (जैसे कि आप किसी ORM या इसी तरह की क्वेरी में वापस मिलता है) के लिए विरासत में प्राप्त करने की आवश्यकता थी, इसलिए यदि आप कभी भी EJB से स्थानांतरित करना चाहते थे (जैसे वसंत), आप भरवां थे।
POJO की वे कक्षाएं हैं जो विरासत में या किसी भी विशेषता मार्कअप को लागू करने के लिए मजबूर नहीं करती हैं, जो भी आप उपयोग कर रहे हैं, उन्हें "काम" करने के लिए।
POCO को छोड़कर POCO समान हैं।
आम तौर पर इसका उपयोग ORM - पुराने (और कुछ वर्तमान वाले) के आसपास किया जाएगा, आपको एक विशिष्ट आधार वर्ग से विरासत में प्राप्त करने की आवश्यकता होती है, जो आपको उस उत्पाद से जोड़ता है। नए लोग नहीं हैं (मैं जानता हूँ कि भिन्न प्रकार होने के कारण) - आप बस एक वर्ग बनाते हैं, इसे ओआरएम के साथ पंजीकृत करते हैं, और आप बंद हो जाते हैं। बहुत आसान।
मैं इस बारे में गलत हो सकता हूँ .. लेकिन वैसे भी, मुझे लगता है कि पोको प्लेन ओल्ड क्लास है CLR ऑब्जेक्ट है और यह POJO सादे पुराने जावा ऑब्जेक्ट से आता है। एक POCO एक ऐसा वर्ग है जो डेटा रखता है और जिसका कोई व्यवहार नहीं है।
यहाँ C # में एक उदाहरण लिखा गया है:
class Fruit
{
public Fruit() { }
public Fruit(string name, double weight, int quantity)
{
Name = name;
Weight = weight;
Quantity = quantity;
}
public string Name { get; set; }
public double Weight { get; set; }
public int Quantity { get; set; }
public override string ToString()
{
return $"{Name.ToUpper()} ({Weight}oz): {Quantity}";
}
}
POCO का मतलब "प्लेन ओल्ड सीएलआर ऑब्जेक्ट" है।
अन्य उत्तरों को जोड़ने के लिए, POxx शब्द सभी POTS ( सादी पुरानी टेलीफोन सेवाओं) से स्टेम के लिए दिखाई देते हैं ) ।
POX, सरल (सादे पुराने) XML को परिभाषित करने के लिए इस्तेमाल किया गया, बल्कि REST, SOAP आदि से जुड़े जटिल बहुस्तरीय सामानों के बजाय, एक उपयोगी और अस्पष्ट मनोरंजक, शब्द था। पीओ (पसंद की भाषा सम्मिलित करें) हे शब्दों ने मजाक को पतला पहना है।
दिलचस्प। केवल एक चीज जो मुझे पता थी कि प्रोग्रामिंग के साथ करना था और इसमें POCO था वह POCO C ++ फ्रेमवर्क है ।
जब तक मुझे यकीन है कि POCO का मतलब है प्लेन ओल्ड क्लास ऑब्जेक्ट या प्लेन ओल्ड C ऑब्जेक्ट 99.9% लोग यहां हैं, POCO भी स्क्रिप्टिंग भाषा में निर्मित एनिमेटर प्रो (ऑटोकोड) है।
POCO एक सादा पुराना CLR ऑब्जेक्ट है, जो अपने समस्या डोमेन के संदर्भ में एप्लिकेशन की स्थिति और व्यवहार का प्रतिनिधित्व करता है। यह एक शुद्ध वर्ग है, बिना किसी विशेषता के, विरासत के बिना। उदाहरण:
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
}