'पोक्सो' की परिभाषा


238

क्या कोई परिभाषित कर सकता है कि वास्तव में 'POCO' का क्या मतलब है? मैं अधिक से अधिक बार इस शब्द का सामना कर रहा हूं, और मैं सोच रहा हूं कि क्या यह केवल सादे वर्गों के बारे में है या इसका मतलब कुछ और है?


27
यह भी मज़ेदार है कि "पोको" एक स्पेनिश शब्द है जिसका अर्थ है "थोड़ा, बहुत नहीं"। तो, यह इस संदर्भ में अच्छी तरह से फिट बैठता है! en.wiktionary.org/wiki/poco
EnocNRoll - आनंदा गोपाल परेड

6
इटालियन में भी ठीक यही बात :) :)
ब्लैकबियर

3
और पुर्तगाली में एक त्रुटि का मतलब है क्योंकि यह वर्तनी है: "पाउको"।
इस्माईल

3
मेरे लिए पोकोहराम जैसा लगता है :)
उपयोगी

4
पोलिश में "POCO" सवाल है "इसका उपयोग क्यों करें"
टिटोल

जवाबों:


197

"प्लेन ओल्ड सी # ऑब्जेक्ट"

बस एक सामान्य वर्ग, बुनियादी सुविधाओं की चिंताओं या अन्य जिम्मेदारियों का वर्णन करने वाली कोई विशेषता नहीं है जो आपके डोमेन ऑब्जेक्ट में नहीं होनी चाहिए।

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 ऊपर यह अतिरिक्त व्यवहार के साथ ही परिवर्तन व्यवहार करने के लिए एक कस्टम विशेषता का उपयोग करता है देने के लिए ... एक ही गुण दोनों वर्गों पर मौजूद हैं, लेकिन एक है नहीं सिर्फ एक सादे पुराने वस्तु अब और।


15
मैं एक सादे पुराने वर्ग के रूप में एक पोको को देखता हूं जो ट्रेंडी पैटर्न सेट का हिस्सा बनने की कोशिश नहीं करता है। हालाँकि मुझे आपका उत्तर भी पसंद है।
डेविड अरनो

1
सहमत - सी # नाम का प्रशंसक नहीं है, लेकिन यह वही था जो मैंने पहली बार सुना था जब मैं इस सवाल के बारे में सोच रहा था :) कक्षा फिर पोजो, पोवो पीओसी # ओ, पीओसी ++ ओ,
पेरो

14
यह वास्तव में मेरी व्यक्तिगत राय में एक अच्छा जवाब नहीं देता है क्योंकि किसी को भी उत्सुक है। ठीक है, इसलिए अवसंरचना का वर्णन करने वाली कोई विशेषता नहीं है (आप विशेषताओं और बुनियादी ढांचे से क्या मतलब है ... उदाहरण के लिए एक DB कनेक्शन? क्या? उदाहरण कृपया)। आपके डोमेन ऑब्जेक्ट में क्या जिम्मेदारियाँ नहीं होनी चाहिए? तो POCO एक डोमेन ऑब्जेक्ट (BL ऑब्जेक्ट) है जो मूल रूप से है? तो वास्तव में POCO सिर्फ एक बिजनेस लेयर ऑब्जेक्ट / डोमेन ऑब्जेक्ट के लिए एक और संक्षिप्त है जो सभी एक ही लानत की बात करता है। POCO / Business लेयर ऑब्जेक्ट / डोमेन ऑब्जेक्ट == एक ही लानत बात, एक ही कॉन्सेप्ट के लिए सिर्फ 3 अलग-अलग समोसे?
पॉजिटिव

4
यह उत्तर मुझे इस बारे में बिल्कुल कुछ नहीं बताता कि यह वास्तविक दुनिया में क्या है ... बस एक परिभाषा है जो कोई भी विकिपीडिया पर देख सकता है। कुछ उदाहरण POCO वर्गों के बारे में कैसा है ?? और वे संदर्भ में POCO क्यों हैं
पॉजिटिव

1
एक उदाहरण के रूप में, एक वर्ग जो आपने लिखा था कि केवल विरासत से ही System.Objectपीओसीओ है। यदि यह ExternalFramework.OrmMapperBaseइस तरह से या कुछ और से विरासत में मिला है, तो यह अब एक POCO नहीं है।
डेविड मोहुंड्रो

47

अधिकांश लोगों ने यह कहा है - प्लेन ओल्ड सीएलआर ऑब्जेक्ट (पहले के POJO के विपरीत - प्लेन ओल्ड जावा ऑब्जेक्ट)

