"హలో, అమిగో! నేను నేటి ఉపన్యాసాన్ని ఎన్‌క్యాప్సులేషన్‌కు అంకితం చేయాలనుకుంటున్నాను . అది ఏమిటో మీకు ఇప్పటికే సాధారణ ఆలోచన ఉంది."

ఎన్‌క్యాప్సులేషన్ - 1

కాబట్టి ఎన్‌క్యాప్సులేషన్ యొక్క ప్రయోజనాలు ఏమిటి? చాలా ఉన్నాయి, కానీ నా దృష్టిలో చాలా ముఖ్యమైనవి నేను నాలుగు ఎత్తి చూపుతాను:

1) చెల్లుబాటు అయ్యే అంతర్గత స్థితి.

ప్రోగ్రామ్‌లు తరచుగా ఒకే వస్తువుతో పరస్పర చర్య చేసే అనేక తరగతులను కలిగి ఉంటాయి. ఆబ్జెక్ట్ యొక్క అంతర్గత డేటాతో ఏకకాలంలో పరస్పర చర్య చేయడం ద్వారా, వారు ఆబ్జెక్ట్ యొక్క డేటా సమగ్రతను ఉల్లంఘించవచ్చు, దీని వలన వస్తువు సరిగ్గా పనిచేయడం ఆగిపోతుంది.

కాబట్టి ఆబ్జెక్ట్ తప్పనిసరిగా దాని అంతర్గత డేటాకు ఏవైనా మార్పులను ట్రాక్ చేయాలి లేదా ఇంకా మెరుగ్గా ఉండాలి - ఆ మార్పులను చేయవలసి ఉంటుంది.

కొన్ని క్లాస్ వేరియబుల్ ఇతర తరగతుల ద్వారా మార్చబడకూడదనుకుంటే, మేము దానిని ప్రైవేట్‌గా ప్రకటిస్తాము , అంటే ఆ తరగతి పద్ధతులు మాత్రమే దాన్ని యాక్సెస్ చేయగలవు. వేరియబుల్స్ ఇతర తరగతులకు చదవడానికి మాత్రమే కావాలంటే, మేము ఈ వేరియబుల్స్‌కు పబ్లిక్ గెటర్‌ని జోడిస్తాము.

ఉదాహరణకు, మా సేకరణలో ఎన్ని అంశాలు ఉన్నాయో ప్రతి ఒక్కరూ తెలుసుకోవాలని మేము కోరుకోవచ్చు, కానీ మా అనుమతి లేకుండా ఎవరూ దానిని మార్చలేరు. ఈ సందర్భంలో, మేము వేరియబుల్ ప్రైవేట్ పూర్ణ గణన మరియు పబ్లిక్ getCount() పద్ధతిని ప్రకటిస్తాము .

ఇతర తరగతులు మా తరగతి యొక్క అంతర్గత డేటాను నేరుగా యాక్సెస్ చేయలేవని సరైన ఎన్‌క్యాప్సులేషన్ హామీ ఇస్తుంది మరియు తత్ఫలితంగా, మేము వారి చర్యలను నియంత్రించలేకుండా దానిని మార్చలేము. మార్చబడే వేరియబుల్స్‌ని కలిగి ఉన్న క్లాస్‌లోని పద్ధతులను వారు తప్పనిసరిగా కాల్ చేయాలి.

ఇతర ప్రోగ్రామర్లు మీకు (లేదా మీ తరగతికి) సురక్షితంగా ఉండే విధంగా కాకుండా వారికి అత్యంత అనుకూలమైన రీతిలో మీ తరగతులను ఎల్లప్పుడూ ఉపయోగిస్తారని భావించడం ఉత్తమం. ఇది బగ్‌ల మూలం మరియు వాటిని నివారించడానికి ఒక మార్గం.

2) పారామీటర్ తనిఖీ.

కొన్నిసార్లు మీరు మీ తరగతి పద్ధతుల్లోకి పంపబడిన పారామితులను తనిఖీ చేయాలి. ఉదాహరణకు, మనకు "వ్యక్తి"ని సూచించే తరగతి ఉందని అనుకుందాం మరియు మీరు దాని పుట్టిన తేదీని పేర్కొనవచ్చు. పాస్ చేసిన ఏదైనా డేటా ప్రోగ్రామ్ యొక్క లాజిక్ మరియు క్లాస్ లాజిక్‌కు అనుగుణంగా ఉందని మేము ధృవీకరించాలి. ఉదాహరణకు, 13వ నెల లేదు, ఫిబ్రవరి 30, మొదలైనవి లేవు.

"ఎవరైనా ఫిబ్రవరి 30 పుట్టిన తేదీని ఎందుకు సూచిస్తారు?"

"సరే, అన్నింటిలో మొదటిది, ఇది డేటా ఎంట్రీ లోపం యొక్క ఫలితం కావచ్చు."

రెండవది, ప్రోగ్రామ్ క్లాక్‌వర్క్ లాగా పని చేసే ముందు, అది చాలా బగ్‌లను కలిగి ఉండవచ్చు. ఉదాహరణకు, ఇలాంటివి జరగవచ్చు.

ఒక ప్రోగ్రామర్ రేపు మరుసటి రోజు ఎవరి పుట్టినరోజును నిర్ణయించాలో కోడ్ వ్రాస్తాడు. ఈ రోజు మార్చి 3 అనుకుందాం. ప్రోగ్రామ్ ప్రస్తుత తేదీకి 2ని జోడిస్తుంది మరియు మార్చి 5న పుట్టిన ప్రతి ఒక్కరినీ కనుగొంటుంది. ఇప్పటివరకు, చాలా బాగుంది.

