फ्रेशर म्हणून एका डेव्हलपर ला मुलाखती दरम्यान विचारला जाणारा प्रश्न म्हणजे Interface आणि Abstract Class म्हणजे काय? आणि कोणत्या वेळी काय वापरावे? दैनंदिन जीवनातील काही उदाहरण देण्याचा प्रयत्न करतो म्हणजे सगळ्यांना समजता येईल. 👇
🔎Interface - सोप्या भाषेत सांगायचं झालं तर Interface म्हणजे एक साचा. जसा एका मूर्तिकाराकडे मूर्ती बनवायचा एक साचा असतो अगदी तसा. आता समजा कि तुम्ही अमुक एक मूर्ती बनवण्याचा साचा विकताय. 👇
जेव्हा तुम्ही तो साचा विकला, तुम्हाला नाही माहिती कि ह्या साच्यातून मातीची मूर्ती बनणार कि कुठल्या धातूची कि प्लास्टर ऑफ पॅरिस ची. तिचा रंग काय असणार, तिचे डोळे कसे असणार ह्या गोष्टी (implementation) तुमच्या मूर्तिकारावर सोडल्या आहेत. 👇
तुम्ही फक्त तो साचा दिला ज्यामधून एका ठराविक परिमाणा प्रमाणे मूर्ती तयार होईल.जिचे डोके अमुक इंच असेल,मूर्तीची हात आणि पाय एका ठराविक पद्धतीचे असतील. म्हणजेच तो साचा एक contract आहे ज्यामध्ये साहित्य टाकले कि परिणामस्वरूप तुम्हाला एका ठराविक dimension ची मूर्ती मिळेल (behavior)👇
सोबतच साच्याद्वारे तुम्ही ते behavior standardize केले जेणेकरून तुमचा साचा वापरणाऱ्याला प्रत्येकाला किमान एका निश्चित सेवारूपाची मूर्ती मिळेल. तर Interfaces म्हणजे एक contact किंवा blueprint ज्यामध्ये तुमच्या object चे behavior काय असेल हे standardize असतं. 👇
म्हणूनच Interface मध्ये सगळ्या Methods किंवा Functions ची फक्त Signature असते आणि Method चे Implementation त्या Interface पासून बनणाऱ्या Class वर सोडले असते. 👇
🔎Abstract Class - जसं Interfaces चा उद्देश standardization असतो तसाच Abstract Class चा उद्देश Standardization आणि Generalization असतो. दैनंदिन जीवनातील उदाहरण द्याचे झाले तर पेमेंट अँप.👇
असं समजा कि तुम्ही एक पेमेंट अँप बनवताय.तुमच्या पेमेंट अँप Account मध्ये एकदम बेसिक वैशिष्ट्ये म्हणजे पैसे टाकणे आणि पैसे काढणे एवढेच आहे. पैसे टाकणे म्हणजे तुमच्या बॅलन्स मध्ये नवीन रक्कम जोडणे.आणि पैसे काढणे म्हणजे काढलेली रक्कम तुमच्या बॅलन्स मधून वजा करणे.👇
आता तुमचे अँप खूप प्रसिद्ध झाले आणि तुमचे पेमेंट अँप आता एका बँक मध्ये रूपांतरित झाले आणि म्हणूनच तुमच्या अँप मध्ये बचत खात्याची(SavingAccount) ची पण सुविधा आली.पण जेव्हा बचत खाते आले त्यासोबतच पैसे काढण्याचे नियम बदलले. 👇
आता तुम्हाला किमान अमुक एक रक्कम तुमच्या खात्यात नेहमी ठेवावी लागणार (minimum balance). पण जर minimum balance जर असेल तर पैसे काढण्याची प्रक्रिया पेमेंट अँप मध्ये असलेल्या प्रक्रिये प्रमाणेच असेल जेकी काढलेली रक्कम तुमच्या बॅलन्स मधून वजा करणे.👇
आणि पैसे टाकण्याची प्रक्रिया अगदी पाहिले सारखीच राहणार. ह्याचा अर्थ तुमच्या अँप च्या Account मध्ये असलेल्या पैसे टाकणे आणि काढणे ह्या ह्याचे जे behavior दिले होते, SavingAccount ने ते behavior Reuse केले आणि थोडे फार वाढवले (extend). 👇
तुमचे अँप आता बँक झाले म्हणून व्याज पण आपण देऊ शकतो पण व्याज हे Account च्या प्रकावर अवलंबून राहील (SavingAccount/CurrentAccount) म्हणून Account मध्ये व्याज काढण्याचे फक्त standard देऊ शकतो पण त्याला कसे implement करायचे हे Saving Account आणि Current Account वर अवलंबून असेल.👇
म्हणूनच Abstract Class मध्ये काही methods ची फक्त Signature असते जेणेकरून ते Standardization होतं (व्याज) आणि काही methods चे Implementation (पैसे टाकणे आणि पैसे काढणे) पण राहू शकतं ज्यामुळे Generalization आणि Reuse होतो.
जर तुम्हाला तुमच्या सिस्टिम मध्ये default behavior द्यायचे असेल जे सगळ्या implementation class मध्ये reuse होऊ शकेल तर Abstract Class वापरावा.पण जर ते default behavior प्रत्येक class ला बदल करवण्याची (override) गरज भासत असेल तर default behavior देण्याचा काहीच फायदा होणार 👇
नाही अश्या वेळी Interfaces चा वापर करावा. सोबतच जर तुमचे implementation classes एका पेक्षा जास्त classes inherit करण्याची शक्यता असेल तर Interfaces वापरावे.कारण Diamond of Death मुळे खूप प्रोग्रामिंग लँगवेज मध्ये multiple inheritance ग्राह्य नाही.
• • •
Missing some Tweet in this thread? You can try to
force a refresh
आमचे प्रॉडक्ट डेटा सेंटर वरून AWS वर जात आहे (टेस्ट सर्व्हर्स).प्रॉडक्ट मध्ये ई-मेल नोटिफिकेशन पाठवण्याचा एक भाग आहे.म्हणूनच AWS वर ई-मेल सर्व्हर सेटअप केले आहे.पण ई-मेल काही जात नव्हते आणि error येत होता Mail server connection failed.👇
Connection failed असा error होता म्हणून AWS चे Security Groups बघितले पण सगळं व्यस्थित होतं. आणि विशेष म्हणजे जसे हे सर्व्हर्स आहेत तसेच दुसरे AWS servers बनवले पण तिथे कधीच असा error नाही आला. 👇
थोडं गूगल केलं तर एका ब्लॉग मध्ये लिनक्स वर असलेली होस्ट फाईल मध्ये एक बदल करायला सांगितला. 127.0.0.1 localhost अशी पाहिली loopback ऍड्रेस ची एन्ट्री होस्ट फाईल मध्ये होती त्या ऐवजी 127.0.0.1 <<host_name>> अशी पहिली एन्ट्री आणि 127.0.0.1 localhost हि दुसरी entry केली.👇
बऱ्याच डेव्हलपर्स ला Linux शिकायचे असते. Java/python ह्या languages जितक्या Linux वर प्रभावशाली आहेत तितक्या Windows वर नाहीत. म्हणून Linux चे ज्ञान असणे आवश्यक ठरते. पण कशी शिकणार/इंस्टॉलेशन हा मोठा प्रश्न पडतो. 👇
Laptop ला Dual boot मध्ये २ OS टाकू शकता पण मला ती एक किचकट पद्धत वाटते. तुम्ही तुमच्या Windows लॅपटॉप च्या command prompt ला cygwin द्वारे Linux terminal सारखे वापरू शकता पण फक्त terminal म्हणजे OS नव्हे. तिथे फक्त तुम्हाला मूलभूत commands वापरता येतील.👇
पण जर आपल्याला स्वतःच्या लॅपटॉप वर मूळ OS न काढता/Dual Boot न करता अगदी सोप्या पद्धतीने Linux टाकता आले तर? ह्या साठीच आपण आज Oracle Virtual Box ह्या मोफत टूल बद्दल थोडी माहिती देण्याचा प्रयत्न करतोय. 👇
IT कंपनी जॉब साठी CS/IT फ्रेशर्सना विचारला जाणारा एक प्रश्न म्हणजे "What is Encapsulation?" या प्रश्नाला सहसा Data Hiding असं उत्तर मिळतं. पण Encapsulation चा "प्रॅक्टिकल" उपयोग काय तर समाधानकारक उत्तर मिळत नाही.👇
ह्या प्रश्नाचे उत्तर मिळवण्यासाठी एक गोष्टं सांगतो.
२००६ सालची गोष्टं आहे. Java Developer म्हणून माझा पहिला जॉब आणि पहिला प्रोजेक्ट. 👇
माझ्या टीम लीड ने मला एक Class लिहायला सांगितला. ज्या मध्ये काही attributes आणि methods (behavior) होते. टीम लीड ने सांगितले कि attributes ला private आणि methods public ठेवायच्या. "कन्सेप्ट" क्लिअर नसल्यामुळे मी त्याला विचारले कि आपण नेहेमी attributes private का ठेवतो? 👇
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 कशी बनवायची ह्या बद्दल माहिती देतात. 👇