सामान्य रूप से, प्रोग्रामिंग ऑब्जेक्ट्स वास्तविक जीवन वस्तुओं को दर्पण करना चाहिए।
ज्यादा नहीं, केवल पर्याप्त है।
ओओपी की मुख्य विशेषताओं में से एक, अमूर्त है। किसी ऑब्जेक्ट के सभी विशेषताओं/विधियों का उपयोग करने में सक्षम होने की आवश्यकता नहीं है।
आपको इसका उपयोग करने के लिए मूलभूत आवश्यकता है।
ऑब्जेक्ट्स के बारे में पूरी बात, डेटा और फ़ंक्शन जो एक ही स्थान पर उस डेटा के बारे में कुछ करने के लिए है।
तो आपके फल वर्ग में मैं Color
के रूप में बेहतर होगा या अगर इसे खाया जाएगा तो संकेत होगा। उदाहरण के लिए:
Fruit
+ color : Color
- isMature : Boolean
+ canBeEaten() : Boolean
return isMature
इस तरह आप अलग अलग फल
apple = Fruit()
appe.color = Color.red
out.print("Can this fruit be eaten? %s ", apple.canBeEaten())
orange = Fruit()
orage.color = Color.orange
out.print("Can this fruit be eaten? %s ", orange.canBeEaten())
आदि
आप विशेषताओं (रंग और isMature) दिखाई देता है ऑब्जेक्ट के अंदर जमा हो जाती है बना सकते हैं। इस तरह आपको बाहर से अपने राज्य का ट्रैक रखने की जरूरत नहीं है।
विरासत के लिए, यह केवल तब समझ में आता है जब आपको किसी विधि में नया व्यवहार जोड़ने की आवश्यकता होती है, और हां, विधियां ऑब्जेक्ट्स के गुणों या विशेषताओं से संबंधित होती हैं। जैसा कि आप इंगित करते हैं fruit.eat()
अधिक समझ में नहीं आता है।
लेकिन रस से रस प्राप्त करने के लिए एक विधि पर विचार करें।
Fruit
+ getJuice(): Juice
Apple -> Fruit
+ getJuice(): Juice
// do what ever is needed internally to create the juice
Orange -> Fruit
+ getJuice(): Juice
// here, certainly the way to get the juice will be different
+1 अच्छे उदाहरण। एक और उदाहरण यह होगा कि फल खाद्य इंटरफ़ेस/वर्ग का है और उपभोक्ता वस्तु, जैसे कि व्यक्ति वर्ग की वस्तु, में ईट (खाद्य ई) विधि है। जो MyPerson.Eat (myEdible) को ले जाएगा, ओपी की तरह अनुमान लगा रहा था। – Spoike
सुरक्षित आभासी शून्य OnEaten() {Barf(); } –