एस हॉर्ट उत्तर यह है कि आप स्मॉलटाक में काफी कुछ कर सकते हैं। बुला कोड से यह देखने के लिए की तरह होगा: उत्तर है
aColor := Color named: 'Red'.
कि स्मालटाक में आप कंस्ट्रक्टर्स की जरूरत नहीं है, कम से कम समझ में आप एक विशेष संदेश वर्ग के नाम पर रखा है कि में नहीं है। स्मॉलटाक में आप जो करते हैं वह क्लास-साइड संदेशों को परिभाषित करता है (यानी वर्ग द्वारा समझा गया संदेश, उदाहरण नहीं [*]) जहां आप अपने उदाहरणों को तुरंत चालू और कॉन्फ़िगर कर सकते हैं। नोट करने के लिए
(class) Color>>named: aName
| color |
color := self new.
color name: aName.
^color.
कुछ बातें:
- हम
#new
संदेश भेजा प्रयोग कर रहे हैं मान लिया जाये कि अपने Color
वर्ग एक name
उदाहरण चर और इसके लिए एक सेटर है, #named:
विधि की तरह लागू किया जाएगा एक नया उदाहरण बनाने के लिए कक्षा। आप वस्तुओं को बनाने के लिए #new
संदेश के बारे में सोच सकते हैं (संकेत: आप #new
संदेश के कार्यान्वयनकर्ताओं को यह देखने के लिए ब्राउज़ कर सकते हैं कि यह कैसे कार्यान्वित किया जाता है)।
- हम कई वर्ग विधियों को परिभाषित कर सकते हैं क्योंकि हम नए 'कॉन्फ़िगर किए गए' उदाहरण (उदा।
Color fromHexa:
) बनाना चाहते हैं या पूर्व-निर्मित वाले (जैसे Color blue
) वापस करना चाहते हैं।
- आप अभी भी
Color new
कर एक अनियमित उदाहरण बना सकते हैं। यदि आप उस व्यवहार को मना करना चाहते हैं तो आपको #new
क्लास संदेश ओवरराइड करना होगा।
कई अच्छी किताबें स्मालटाक पर ओर्थोगोनल प्रकृति के कारण है कि आप Stef's Free Online Smalltalk Books
[*] यह काफी स्वाभाविक है पर स्मालटाक बुनियादी बातों के बारे पढ़ सकते हैं सब कुछ के बाद से (सहित वर्ग) के होते हैं, एक वस्तु है। यदि आप रुचि रखते हैं तो Pharo by Example के अध्याय 13 या स्मॉलटाक में कक्षाओं और मेटाक्लास के किसी भी अन्य संदर्भ की जांच करें।
HTH
स्रोत
2013-01-08 22:14:00
भी अच्छी बात किसी भी setters, और एक ही प्रारंभ पद्धति के रूप में की जरूरत parameterised होने नहीं कर रहा है: इस मामले में ':' रंग >> #initializeWithName। –
बिट को स्पष्ट करने के लिए, कक्षा एक वस्तु है, उदाहरण एक और वस्तु है। Encapsulation का सम्मान करने के लिए, कक्षा के उदाहरण के उदाहरण चर के लिए कोई पहुंच नहीं है - संदेश भेजने के माध्यम से कृपया पूछना छोड़कर। यह बहुत समान है, स्मॉलटाक ऐसे बुनियादी कर्नेल कार्यों के लिए भी संदेश भेजने के बारे में है ... फ्रैंकशेरार ने कहा, उदाहरण के लिए एक संदेश होना बेहतर हो सकता है जो एक ही समय में सभी चर सेट करता है, यह निर्णय लेने वालों के लिए है। –
फ्रैंकशेरार और उर्फ.निस, उत्तर में सुधार के लिए धन्यवाद –