POJO एक EJB से निकला, जिसके लिए आपको एक विशिष्ट माता-पिता वर्ग से मूल्य की वस्तुओं (जैसे कि आप किसी ORM या इसी तरह की क्वेरी में वापस मिलता है) के लिए विरासत में प्राप्त करने की आवश्यकता थी, इसलिए यदि आप कभी भी EJB से स्थानांतरित करना चाहते थे (जैसे वसंत), आप भरवां थे।

POJO की वे कक्षाएं हैं जो विरासत में या किसी भी विशेषता मार्कअप को लागू करने के लिए मजबूर नहीं करती हैं, जो भी आप उपयोग कर रहे हैं, उन्हें "काम" करने के लिए।

POCO को छोड़कर POCO समान हैं।

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


1
पूर्णता के लिए, आम भाषा रनटाइम के लिए CLR स्टैबल्ड - .net वर्चुअल मशीन।
तत्त्व

4
.Net 3.5 sp1 ORM उदाहरण: इकाई ढांचे के लिए आवश्यक है कि कक्षाएं एक निश्चित फ्रेमवर्क वर्ग से विरासत में मिले। LINQ to SQL में यह आवश्यकता नहीं है। इसलिए LINQ to SQL POCO के साथ काम करता है और Entity फ्रेमवर्क नहीं करता है।
लुकास

23

मैं इस बारे में गलत हो सकता हूँ .. लेकिन वैसे भी, मुझे लगता है कि पोको प्लेन ओल्ड क्लास है 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}";
    }
}

4
यह स्वीकृत उत्तर होना चाहिए। यह वास्तविक स्पष्टीकरण प्रदान करता है (इसका कोई व्यवहार नहीं है) और यह भी बेहतर समझ के लिए एक उदाहरण है कि पीओसीओ कैसा दिखता है।
Héctor vlvarez

क्या ToString () विधि इस उदाहरण में एक "व्यवहार" नहीं है?
jdoer1997

मैं एक POCO के व्यवहार नहीं होने के बारे में तर्क दूंगा। यह केवल एक वर्ग है जो .Net की तुलना में अन्य ढांचे / पुस्तकालय पर निर्भर नहीं करता है। यानी फ़ाइल वर्ग POCO है, लेकिन DbContext इसलिए नहीं है क्योंकि यह एंटिटी फ्रेमवर्क पर निर्भर करता है।
user3285954

9

POCO का मतलब "प्लेन ओल्ड सीएलआर ऑब्जेक्ट" है।


24
ooooook? तो संदर्भ या वास्तविक दुनिया में इसका क्या मतलब है?
पॉजिटिव

27
और जैसा कि मेरे हाई स्कूल के बिजली के शिक्षक कहते हैं, "... और संतरे का स्वाद नारंगी होता है"
इयान बोयद

7
सही है, लेकिन यह पोस्ट एक टिप्पणी के बजाय और अधिक लग रही है, क्योंकि यह पूरी तरह से सवाल का जवाब नहीं देती है।
अनार खलीलोव

7

अन्य उत्तरों को जोड़ने के लिए, POxx शब्द सभी POTS ( सादी पुरानी टेलीफोन सेवाओं) से स्टेम के लिए दिखाई देते हैं ) ।

POX, सरल (सादे पुराने) XML को परिभाषित करने के लिए इस्तेमाल किया गया, बल्कि REST, SOAP आदि से जुड़े जटिल बहुस्तरीय सामानों के बजाय, एक उपयोगी और अस्पष्ट मनोरंजक, शब्द था। पीओ (पसंद की भाषा सम्मिलित करें) हे शब्दों ने मजाक को पतला पहना है।


6

.NET में एक POCO एक 'प्लेन ओल्ड CLR ऑब्जेक्ट' है। यह 'प्लेन ओल्ड सी # ऑब्जेक्ट' नहीं है ...


5

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

कुछ अन्य उदाहरण

  • POJO (सादा पुराना जावा ऑब्जेक्ट)
  • POJI (सादा पुराना जावा इंटरफ़ेस)


2

WPF MVVM के संदर्भ में, एक POCO वर्ग वह है जो प्रॉपर्टीजघड़ी घटनाओं को फायर नहीं करता है


1

जब तक मुझे यकीन है कि POCO का मतलब है प्लेन ओल्ड क्लास ऑब्जेक्ट या प्लेन ओल्ड C ऑब्जेक्ट 99.9% लोग यहां हैं, POCO भी स्क्रिप्टिंग भाषा में निर्मित एनिमेटर प्रो (ऑटोकोड) है।


0

POCO एक सादा पुराना CLR ऑब्जेक्ट है, जो अपने समस्या डोमेन के संदर्भ में एप्लिकेशन की स्थिति और व्यवहार का प्रतिनिधित्व करता है। यह एक शुद्ध वर्ग है, बिना किसी विशेषता के, विरासत के बिना। उदाहरण:

public class Customer
{
    public int Id { get; set; }

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