Theory
ત્રણ શબ્દ, પરીક્ષાનો એક પ્રિય પ્રશ્ન
દસ students ને encapsulation, data hiding અને abstraction વચ્ચેનો ભેદ પૂછો, અને આઠ જવાબ આપશે "એ તો... લગભગ એક જ છે ને?"
પરીક્ષકોને આ ખબર છે, અને એટલે જ "encapsulation, abstraction અને data hiding ને ઉદાહરણ સાથે અલગ પાડો" એ VNSGU નાં પેપરોમાં આવ્યા જ કરે છે.
એ સંબંધિત છે, પણ દરેક જુદા કામનું નામ છે. તમે બાંધી રહ્યા છો એ canteen નું till આ ત્રણેય પહેલેથી કરે છે, તો ચાલો એમને રંગેહાથ પકડીએ.
Theory
એક counter, ત્રણ વિચાર
Canteen ના counter ને જુઓ:
- ચા વિશેની દરેક વસ્તુ (કીટલી, પત્તી, ચોપડો, રીત) એક station પર વસે છે: એ સાથે હોવું એ encapsulation છે.
- Station નું રોકડનું ખાનું તાળાબંધ છે: એ તાળું એ data hiding છે.
- તમે, ગ્રાહક, ફક્ત મેનુ અને ઘંટડી જુઓ છો: એ સરળ કરેલું દૃશ્ય એ abstraction છે.
એ જ station, ત્રણ અલગ રચનાના નિર્ણય.
Theory
ત્રણેય, ઔપચારિક રીતે
Encapsulation: data અને એના પર કામ કરતાં functions ને એક જ એકમ (class) માં વીંટવું. cash ને addSale() સાથે રાખતો CanteenTill class એ encapsulation છે.
Data hiding: અંદરના data ને બહારથી અપ્રાપ્ય બનાવવો, private / protected થી અમલમાં મુકાયેલું. private: double cash; એ data hiding છે.
Abstraction: ફક્ત આવશ્યક લક્ષણો ઉઘાડવાં અને જટિલતા છુપાવવી. બહારના લોકો placeOrder() જુએ છે, એની અંદરનાં પંદર પગલાં નહીં.
At a glance
પરીક્ષા માટે બાજુ બાજુમાં
| ખ્યાલ | એ શું કરે છે | C++ નું ઓજાર |
|---|---|---|
| Encapsulation | Data વત્તા functions ને એક એકમમાં બાંધે છે | class { } |
| Data hiding | અંદરની વસ્તુઓ સુધી બહારની પહોંચ રોકે છે | private, protected |
| Abstraction | ફક્ત આવશ્યક ક્રિયાઓ દેખાડે છે | public interface |
Theory
એ એકબીજા પર કેવી રીતે આધારિત છે
એને એક વાક્ય તરીકે વિચારો: encapsulation પેટી બનાવે છે, data hiding પેટીને તાળું મારે છે, abstraction ઢાંકણા પર સાદું લેબલ ચીતરે છે.
Encapsulation વગર છુપાવવા જેવું કશું જ નથી (data છૂટો તરે છે, procedural C ની જેમ). Data hiding વગર encapsulation ફક્ત એક સૂચન છે (બધું બંધાયેલું છતાં અડી શકાય એવું). Abstraction વગર, data સલામત હોય તોય વાપરનારા વિગતોમાં ડૂબી જાય છે.
એ આધારનો ક્રમ બરાબર એ જ કથા છે જે તમારા છેલ્લા ત્રણ પાઠોએ કહી: class → access specifiers → આ.
Quiz
ATM તમને ચોપડા, networks કે તિજોરીની યાંત્રિકતા વિશે કશું જાણ્યા વગર WITHDRAW દબાવવા દે છે. આ કયો ખ્યાલ સૌથી સારી રીતે દર્શાવે છે?
- Abstraction: ફક્ત આવશ્યક ક્રિયા ઉઘાડી છે
- Data hiding: ATM નાં variables private છે
- Encapsulation: ATM data ને functions સાથે બાંધે છે
- Inheritance: ATM એ Bank class માંથી ઊતરે છે
Show the answer
Abstraction: ફક્ત આવશ્યક ક્રિયા ઉઘાડી છે
દૃશ્ય એ વિશે છે કે વાપરનાર શું જુએ છે: એક સાદું બટન જે પ્રચંડ જટિલતા છુપાવે છે, એટલે કે abstraction. ATM ના software ની અંદર data hiding અને encapsulation પણ ચોક્કસ હાજર છે જ, પણ પ્રશ્નનો ભાર (યાંત્રિકતા જાણ્યા વગર વાપરવું) એ abstraction ની પાઠ્યપુસ્તકની વ્યાખ્યા છે. વર્ગીકરણના પ્રશ્નોમાં સાચો શબ્દ પસંદ કરવાની રીત આ વાપરનારના દૃષ્ટિકોણની કસોટી છે.
Think first
ત્રણેયનું વર્ગીકરણ કરો
CanteenTill class માં: (1) cash એ private declare થયેલો છે, (2) cash અને addSale() એક જ class માં વસે છે, (3) main() હંમેશા ફક્ત placeOrder() જ બોલાવે છે. Tap કરતાં પહેલાં, આ ત્રણેય હકીકતો પાછળના ખ્યાલનું નામ આપો.
Show the answer
(1) Data hiding: private બહારની પહોંચ રોકે છે. (2) Encapsulation: data અને એનાં functions એક એકમમાં બંધાયેલાં. (3) Abstraction: બહારનું જગત એક આવશ્યક ક્રિયા સાથે કામ કરે છે અને અંદરની વસ્તુઓ ક્યારેય જોતું નથી. જો તમે (1) અને (2) અદલાબદલ કર્યાં હોય, તો યાદ રાખો: બાંધવું એ encapsulation છે, તાળું મારવું એ hiding. તાળા વગર પણ બંધાયેલી પેટી હોઈ શકે છે.
Watch out
Marks ગુમાવનારું: એમને સમાનાર્થી ગણવાં
"Encapsulation એટલે data છુપાવવો" લખવાથી બહુ બહુ તો અડધા marks મળે. ચોકસાઈથી: encapsulation એ બાંધવું છે; data hiding એ encapsulation વત્તા private/protected દ્વારા મળતો ફાયદો છે.
બીજો ફાંદો: abstraction એ "data છુપાવવો" નથી, એ સ્વચ્છ interface દેખાડીને જટિલતા છુપાવવી છે. Data hiding સ્થિતિ નું રક્ષણ કરે છે; abstraction વપરાશ ને સરળ કરે છે. તમારા જવાબોમાં આ બે ક્રિયાપદ જુદાં રાખો: રક્ષણ સામે સરળીકરણ.
Formula
પરીક્ષાના જવાબની રીત
5 marks માટે: દરેક ખ્યાલ એક લીટીમાં વ્યાખ્યાયિત કરો (ઉપરનું કોષ્ટક વાપરો), દરેકનું એક ઉદાહરણ આપો (encapsulation માટે કેપ્સ્યુલ દવા, data hiding માટે private balance, abstraction માટે ATM નાં બટન), પછી આધારના વાક્યથી પૂરું કરો: encapsulation પેટી બનાવે છે, data hiding એને તાળું મારે છે, abstraction ઢાંકણા પર લેબલ લગાવે છે. વ્યાખ્યાઓ વત્તા ઉદાહરણો વત્તા સંબંધ = પૂરા marks.
Summary
Key takeaways
- Encapsulation: data વત્તા functions એક જ એકમમાં વીંટાયેલાં, એટલે કે class.
- Data hiding: private/protected દ્વારા અંદરની વસ્તુઓ બહારથી અપ્રાપ્ય બનાવવી.
- Abstraction: ફક્ત આવશ્યક ક્રિયાઓ ઉઘાડી; જટિલતા અંદર જ રહે છે.
- આધાર: પેટી, પેટી પરનું તાળું, ઢાંકણા પરનું લેબલ.
- Data hiding સ્થિતિનું રક્ષણ કરે છે; abstraction વપરાશ સરળ કરે છે: જુદાં ક્રિયાપદ, જુદા marks.
- Memory hook: પેટી, તાળું, લેબલ.