વિકાસકર્તાઓમાં, ઑબ્જેક્ટ-ઓરિએન્ટેડ પ્રોગ્રામિંગે મોટા પાયે અનુયાયીઓને આકર્ષ્યા છે. લોકપ્રિય કમ્પ્યુટર ભાષા પાયથોન એ જ રીતે ઑબ્જેક્ટ-ઓરિએન્ટેડ પેરાડાઈમનું પાલન કરે છે.
તે પાયથોનમાં ઓબ્જેક્ટો અને વર્ગોને વ્યાખ્યાયિત કરવા સાથે વ્યવહાર કરે છે, જે OOPs સિદ્ધાંતોનો આધાર બનાવે છે. "પાયથોનમાં ઑબ્જેક્ટ-ઓરિએન્ટેડ પ્રોગ્રામિંગ" પરના આ ટ્યુટોરીયલમાં તમે શીખશો કે કેવી રીતે પાયથોન વર્ગો જાહેર કરવા, તેમાંથી ઑબ્જેક્ટ્સ બનાવવા અને ચાર OOPs તકનીકોનો ઉપયોગ કેવી રીતે કરવો.
તેથી, પ્રથમ વસ્તુ પ્રથમ.
ઑબ્જેક્ટ-ઓરિએન્ટેડ પ્રોગ્રામિંગ શું છે?
ઑબ્જેક્ટ-ઓરિએન્ટેડ પ્રોગ્રામિંગ (OOP) નું મુખ્ય ધ્યાન "ઑબ્જેક્ટ્સ" ની રચના છે. એકબીજા સાથે જોડાયેલા ચલો અને કાર્યોનો સંગ્રહ ઑબ્જેક્ટ બનાવે છે.
આ ચલોને વારંવાર ઑબ્જેક્ટના લક્ષણો તરીકે ઓળખવામાં આવે છે, અને તેના વર્તણૂકોને વારંવાર તેના કાર્યો તરીકે ઓળખવામાં આવે છે. આ વસ્તુઓ એપ્લિકેશનને વધુ અસરકારક અને સમજી શકાય તેવું માળખું પ્રદાન કરે છે. ઓટોમોબાઈલ એ વસ્તુનું ઉદાહરણ છે.
જો ઓટોમોબાઈલ એક આઇટમ હોત, તો તેના લક્ષણોમાં તેનો રંગ, મોડેલ, કિંમત, બ્રાન્ડ વગેરે જેવી વસ્તુઓનો સમાવેશ થતો હતો. વધુમાં, તે વેગ આપશે, ધીમું કરશે અને ગિયર્સ બદલશે.
બીજું ઉદાહરણ: જો આપણે કૂતરાને વસ્તુ તરીકે વિચારીએ, તો તેની કેટલીક લાક્ષણિકતાઓ રંગ, જાતિ, નામ, વજન વગેરે હોઈ શકે છે. અને તે ફરતો હશે, ભસતો હશે, રમશે વગેરે.
કારણ કે તે પ્રોગ્રામિંગમાં ઑબ્જેક્ટ, છુપાવવા, વારસા વગેરે જેવા વાસ્તવિક-વિશ્વના ખ્યાલોનો સમાવેશ કરે છે, ઑબ્જેક્ટ-ઓરિએન્ટેડ પ્રોગ્રામિંગ જાણીતું છે. કારણ કે તે વાસ્તવિક-વિશ્વના સંજોગો સાથે ખૂબ સમાન છે, વિઝ્યુલાઇઝેશન સરળ બનાવવામાં આવ્યું છે.
ઑબ્જેક્ટ-ઓરિએન્ટેડ પ્રોગ્રામિંગ કન્સેપ્ટ્સ
પાયથોનમાં વર્ગો અને વસ્તુઓ
અન્ય તમામ ઑબ્જેક્ટ-ઓરિએન્ટેડ ભાષાઓની જેમ, પાયથોન તમને ઑબ્જેક્ટ જનરેટ કરવા માટે વર્ગો ડિઝાઇન કરવામાં સક્ષમ કરે છે. પાયથોનમાં સૌથી વધુ લોકપ્રિય ડેટા પ્રકારો, જેમાં શબ્દમાળાઓ, સૂચિઓ, શબ્દકોશો અને અન્ય ઑબ્જેક્ટ્સ બિલ્ટ-ઇન છે.
વર્ગ એ લિંક કરેલી પદ્ધતિઓ અને દાખલા ચલોનું જૂથ છે જે ચોક્કસ પ્રકારના ઑબ્જેક્ટને વ્યાખ્યાયિત કરે છે. ઑબ્જેક્ટના નમૂના અથવા નમૂના તરીકે વર્ગને જોઈ શકાય છે. ચલો કે જે વર્ગ બનાવે છે તે લક્ષણો તરીકે ઓળખાય છે.
ઑબ્જેક્ટ એ વર્ગનો સભ્ય છે જેમાં વિશેષતાઓનો નિર્ધારિત સમૂહ હોય છે. આ કારણે, એક જ વર્ગનો ઉપયોગ કરીને ગમે તેટલી સંખ્યામાં ઑબ્જેક્ટ બનાવી શકાય છે.
પાયથોન વર્ગો વર્ગ શબ્દનો ઉપયોગ કરીને વ્યાખ્યાયિત કરવામાં આવે છે, જે પછી વર્ગના નામ અને કોલોન દ્વારા અનુસરવામાં આવે છે. પોપટ વર્ગનું ઉદાહરણ આ હોઈ શકે છે:
અહીં, આપણે ક્લાસ કીવર્ડનો ઉપયોગ કરીને ખાલી વર્ગ પોપટ જાહેર કરીએ છીએ. અમે વર્ગોમાંથી ઉદાહરણો બનાવીએ છીએ. ઉદાહરણ એ ચોક્કસ ઑબ્જેક્ટ છે જે ચોક્કસ વર્ગમાંથી બનાવવામાં આવી હતી. 'પાસ' નો ઉપયોગ વારંવાર કોડ માટે સ્ટેન્ડ-ઇન તરીકે થાય છે જેના અમલીકરણને આપણે ક્ષણ માટે છોડી શકીએ છીએ. અમે "પાસ" કીવર્ડનો ઉપયોગ કરીને ભૂલ કર્યા વિના પાયથોન કોડને એક્ઝિક્યુટ કરી શકીએ છીએ.
વર્ગનું ઇન્સ્ટન્ટેશન ઑબ્જેક્ટ (ઇન્સ્ટન્સ) માં પરિણમે છે. જ્યારે વર્ગ બનાવવામાં આવે ત્યારે માત્ર ઑબ્જેક્ટનું વર્ણન વ્યાખ્યાયિત કરવામાં આવે છે. પરિણામે, કોઈ સ્ટોરેજ અથવા RAM ફાળવવામાં આવી નથી.
પોપટ ક્લાસ ઑબ્જેક્ટનું ઉદાહરણ છે:
Obj આ ઉદાહરણમાં પોપટ-વર્ગનો પદાર્થ છે.
ચાલો કહીએ કે આપણે પોપટ વિશેની વિશિષ્ટતાઓ જાણીએ છીએ. હવે આપણે બતાવીશું કે પોપટ વર્ગ અને તેની વસ્તુઓ કેવી રીતે બનાવવી.
ખાસ પદ્ધતિ ( __init__ )
init નામની પદ્ધતિ દરેક પોપટ ઑબ્જેક્ટ () હોવી આવશ્યક છે તે વિશેષતાઓને વ્યાખ્યાયિત કરે છે. જ્યારે નવો પોપટ ઑબ્જેક્ટ રચાય છે, ત્યારે ફંક્શન __init__ ઑબ્જેક્ટના પ્રોપર્ટીઝમાં અમે સપ્લાય કરીએ છીએ તે મૂલ્યો સોંપીને ઑબ્જેક્ટની પ્રારંભિક સ્થિતિ બનાવે છે.
તેથી, વર્ગના દરેક નવા દાખલાને __init__() નો ઉપયોગ કરીને પ્રારંભ કરવામાં આવે છે. જોકે __init__() ગમે તેટલા પરિમાણો સ્વીકારી શકે છે, સ્વયં હંમેશા પ્રથમ પરિમાણ છે.
સક્રિય વર્ગના દાખલાનો સંદર્ભ સ્વ-દલીલમાં સમાવવામાં આવેલ છે. સેલ્ફ પેરામીટર, જે ક્લાસના વર્તમાન ઑબ્જેક્ટના એડ્રેસ સાથે લિંક કરે છે અને અમને તેના (ઑબ્જેક્ટના) ચલોના ડેટાની ઍક્સેસ આપે છે, તે દર્શાવે છે.
ઉદાહરણ 1
અમે ઉપરોક્ત કોડમાં પોપટ નામનો વર્ગ સ્થાપ્યો છે. આગળ, ગુણધર્મો વ્યાખ્યાયિત કરવામાં આવે છે. વસ્તુની લાક્ષણિકતાઓ તેના ગુણધર્મો છે. વર્ગનું __init__ ફંક્શન એ છે જ્યાં આ લાક્ષણિકતાઓ ઉલ્લેખિત છે.
જ્યારે ઑબ્જેક્ટ રચાય છે, ત્યારે ઇનિશિયલાઈઝર પદ્ધતિ એ છે જેને શરૂઆતમાં કહેવામાં આવે છે. પછી, પોપટ વર્ગના ઉદાહરણો બનાવવામાં આવે છે. આ ઉદાહરણમાં બ્લેઝ અને વોન્ડા આપણા નવા પદાર્થોના સંદર્ભો (મૂલ્યો) છે. __class .species અમને ક્લાસ એટ્રિબ્યુટ એક્સેસ કરવાની મંજૂરી આપે છે.
વર્ગના દરેક ઉદાહરણમાં સમાન લક્ષણો હોય છે. blaze.name અને blaze.age નો ઉપયોગ કરીને દાખલાની લાક્ષણિકતાઓને પણ એક્સેસ કરી શકાય છે. જોકે, વર્ગના તમામ ઉદાહરણોમાં અનન્ય ઉદાહરણ વિશેષતાઓ હોય છે.
ઉદાહરણ 2
પદ્ધતિઓ
વર્ગના શરીરની અંદર વ્યાખ્યાયિત કાર્યોને પદ્ધતિઓ કહેવામાં આવે છે. તેઓ આઇટમ કેવી રીતે વર્તે છે તે સ્પષ્ટ કરવા માટે કાર્યરત છે.
બે પદ્ધતિઓ, sing() અને ડાન્સ, ઉપરોક્ત એપ્લિકેશન () માં વ્યાખ્યાયિત કરવામાં આવી છે. કારણ કે તેઓ ઇન્સ્ટન્સ ઑબ્જેક્ટ પર બોલાવવામાં આવે છે, જેમ કે જ્યોત, આને ઉદાહરણ પદ્ધતિઓ તરીકે ઓળખવામાં આવે છે.
OOPS ખ્યાલના ફંડામેન્ટ્સ
ઑબ્જેક્ટ-ઓરિએન્ટેડ પ્રોગ્રામિંગના ચાર મુખ્ય વિચારો છે:
- વારસો
- ઇનકેપ્સ્યુલેશન
- પોલિમોર્ફિઝમ
- એબ્સ્ટ્રેક્શન
વારસો
લોકો વારંવાર નવજાત શિશુઓને કહે છે કે તેઓના ચહેરાના લક્ષણો તેમના માતા-પિતા જેવા હોય છે અથવા તેમને તેમના માતા-પિતા પાસેથી ખાસ લક્ષણો વારસામાં મળ્યા છે.
શક્ય છે કે તમે એ પણ અવલોકન કર્યું હશે કે તમે તમારા માતા-પિતા સાથે કેટલીક લાક્ષણિકતાઓ શેર કરો છો. વાસ્તવિક-વિશ્વની પરિસ્થિતિ પણ વારસાની સમાન છે.
જો કે, આ કિસ્સામાં, "પિતૃ વર્ગ" ની લાક્ષણિકતાઓ "બાળક વર્ગો" સુધી પસાર થાય છે. આ સંદર્ભમાં આ પાસાઓને "ગુણધર્મો" અને "પદ્ધતિઓ" તરીકે ઓળખવામાં આવે છે.
વારસા તરીકે ઓળખાતી ટેકનિકનો ઉપયોગ કરીને વર્ગ અન્ય વર્ગમાંથી તેની પદ્ધતિઓ અને લક્ષણો મેળવી શકે છે. વારસો એ બાળ વર્ગની પ્રક્રિયા છે જે પિતૃ વર્ગની મિલકતો પ્રાપ્ત કરે છે.
ઉદાહરણ:
પિતૃ વર્ગ માનવ ઉપરના ઉદાહરણમાં બાળ વર્ગ છોકરા દ્વારા વારસામાં મળેલ છે. કારણ કે છોકરો માનવ તરફથી વારસામાં મળે છે, જ્યારે અમે બોય ક્લાસનો દાખલો બનાવીએ છીએ ત્યારે અમે તેની તમામ પદ્ધતિઓ અને વિશેષતાઓને ઍક્સેસ કરી શકીએ છીએ.
છોકરાના વર્ગમાં, શાળાના નામની પદ્ધતિ પણ વ્યાખ્યાયિત કરવામાં આવી છે. પેરેંટ ક્લાસ ઑબ્જેક્ટ પદ્ધતિ schoolName ને ઍક્સેસ કરવામાં અસમર્થ છે. જોકે, શાળાના નામની પદ્ધતિને બાળ વર્ગની વસ્તુ (છોકરો) બનાવીને બોલાવી શકાય છે.
ઇનકેપ્સ્યુલેશન
વર્ગો સાથે કામ કરતી વખતે અને સંવેદનશીલ ડેટાને હેન્ડલ કરતી વખતે પ્રોગ્રામમાં દરેક વેરિયેબલને વૈશ્વિક ઍક્સેસ આપવી એ સમજદાર પગલું નથી.
પ્રોગ્રામને તે કોઈપણ ચલોની સંપૂર્ણ ઍક્સેસ આપ્યા વિના, એન્કેપ્સ્યુલેશન અમને જરૂરી ચલો મેળવવા માટે એક પદ્ધતિ પ્રદાન કરે છે.
પદ્ધતિઓ કે જે હેતુ માટે સ્પષ્ટ રીતે વ્યાખ્યાયિત કરવામાં આવી છે તેનો ઉપયોગ વેરિયેબલ્સમાંથી ડેટાને અપડેટ કરવા, સંપાદિત કરવા અથવા કાઢી નાખવા માટે થઈ શકે છે. પ્રોગ્રામિંગની આ પદ્ધતિમાં ડેટા ઇનપુટ પર ઉન્નત સુરક્ષા અને નિયંત્રણના ફાયદા છે.
નીચેના પ્રદર્શનમાં ચલોને કેટલી ઝડપથી ઍક્સેસ કરી શકાય છે તે જુઓ:
પોલિમોર્ફિઝમ
ચાલો કહીએ કે તમે બ્રાઉઝ કરવા માટે તમારા ફોનનો ઉપયોગ કરી રહ્યાં છો ઇન્સ્ટાગ્રામ ફીડ્સ. જ્યારે તમને સંગીત સાંભળવાની ઇચ્છા થઈ, ત્યારે તમે Spotify ને ઍક્સેસ કર્યું અને તમારું મનપસંદ ગીત વગાડવાનું શરૂ કર્યું.
થોડા સમય પછી, તમને એક કૉલ મળ્યો, તેથી તમે તેનો જવાબ આપવા માટે પૃષ્ઠભૂમિમાં જે કંઈ પણ કરી રહ્યાં હતાં તેને થોભાવી દીધું. તમારા મિત્રએ ફોન કરીને વિનંતી કરી કે તમે તેમને ચોક્કસ વ્યક્તિના ફોન નંબર પર ટેક્સ્ટ કરો.
તેથી તમે તેને SMS દ્વારા ફોન નંબર મોકલ્યો અને તમારા કાર્યો ચાલુ રાખ્યા. શું તમે કંઈપણ પસંદ કર્યું છે? માત્ર એક ઉપકરણ સાથે-તમારા મોબાઇલ ફોનથી-તમે ફીડ્સ દ્વારા સર્ફ કરી શકો છો, સંગીત સાંભળી શકો છો, ફોન કૉલ્સ લઈ શકો છો અને કરી શકો છો અને સંદેશા કરી શકો છો.
તેથી, પોલીમોર્ફિઝમ તેની સાથે તુલનાત્મક છે. પોલી એટલે સંખ્યાબંધ, અને મોર્ફ વિવિધ સ્વરૂપો દર્શાવે છે. તેથી, એકંદરે પોલીમોર્ફિઝમ વિવિધ સ્વરૂપો સાથે કંઈક સંદર્ભિત કરે છે.
અથવા "કંઈક" જે, સંજોગો પર આધાર રાખીને, વિવિધ વર્તણૂકોનું પ્રદર્શન કરી શકે છે. OOPS માં, પોલીમોર્ફિઝમ સમાન નામો સાથે પરંતુ અલગ વર્તણૂકો સાથે કાર્યોનું વર્ણન કરે છે. વૈકલ્પિક રીતે, સમાન ફંક્શન નામ સાથે અલગ ફંક્શન સિગ્નેચર (પરિમાણો ફંક્શનમાં પસાર થાય છે).
ઉદાહરણ:
અહીં, આપણે ઝેબ્રા અને રેબિટની તમામ વસ્તુઓને તેમની સંબંધિત ઉદાહરણ પદ્ધતિઓનો ઉપયોગ કરીને પુનરાવર્તિત કરવા માટે ચલ પ્રાણીનો ઉપયોગ કરી શકીએ છીએ. પરિણામે, ઝેબ્રા અને રેબિટ બંનેની વર્તણૂક (રંગ() અને ખાય છે()) અહીં પ્રાણી તરીકે ઓળખાતા એક ચલ દ્વારા દર્શાવવામાં આવે છે. તેથી તે પોલીમોર્ફિઝમ નિયમોનું પાલન કરે છે.
એબ્સ્ટ્રેક્શન
તમે મોટે ભાગે આ સામગ્રી વાંચવા માટે લેપટોપ, ફોન અથવા ટેબ્લેટનો ઉપયોગ કરો છો. તેને વાંચતી વખતે, તમે સંભવતઃ નોંધો પણ લઈ રહ્યા છો, મુખ્ય ફકરાઓને રેખાંકિત કરી રહ્યાં છો અને કદાચ તમારી વ્યક્તિગત ફાઈલોમાં કેટલીક માહિતી સંગ્રહિત કરી રહ્યાં છો.
જ્યારે તમે આ વાંચો ત્યારે તમે જે જોઈ શકો છો તે તમને પ્રદર્શિત કરવામાં આવી રહેલા ડેટા સાથેની "સ્ક્રીન" છે. તમે ટાઈપ કરતા જ કીબોર્ડની ચાવીઓ જુઓ છો, તેથી તમારે આંતરિક સૂક્ષ્મતા વિશે ચિંતા કરવાની જરૂર નથી જેમ કે કીને કેવી રીતે દબાવવાથી તે શબ્દ સ્ક્રીન પર દેખાઈ શકે છે.
વૈકલ્પિક રીતે, તમારી સ્ક્રીન પર એક બટન દબાવવાથી નવું ટેબ કેવી રીતે લોન્ચ થઈ શકે છે.
તેથી, આ પરિસ્થિતિમાં આપણે જે પણ અવલોકન કરી શકીએ છીએ તે અમૂર્ત છે. આપણે ફક્ત તે જે પરિણામ બનાવી રહ્યું છે તે જોઈ શકીએ છીએ અને અંદરની ગૂંચવણો (જે વાસ્તવમાં આપણા માટે મહત્વપૂર્ણ છે).
આના જેવું જ, એબ્સ્ટ્રેક્શન ફક્ત તે જ કાર્યોને જાહેર કરે છે જે કોઈપણ અમલીકરણ અથવા આંતરિક વિગતોને છુપાવતી વખતે દરેક વસ્તુ ધરાવે છે.
એબ્સ્ટ્રેક્શનનો મુખ્ય ઉદ્દેશ પૃષ્ઠભૂમિ માહિતી અને કોઈપણ બાહ્ય ડેટા અમલીકરણને છુપાવવાનો છે જેથી લોકો માત્ર તેઓને જે જોવાની જરૂર હોય તે જ જુએ. તે કોડની જટિલતાને સંચાલિત કરવામાં મદદ કરે છે.
ઉદાહરણ:
વાહન સંબંધિત અમૂર્ત વર્ગ અહીં હાજર છે. કારણ કે તે અમૂર્ત વર્ગ ABC માંથી વારસામાં મળે છે, તે અમૂર્ત છે. કારણ કે અમૂર્ત પદ્ધતિઓ વ્યાખ્યાયિત કરવામાં આવતી નથી અથવા ખાલી રહે છે, વર્ગ વાહનમાં એક અમૂર્ત પદ્ધતિ છે જેને પૈડાંની સંખ્યા કહેવાય છે જેમાં વ્યાખ્યાનો અભાવ છે.
તેઓ પદ્ધતિના અમલીકરણ માટે અમૂર્ત વર્ગોને વારસામાં મેળવતા વર્ગોની અપેક્ષા રાખે છે.
OOPS ખ્યાલોના ફાયદા
- એન્કેપ્સ્યુલેટ કરીને, ઉચ્ચ સુરક્ષા અને ડેટા ગોપનીયતા પ્રાપ્ત થાય છે.
- સમાન વર્ગના ઘણા પોલીમોર્ફિક વર્ઝનમાં લવચીકતા.
- કોડ જટિલતાનું ઉચ્ચ સ્તર એબ્સ્ટ્રેક્શન દ્વારા ઘટાડવામાં આવ્યું હતું.
- એક જ સમસ્યાને શોધવા માટે કોડની સેંકડો લીટીઓમાંથી પસાર થવાને બદલે, પ્રોગ્રામિંગની મોડ્યુલારિટી ડીબગીંગને સરળ બનાવે છે.
- કોડનો પુનઃઉપયોગ બાળ વર્ગના પિતૃ વર્ગની મિલકતોના વારસાને કારણે થાય છે.
- અસરકારક સમસ્યાનું નિરાકરણ શક્ય છે કારણ કે અમે વર્ગો બનાવીએ છીએ જે દરેક નાની-સમસ્યા માટે જરૂરી ક્રિયાઓ કરે છે. નીચેની સમસ્યા વધુ ઝડપથી ઉકેલી શકાય છે કારણ કે આપણે તે વર્ગોનો ફરીથી ઉપયોગ કરી શકીએ છીએ.
ઉપસંહાર
નિષ્કર્ષમાં, અમે Python માં OOPS વિચારો વિશે શીખ્યા, જે અત્યારે સૌથી ગરમ પ્રોગ્રામિંગ દાખલો છે.
આ વાંચ્યા પછી, તમને સમજાયું જ હશે કે OOPS પેરાડાઈમ સંપૂર્ણપણે વર્ગો અને ઑબ્જેક્ટના વિચાર સાથે વ્યવહાર કરે છે. અને OOPS વિભાવનાઓ જેમ કે એન્કેપ્સ્યુલેશન, પોલીમોર્ફિઝમ, વારસા અને એબ્સ્ટ્રેક્શન.
એક જવાબ છોડો