#IT#ITJobs#Freshers
आधीच्या 🧵 मध्ये आपण Interfaces आणि Abstract Class बद्दल माहिती घेतली.
आज आपण Java 8 मधील बदलांच्या अनुषंगाने ह्याच प्रश्नाचे स्वरूप कसे बदलू शकतं ते बघूया. Java 8 मध्ये आपण Interfaces मध्ये पण methods चे default implementation देऊ शकतो. 👇
ह्याचाच अर्थ कि आधी interfaces आणि abstract class मध्ये जो एक मूळ फरक होता तोच जसा काही नाहीसा झाला. Java 8 च्या अगोदर Interface मधील method चे फक्त signature देऊ शकत होतो पण आता signature आणि वास्तविक code पण Interfaces मध्ये लिहू शकतो. 👇
तर Java 8 नंतर interfaces आणि abstract class एकसारखेच झालेत का? हा एक trick question म्हणू शकतो. पण ह्याचं उत्तर आहे नाही Java 8 नंतर हि interfaces आणि abstract class एकसारखेच नाहीत.
सगळ्यात पाहिले हे समजायला हवं कि ह्या default methods का आल्या. 👇
Interfaces चा नियम आहे कि त्या मध्ये असलेल्या प्रत्येक method ला implementing class मध्ये override करणं बंधनकारक असतं. जर तुमच्या class ने एक जरी method override नाही केली तर तो class कम्पाइल होत नाही. आता समजा तुमचे एप्लिकेशन बनून त्याचा वापर सुरु आहे.👇
एक Interface आहे ज्याला खूप सारे classes implement करतात.अश्या वेळी कुठल्या अपग्रेड च्या वेळी Interface मध्ये नवीन method लिहिल्या गेली तर सगळ्याच implementing classes ला तिला override करावी लागेल.जर नाही केले तर ते कम्पाइल होणार नाही. जे मेंटेनन्स च्या दृष्टी ने बरोबर नाही. 👇
त्यामुळेच Java 8 default implementation मुळे सगळे classes कम्पाइल होतील आणि ज्या एप्लिकेशन ला नवीन method override करायची आहे तो ती कधीही करू शकतो.तर थोडक्यात काय फक्त Backward Compatibility साठी करण्यात आलेली हि सोय आहे.त्यामुळे Interfaces आणि Abstract Classes सारखे होत नाहीत.👇
तसेही Class चा संबंध हा object सोबत असतो.आणि Object म्हंटलं कि त्याची state येणारच म्हणजेच त्यामधील attributes चे मेमरी मध्ये जागा व्यापणे हे येतच.
म्हणूनच abstract class मध्ये आपण object चे attributes लिहू शकतो. 👇
Abstract class ला extend करणाऱ्या class ला त्याचा ऍक्सेस असतो सोबतच त्यामधील value बदलू शकतो(state change).Interface मध्ये आपण object attributes नाही लिहू शकत ज्यामुळे object state मध्ये त्याच योगदान नसतं.म्हणूनच Interface आणि Abstract Class पूर्णपणे वेगळ्या गोष्टी आहेत👇
पण Java 8 नंतर जर तुमचा implementing class २ Interfaces implement करतोय आणि त्या दोन्ही interfaces मध्ये एकसारख्या methods चे default implementation आहे तर त्या वेळी Diamond of Death चा प्रश्न उद्भवू शकतो.अश्या वेळी जे Interfaces च्या implementing classes ना दोन पर्याय आहेत.👇
1⃣Implementing class ने ती method पूर्णपणे override करणे.
2⃣Implementing class ला interface मध्ये लिहिलेला code वापरायचा असल्यास super हा कीवर्ड वापरून default implementation मधील code ला reuse करावे.
असे न केल्यास तुमचा code कम्पाइल होणार नाही.
• • •
Missing some Tweet in this thread? You can try to
force a refresh
फ्रेशर म्हणून एका डेव्हलपर ला मुलाखती दरम्यान विचारला जाणारा प्रश्न म्हणजे Interface आणि Abstract Class म्हणजे काय? आणि कोणत्या वेळी काय वापरावे? दैनंदिन जीवनातील काही उदाहरण देण्याचा प्रयत्न करतो म्हणजे सगळ्यांना समजता येईल. 👇
🔎Interface - सोप्या भाषेत सांगायचं झालं तर Interface म्हणजे एक साचा. जसा एका मूर्तिकाराकडे मूर्ती बनवायचा एक साचा असतो अगदी तसा. आता समजा कि तुम्ही अमुक एक मूर्ती बनवण्याचा साचा विकताय. 👇
जेव्हा तुम्ही तो साचा विकला, तुम्हाला नाही माहिती कि ह्या साच्यातून मातीची मूर्ती बनणार कि कुठल्या धातूची कि प्लास्टर ऑफ पॅरिस ची. तिचा रंग काय असणार, तिचे डोळे कसे असणार ह्या गोष्टी (implementation) तुमच्या मूर्तिकारावर सोडल्या आहेत. 👇
आमचे प्रॉडक्ट डेटा सेंटर वरून 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 कशी बनवायची ह्या बद्दल माहिती देतात. 👇