కానీ మార్చి 30 వచ్చినప్పుడు, ప్రోగ్రామ్ ఎవరినీ కనుగొనలేదు, ఎందుకంటే మార్చి 32 లేదు. పద్ధతులు పారామీటర్ చెకింగ్ చేసినప్పుడు ప్రోగ్రామ్‌లు చాలా తక్కువ బగ్గీగా ఉంటాయి."

"మేము అర్రేలిస్ట్‌ను అధ్యయనం చేసినప్పుడు నేను దాని కోడ్‌ని చూసాను మరియు ఇండెక్స్ పరామితి సున్నా కంటే ఎక్కువగా లేదా సమానంగా ఉందని మరియు శ్రేణి పొడవు కంటే తక్కువగా ఉందని నిర్ధారించడానికి గెట్ మరియు సెట్ మెథడ్స్‌లో తనిఖీలు ఉన్నాయని నాకు గుర్తుంది. కోడ్ త్రో చేస్తుంది శ్రేణిలో సూచికకు సంబంధించిన మూలకం లేకుంటే మినహాయింపు.

"అవును, అది క్లాసిక్ ఇన్‌పుట్ చెకింగ్. "

3) తరగతుల లోపల కోడ్‌ని మార్చేటప్పుడు తక్కువ బగ్‌లు.

మేము భారీ ప్రాజెక్ట్‌లో భాగంగా నిజంగా ఉపయోగకరమైన తరగతిని వ్రాసాము. ప్రతి ఒక్కరూ దీన్ని ఎంతగా ఇష్టపడతారు, ఇతర ప్రోగ్రామర్లు తమ స్వంత కోడ్‌లో వందల ప్రదేశాలలో దీన్ని ఉపయోగించడం ప్రారంభించారు.

తరగతి చాలా ఉపయోగకరంగా ఉందని నిరూపించబడింది, మీరు దానిని మెరుగుపరచాలని నిర్ణయించుకున్నారు. కానీ మీరు తరగతిలోని ఏదైనా పద్ధతులను వదిలించుకుంటే, డజన్ల కొద్దీ ఇతర ప్రోగ్రామర్ల కోడ్ ఇకపై కంపైల్ చేయబడదు. వారు తమ కోడ్‌ను త్వరగా తిరిగి వ్రాయవలసి ఉంటుంది. మరియు మరింత తిరిగి వ్రాయడం జరుగుతుంది, బగ్‌లకు ఎక్కువ అవకాశాలు ఉన్నాయి. మీరు క్రమం తప్పకుండా నిర్మాణాన్ని విచ్ఛిన్నం చేస్తే, మీరు అసహ్యించుకుంటారు.

కానీ మేము ప్రైవేట్‌గా గుర్తించబడిన పద్ధతులను మార్చినట్లయితే, ఈ పద్ధతులు ఎక్కడా ఎవరి కోడ్ ద్వారా పిలవబడవని మాకు తెలుసు. మేము వాటిని తిరిగి వ్రాయవచ్చు మరియు పారామితుల సంఖ్య మరియు రకాన్ని మార్చవచ్చు మరియు డిపెండెంట్ కోడ్ ఇప్పటికీ పని చేస్తుంది. లేదా కనీసం అది ఇప్పటికీ కంపైల్ చేస్తుంది.

4) ఇతర వస్తువులు మన వస్తువుతో ఎలా సంకర్షణ చెందుతాయో మేము నిర్వచించాము.

మన వస్తువుపై ఎలాంటి చర్యలు తీసుకోవచ్చో మనం పరిమితం చేయవచ్చు. ఉదాహరణకు, ప్రాజెక్ట్‌లో ఏకకాలంలో అనేక చోట్ల సృష్టించబడినప్పటికీ, తరగతికి సంబంధించిన ఒక ఉదాహరణ మాత్రమే సృష్టించబడాలని మేము కోరుకోవచ్చు. మరియు మేము ఎన్‌క్యాప్సులేషన్ ఉపయోగించి దీనిని సాధించవచ్చు.

ఎన్‌క్యాప్సులేషన్ - 2

ఎన్‌క్యాప్సులేషన్ అదనపు ప్రయోజనాలుగా మారే అదనపు పరిమితులను విధించడానికి అనుమతిస్తుంది . ఉదాహరణకు, స్ట్రింగ్ క్లాస్ ఒక మార్పులేని వస్తువుగా అమలు చేయబడుతుంది. స్ట్రింగ్ క్లాస్ యొక్క దృష్టాంతాలు దాని సృష్టి మరియు దాని విధ్వంసం మధ్య మార్చబడవు. స్ట్రింగ్ క్లాస్ యొక్క అన్ని పద్ధతులు (తొలగించు, సబ్‌స్ట్రింగ్, ...) కొత్త స్ట్రింగ్‌ను తిరిగి ఇవ్వవు మరియు అవి పిలిచే వస్తువును ఏ విధంగానూ మార్చవు.

"పవిత్రమైన ఆవు. కాబట్టి అది ఎలా ఉంటుంది."

"ఎన్‌క్యాప్సులేషన్ చమత్కారంగా ఉంది."

"నేను అంగీకరిస్తాను."