ક્લાસ અને સ્ટ્રક્ટ વચ્ચે તફાવત વર્ગ અને સ્ટ્રક્ટ વચ્ચેના તફાવતને સમજતા પહેલાં,

Anonim

વર્ગ અને સ્ટ્રક્ટ વચ્ચેના તફાવતને સમજવા પહેલાં, આપણે તેમની સાથે સંકળાયેલ કેટલાક મૂળભૂત ખ્યાલો જાણવું જોઈએ. વિભાવનાઓની સમજ વગર, બે વચ્ચેના તફાવતોને સમજવું મુશ્કેલ છે.

વર્ગ અને ઑબ્જેક્ટ શું છે:

આ ઓબ્જેક્ટ ઓરીએન્ટેડ પ્રોગ્રામિંગ સંબંધિત બે મહત્વના ખ્યાલો છે, અને તે અન્ય કાર્યોમાં પસાર થતાં કાર્યો અને ડેટાને ગોઠવવાનો આધાર બનાવે છે. વધુ સારી સમજણ માટે, અમે તેને વાસ્તવિક જીવનના ઉદાહરણ સાથે સહસંબંધ આપી શકીએ છીએ. એક વર્ગને એક સ્ટોર તરીકે ગણી શકાય, અને ઑબ્જેક્ટ કોઈ પણ વ્યક્તિગત, ચોક્કસ સ્ટોર્સ જેમ કે કરિયાણાની, સ્ટેશનરી, ફળો, વગેરે હોઈ શકે છે. તમામ ઑબ્જેક્ટ્સ મુખ્ય વર્ગના સામાન્ય ગુણધર્મોને શેર કરે છે - સ્ટોર - અને બદલામાં, પદાર્થો પાસે પોતાના વિશિષ્ટ ગુણધર્મો હોઈ શકે છે જેમ કે ચોક્કસ ડિઝાઇન, લાઇટિંગ, વગેરે. ઑબ્જેક્ટ્સ દ્વારા, અમે વાસ્તવમાં વર્ગનો ઉપયોગ કરી શકીએ છીએ; તેઓ વર્ગની રચના કરે છે.

વર્ગના સિન્ટેક્સ

વર્ગની દુકાન {

જાહેર શબ્દમાળા વસ્તુઓ;

જાહેર શબ્દમાળા ડિઝાઇન;

}

ઑબ્જેક્ટનું સિન્ટેક્ષ

સ્ટોર કરિયાણાની = નવો સ્ટોર ();

સ્ટોર સ્ટેશનરી = નવો સ્ટોર ();

સ્ટ્રક્ટ શું છે?

એક સ્ટ્રક્ટમાં માત્ર ડેટા જ છે, અને તેથી તે સ્ટ્રક્ટ ઓબ્જેક્ટ્સ મારફત વ્યક્તિગત ડેટા આવશ્યકતાઓ ઘડવામાં મદદરૂપ છે. ક્લાસથી વિપરીત, તેમાં વિધેયોનો અભાવ છે અહીં તેનું વાક્યરચના છે:

સ્ટ્રક્ટ ગ્રોસરીએન્ટ્રેન્સ {

ચાર પ્રવેશદ્વાર_નામ [50];

પૂર્ણાંક પ્રવેશદ્વાર;

ગ્રોસરી_ઇનન્ટ્રેન્સ;

બધા સ્ટોર્સ વ્યક્તિગત નામો અને કદ સાથે સ્ટ્રક્ટ 'પ્રવેશદ્વાર' નો ઉપયોગ કરી શકે છે.

વારસો શું છે?

તે કેવી રીતે એક પુત્ર તેના પિતાની સંપત્તિ બોલાવે છે અને તેના બદલામાં, પુત્ર પોતાના કેટલાક અન્ય વસ્તુઓને પણ ઉમેરી શકે છે. વર્ગ ક્યાં તો બેઝ ક્લાસ અથવા ડેરિવેટિવ ક્લાસ હોઈ શકે છે, જેમાં ભૂતપૂર્વને બાદબાકી બનાવવા માટે આધાર તરીકે લઈ શકાય છે. ડેરિવેટિવ ક્લાસ પોતાના માટે અમુક અન્ય પ્રોપર્ટી ઉમેરે છે સિવાય કે તે બેઝ ક્લાસમાંથી મળે છે. જ્યારે આપણે ઉપરના ઉદાહરણ પર વિચાર કરીએ છીએ, ત્યારે કરિયાણાની દુકાન હજુ પણ એક ચોક્કસ કરિયાણાની દુકાન, જેમ કે XYZ કરિયાણાની દુકાન તરીકે ઉદ્ભવી શકાય છે.

હવે અમે મૂળભૂત ખ્યાલોથી પરિચિત છીએ, અમે ક્લાસ અને સ્ટ્રક્ટ વચ્ચે વાસ્તવિક તફાવતમાં જઈ શકીએ છીએ.

તેઓ કેવી રીતે અલગ પડે છે?

  • ફરીથી ઉપયોગિતા: વર્ગો મૂળભૂત માળખાને બનાવે છે, તેમનો ફરીથી ઉપયોગ કરી શકાય છે; સંગઠનો, જો કે, વિશિષ્ટ ગુણધર્મ ધરાવતા વ્યક્તિગત ઘટકો છે, તેથી તેનો ફરીથી ઉપયોગ ન કરી શકાય. ઉદાહરણ તરીકે, કરિયાણાની દુકાનનો વર્ગ કોઈપણ પ્રકારના કરિયાણાની દુકાન માટે ઉપયોગમાં લઇ શકાય છે, પરંતુ સ્ટ્રક્ટ કરિયાણાની ઇંટ્રેન્સ તે એકલા માટે વિશિષ્ટ છે અને અન્ય વર્ગોમાં ફરીથી તેનો ઉપયોગ કરવા માટે કોઈ બિંદુ નથી.
  • દૃશ્યતા: ક્લાસનાં તમામ કાર્યો જાહેરમાં તેના ઓબ્જેક્ટો માટે ઉપલબ્ધ છે.ઉદાહરણ તરીકે, આપણી પાસે વર્ગ 'સ્ટોર' હેઠળ 'વસ્તુઓ' નામનું ફંક્શન છે કાર્ય 'વસ્તુઓ' તેના તમામ ઓબ્જેક્ટોને દૃશ્યમાન છે, જેમ કે 'કરિયાણાની દુકાન,' સ્ટેશનરી સ્ટોર 'વગેરે. સ્ટ્રક્ચર્સમાં આવા દૃશ્યતા શક્ય નથી કારણ કે સ્ટ્રક્ટનો ડેટા પોતે જ પ્રતિબંધિત છે અને અન્ય સ્ટ્રક્ટ્સને દૃશ્યમાન નથી. વસ્તુઓને સ્પષ્ટ કરવા માટે, અમે કહી શકીએ છીએ કે 'કરિયાણાની માહિતી' અન્ય તમામ સ્ટોર્સમાં પ્રકાશન માટે દૃશ્યક્ષમ નથી.
  • સંદર્ભ દ્વારા પસાર & પાસ દ્વારા પાસ: સંદર્ભ દ્વારા પાસ માત્ર મેમરી સ્થાન મોકલવા છે અને કાર્યો માટે વાસ્તવિક માહિતી નથી. આનો અર્થ એ છે કે જ્યારે પણ મૂલ્ય બદલાય છે, ત્યારે ફેરફાર અનુરૂપ વિધેયોમાં પ્રતિબિંબિત થાય છે. કિંમત દ્વારા પાસ, બદલામાં, ફક્ત વિધેય માટે વેલ્યુ મોકલી રહ્યું છે. આ કિસ્સામાં, તે મોકલેલ પછી મૂલ્યમાં ફેરફાર કાર્યમાં દેખાશે નહીં. ક્લાસ સંદર્ભ દ્વારા પાસનો ઉપયોગ કરે છે, અને સ્ટ્રક્ટ પાસ વેલ્યુનો ઉપયોગ કરે છે.
  • વારસો: વર્ગો પેટા-વર્ગો રચવા માટે વધુ વારસાગત થઈ શકે છે, પરંતુ સ્ટ્રક્ટ્સ વારસાના ઉપયોગ કરી શકતા નથી. ઉદાહરણ તરીકે, ક્લાસ સ્ટોર તેના કાર્યો પેટા-વર્ગ 'કરિયાણાની દુકાન' માં આપે છે. પરંતુ સ્ટ્રક્ટ 'ગ્રોસરીઅન્ટ્રેન્સ' કોઈ પણ કાર્યને બોલાવી શકતું નથી. આપણે કહી શકીએ છીએ કે સબ-સ્ટ્રક્ટ જેવી કોઈ ખ્યાલ નથી.
  • ડિફૉલ્ટ દૃશ્યતા: ક્લાસનાં તમામ સભ્યો ડિફોલ્ટ રૂપે ખાનગી કંપનીઓ તરીકે રાખવામાં આવે છે, જ્યારે સ્ટ્રક્ટના સભ્યો ડિફોલ્ટ રૂપે જાહેર કંપનીઓ તરીકે રાખવામાં આવે છે.
  • ખાલી વર્ગ અને સ્ટ્રક્ટનું કદ: ક્લાસ 1 બાથનું કદ વાપરે છે, જ્યારે તે ખાલી હોય છે, જ્યારે સ્ટ્રક્ચ કોઈ ખાલી મેમરીનો ઉપયોગ કરતી નથી જ્યારે તે ખાલી હોય. આનો અર્થ એ થાય કે આપણે કહી શકીએ છીએ કે ખાલી સ્ટ્રક્ટનું કદ 0 બાઇટ્સ જેટલું બરાબર છે.
  • કચરાના સંગ્રહ: વર્ગો સાથે કચરો સંગ્રહ શક્ય છે, કારણ કે તેઓ સંદર્ભ દ્વારા પાસનો ઉપયોગ કરે છે. તેથી, એક સ્થાન પર સફાઈ કરવું સરળ છે જ્યાં ડેટા સંગ્રહિત થાય છે. બીજી તરફ, સ્ટ્રક્ટ સાથે કચરાના સંગ્રહ શક્ય નથી, કારણ કે તે કિંમત દ્વારા પાસનો ઉપયોગ કરે છે અને ડેટા વિવિધ સ્થળોએ વિખેરાયેલા છે.
  • મેમરી મેનેજમેન્ટ: કારણ કે વર્ગ કચરાના સંગ્રહોને પરવાનગી આપે છે, મેમરી મેનેજમેન્ટ પણ અસરકારક છે; જોકે, તે સ્ટ્રક્ટ્સ સાથે અસરકારક નથી.
  • નિર્માતા: એક કન્સ્ટ્રક્ટર ચોક્કસ ચોક્કસ મૂલ્યો સાથે વર્ગને પ્રારંભ કરે છે. અમે તેને કંઈક જેવો મૂલ્ય સાથે પ્રારંભ કરવામાં આવી છે તે રીતે જોઈ શકીએ છીએ. જો કોઈ નવો વર્ગ બનાવવો પડે, તો કન્સ્ટ્રક્ટરને તે દાખલા માટે મેમરી ફાળવવા કહેવામાં આવે છે. કન્સ્ટ્રકટરને બોલાવીને આપણે દલીલો તરીકે મૂલ્યો પણ પસાર કરી શકીએ છીએ. ચાલો હવે આપણી વાસ્તવિક ચર્ચામાં આવીએ. વર્ગો તમામ પ્રકારના કન્સ્ટ્રકટર્સને મંજૂરી આપે છે, જેમ કે દલીલો સાથે અથવા વગર, જ્યારે સ્ટ્ર્ક્ટ્સ માત્ર કન્સ્ટ્રકટર્સને દલીલો સાથે મંજૂરી આપે છે, i. ઈ. પેરામીટરાઇઝ્ડ કંસ્ટ્રક્ટર
  • વિનાશક: જ્યારે પણ કોઈ વર્ગના ઘટકને કાઢી નાખવાની જરૂર પડે ત્યારે ડિસ્ટ્રક્ટર કહે છે. ડિસ્ટ્રોક્ટર, બદલામાં, તે ઉદાહરણને કાઢી નાંખે છે અને મેમરીને મુક્ત કરે છે. વર્ગ ડિસ્ટ્રક્ટરનો ઉપયોગ કરી શકે છે, જ્યારે સ્ટ્રક્ટ નથી કરી શકતા.
  • સભ્ય ચલો પ્રારંભ: વર્ગોમાં, અમે સીધી સભ્ય ચલો પ્રારંભ કરી શકો છો; સ્ટ્રક્ટ્સ સાથે આવા આરંભ શક્ય નથી.
  • ઑબ્જેક્ટ ક્રિએશન: વર્ગોમાં ઑબ્જેક્ટ બનાવટ માટેનું સામાન્ય વાક્યરચના એ છે:

ડેમો ઑબ્જ = નવા ડેમો ();

તેનો અર્થ એ કે વર્ગના ઓબ્જેક્ટો બનાવતી વખતે આપણે 'નવા' શબ્દનો ઉપયોગ કરવો જોઈએ.સ્ટ્રક્ટ્સના ઓબ્જેક્ટો બનાવતી વખતે આ જરૂરી નથી. માત્ર તેમની વાક્યરચના પર એક નજર કરો:

ડેમો ઑબ્જે;

તે શબ્દ 'નવું' વિના પણ તે સંપૂર્ણપણે કાર્ય કરે છે

વર્ગનો ઉપયોગ ક્યારે કરવો અને જ્યારે સ્ટ્રક્ટનો ઉપયોગ કરવો?

વર્ગો માહિતી અને વિધેયોને એકસાથે સોંપવામાં વધુ સાનુકૂળ હોય છે, જ્યારે આપણે ઉપયોગમાં લેવાતી વસ્તુઓ જટીલ અને મોટા હોય ત્યારે તે માટે જઈ શકીએ છીએ. અમારા ઉદાહરણમાં, મૉલ વધુ સારી રીતે સિસ્ટમને દર્શાવવા માટે વર્ગ 'સ્ટોર' નો ઉપયોગ કરી શકે છે. સ્ટ્રક્ટ્સ, જો કે, નાના વસ્તુઓ માટે પ્રતિબંધિત છે, કારણ કે તે વર્ગો કરતાં તુલનાત્મક રીતે ઓછી અસરકારક છે. તેથી, જો તમે તમારી પોતાની દુકાન તૈયાર કરો છો, તો સ્ટ્રક્ટ્સ વધુ સારી પસંદગી છે.

વર્ગ અને વાઇસ વર્સા માટે સ્ટ્રક્ટ કેવી રીતે રૂપાંતરિત કરવું?

તમે સ્ટ્રક્ટ ટુ એ ક્લાસને કન્વર્ટ કરવા માટે 'બોક્સીંગ' અને 'અનબૉક્સિંગ' શબ્દો સાંભળ્યા હશે, અને ઊલટું. તેમ છતાં રૂપાંતરણમાં મદદ કરવા માટે આ અસરકારક પ્રક્રિયા છે, તેમનું ધ્યાન સાવચેત રાખવું જોઈએ. જેમ જેમ તે સીધી રીતે મેમરી સ્થાનો પર અસર કરે છે, તેમ છતાં અમારી સિસ્ટમની કામગીરી પર ભારે અસર પડે છે. વધુમાં, તે કચરો સંગ્રહ પ્રક્રિયાને અસર કરે છે અને એકંદરે સિસ્ટમ બિનકાર્યક્ષમતામાં પરિણમે છે. તેથી, જ્યારે જરૂરી હોય ત્યારે જ આ રૂપાંતરણોનો ઉપયોગ કરો.

આપણે કોષ્ટક સ્વરૂપમાં ઉપર જણાવેલ તફાવતોને જોઈએ.

એસ. સમજો તફાવતો
વર્ગ સ્ટ્રક્ટ
1 ફરીથી ઉપયોગિતા સંપૂર્ણપણે ફરીથી વાપરી શકાય તેવું ફરીથી ઉપયોગમાં લેવાતું નથી
2 દૃશ્યતા < ક્લાસનાં તમામ કાર્યો તેના પદાર્થો માટે દૃશ્યમાન છે સ્ટ્રક્ટની ઑબ્જેક્ટનો ડેટા સમાન સ્ટ્રક્ટના અન્ય ઑબ્જેક્ટ્સ માટે દૃશ્યમાન નથી 3
રેફરન્સ પાસ અને વેલ્યુ દ્વારા પાસ સંદર્ભ દ્વારા પાસનો ઉપયોગ મૂલ્ય દ્વારા પાસનો ઉપયોગ કરે છે 4 વારસો
વર્ગનો કાર્ય તેના પેટા વર્ગ દ્વારા વારસામાં મળી શકે છે; વારસાને પરવાનગી આપે છે વારસાને ક્યારેય મંજૂરી આપવી નહીં 5 મૂળભૂત દૃશ્યતા
વર્ગના તમામ સભ્યો મૂળભૂત રૂપે ખાનગી છે સ્ટ્રકનાં તમામ સભ્યો મૂળભૂત રૂપે જાહેર થાય છે 6 ખાલી હોય ત્યારે કદ
ખાલી વર્ગનું કદ 1 બાઇટ ખાલી સ્ટ્રક્ટનું કદ 0 બાઇટ્સ 7 કચરાના સંગ્રહ
સંદર્ભ દ્વારા પાસનો ઉપયોગ કરતી વખતે, કચરો સંગ્રહ શક્ય છે કારણ કે તે મૂલ્યથી પાસનો ઉપયોગ કરે છે, કચરો સંગ્રહ શક્ય નથી 8 મેમરી મેનેજમેન્ટ
કચરાના સંગ્રહની પ્રક્રિયામાં સરળતા અસરકારક મેમરી મેનેજમેન્ટમાં સહાય કરે છે ગૅબરેજ સંગ્રહના અભાવને કારણે ગરીબ મેમરી મેનેજમેન્ટ 9 કન્સ્ટ્રકટર્સ
તમામ પ્રકારનાં કન્સ્ટ્રકટર્સને મંજૂરી આપે છે, જેમ કે પેરામીટર સાથે અથવા વગર ફક્ત પેરામીટરાઇઝ્ડ કન્સ્ટ્રકટર્સને પરવાનગી આપે છે 10 ડિસ્ટ્રિકટર્સ
તેનો ઉપયોગ કરી શકે છે Can not use તેનો ઉપયોગ 11
સભ્ય ચલો પ્રારંભિક સભ્ય વેરિયેબલ્સના સીધા પ્રારંભને મંજૂરી આપે છે સભ્ય ચલોનું સીધું શબ્દ આરંભ 12 < ઑબ્જેક્ટ ક્રિએશન
ઑબ્જેક્ટ બનાવટ દરમિયાન કીવર્ડ 'નવી' નો ઉપયોગ કરવો આવશ્યક છે ઑબ્જેક્ટ બનાવટ દરમિયાન કીવર્ડ 'નવી' નો ઉપયોગ કરવા માટે વૈકલ્પિક છે 13 ક્યારે ઉપયોગ કરવો?
મોટા અને જટીલ પદાર્થો માટે વધુ સારું જ્યાં વારસા જરૂરી છે નાના અને સરળ વસ્તુઓ માટે વધુ સારું છે જ્યાં વારસા ઓછી મહત્વની હોય છે. અમે ક્લાસ અને સ્ટ્રક્ટ વચ્ચેના તમામ મતભેદોને લગભગ આવરી લીધાં છે, અને જો તમને લાગે કે કંઈક ખૂટે છે, તો કૃપા કરી અમને જણાવો. ચાલો સાથે મળીને શીખીએ અને તે જ્ઞાનનો સૌથી વધુ ઉપયોગ કરીએ!