IT कंपनी जॉब साठी CS/IT फ्रेशर्सना विचारला जाणारा एक प्रश्न म्हणजे "What is Encapsulation?" या प्रश्नाला सहसा Data Hiding असं उत्तर मिळतं. पण Encapsulation चा "प्रॅक्टिकल" उपयोग काय तर समाधानकारक उत्तर मिळत नाही.👇
ह्या प्रश्नाचे उत्तर मिळवण्यासाठी एक गोष्टं सांगतो.
२००६ सालची गोष्टं आहे. Java Developer म्हणून माझा पहिला जॉब आणि पहिला प्रोजेक्ट. 👇
माझ्या टीम लीड ने मला एक Class लिहायला सांगितला. ज्या मध्ये काही attributes आणि methods (behavior) होते. टीम लीड ने सांगितले कि attributes ला private आणि methods public ठेवायच्या. "कन्सेप्ट" क्लिअर नसल्यामुळे मी त्याला विचारले कि आपण नेहेमी attributes private का ठेवतो? 👇
मी प्रश्न Continue केला कि तसेही आपण accessor methods (getters-setters) देतोच ज्या मधून attribute मध्ये असलेला data आपण मिळवू शकतो आणि जसा data हवाय तसा टाकू पण शकतो. इतकं करण्या ऐवजी attributes ला public केलं तर काय बिघडलं? कसेही केले तर आपला उद्देश तर साध्य होतोच आहे. 👇
तो हसला आणि त्यांनी मला उदाहरण दिलं. समज माणूस नावाचा एक class आहे. आता माणसाचे attributes असतील त्यातलेच age (वय) हे एक attribute असेल. मी शांतपणे ऐकत होतो. तो पुढे म्हणाला कि आता जर हे age attribute public केले तर काय होणार? 👇
मी उत्तर दिले कि object attribute मध्ये directly data get/set करू शकणार. तो मला Interrupt करत म्हणाला कि directly म्हणजे age ची value negative पण set करू शकतो बरोबर? मी गांगरलो आणि म्हंटलं हो करू शकतो. तर त्यांनी विचारलं कि ह्यावर उपाय काय? 👇
मी उत्तर दिले कि object नि सेट केलेला age data आपण Check करायला हवा कि age positive आहे कि negative. तो पुढे म्हणाला अगदी बरोबर पण जेव्हा आपण attributes ला public करतो तेव्हा आपण असा check लावूच शकणार नाही. म्हणूनच get आणि set methods असतात.👇
जेणेकरून जेव्हा object set method वापरून data set करेल तेव्हा त्या ठिकाणी आपल्या आपल्या Code मधून येणारा data validate करता येईल. तसेच get method वापरून कुठला data object ला मिळवता येईल ते पण validate करू शकतो. आणि जर data valid नसेल तर data reject करू शकतो. 👇
ह्यालाच Encapsulation असे म्हणतात. जेव्हा आपण Class बनवतो तेव्हा Object valid state (object मधील data valid आहे कि नाही) मध्ये ठेवणे हे पण तितकेच महत्वाचे असते. Encapsulation एक माध्यम आहे ज्यामुळे आपण Object ची valid state maintain करतो. 👇
Object ची state change (attributes मधील value बदलणे) हि योग्य प्रकारेच व्हायला हवी आणि ती योग्य प्रकारे व्हायला हवी ह्यासाठीच Encapsulation सांगतं कि attributes private आणि accessor methods (get आणि set) पब्लिक. 👇
IT कंपनी मध्ये मुलाखत घेतांना विशेषतः Computer/IT Freshers ला विचारला जाणारा एक प्रश्न म्हणजे What is a Class and What is an Object? 👇
जवळपास सगळ्यांचं उत्तर हे पुस्तकी भाषेतलं असतं कि A Class is Blueprint of Object and an Object is instance of Class. हे उत्तर म्हणजे पत्ता सांगण्यासारखं आहे. बस स्टॅन्ड कुठे तर गणपती मंदिरासमोर आणि गणपती मंदिर कुठे तर बस स्टॅन्ड समोर. दोन्ही अमोरासमोर.👇
ह्याच प्रश्नाला जर थोडं सोप्या भाषेत आणि दैनंदिन जीवनातील उदाहरणासहित सांगता आले तर त्याचा 'इम्पॅक्ट' चांगला होतो.
उदाहणार्थ जर तुम्हाला सायकल डिजाईन करायची आहे. तर आपल्याला काय प्रश्न पडणार? 👇
मित्रांनो, परंपरागत पद्धतीने म्हणजेच JAVA/PYTHON/.NET ह्या प्रोग्रामिंग language वापरून जर systems तयार केल्या तर त्या साठी लागणार वेळ खूप जास्ती असतो. सोबतच जितका जास्ती code तितकेच bugs असण्याची शक्यता असते. 👇
म्हणूनच IT industry मध्ये readymade tools/platforms ला खूप महत्त्व आहे. हे tools तुमच्या साठी code लिहितात आणि एका developer चा वेळ वाचवतात. आजच्या घडीला जितक्याही IT Systems बनत आहेत त्या मध्ये सगळ्यात महत्वाचं आहे System Integration (SI). 👇
तर SI साठी लागणाऱ्या एका Platform बद्दल थोडी माहिती देत आहे. Mulesoft Anypoint Platform हे एक अग्रणी असलेले SI tool आहे. विशेष म्हणजे ह्या Mulesoft चे २ course मोफत आहेत. ज्यामध्ये तुम्हाला tool बद्दल माहिती आणि system कशी बनवायची ह्या बद्दल माहिती देतात. 👇