Access Specifiers (Contd.) (lecture 22)-18dWcNZ7mR0 20.7 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
 ప్రోగ్రామింగ్ ఇన్ C ++ మాడ్యూల్ 2 వ భాగం కు స్వాగతం.
 మేము ఈ మాడ్యూల్‌లో వేర్వేరు యాక్సెస్ స్పెసిఫైయర్‌లను చర్చించాము, అందువల్ల తరగతి సభ్యుడి దృశ్యమానత ఎంపికలు.
 పబ్లిక్ మరియు ప్రైవేట్ యాక్సెస్‌లు ఒక తరగతిలోని ఏ భాగాన్ని ఎవరు యాక్సెస్ చేయవచ్చో నియంత్రించడానికి ఉపయోగపడే స్పెసిఫైయర్‌లు అని మేము తెలుసుకున్నాము.
 పబ్లిక్ డిస్క్రిప్టర్స్ అంటే గ్లోబల్ ఫంక్షన్ లేదా మరొక తరగతి అయిన ఎవరైనా బహిరంగంగా పేర్కొన్న సభ్యుడిని యాక్సెస్ చేయవచ్చు, కాని కొంతమంది సభ్యుల డేటా (డేటా) సభ్యుడు లేదా పద్ధతి ప్రైవేట్ అయితే పేర్కొన్నట్లుగా, డేటా సభ్యుడు లేదా పద్ధతిని మాత్రమే యాక్సెస్ చేయవచ్చు లోపల నుండి.
 ఒక తరగతి యొక్క నిర్వచనం ఒకే తరగతి యొక్క ఇతర పద్ధతుల కంటే చాలా ఖచ్చితమైనది, కానీ దానిని మరెవరూ యాక్సెస్ చేయలేరు.
 దీని ఆధారంగా, సమాచారాన్ని దాచడం యొక్క సూత్రాన్ని మేము వివరించాము, అక్కడ మేము ఎల్లప్పుడూ గుణాలు లేదా డేటా సభ్యులను ప్రైవేట్‌గా కలిగి ఉండాలని మరియు వస్తువులో బహిరంగంగా ప్రవర్తించడానికి అనుమతించే పద్ధతులు వారు రాష్ట్ర మూలాన్ని దాచిపెడుతున్నారని మేము నిర్ణయించాము.
 మీరు డేటా సభ్యులను బహిరంగంగా ఉంచితే, మీరు అమలును హైలైట్ చేస్తే, ఒకరు అమలు చేసే ఇబ్బందులు మరియు నష్టాలు ఏమిటి, బదులుగా డేటా (డేటా) సభ్యులు ప్రైవేట్‌గా ఉంటే మరియు పద్ధతులు మాత్రమే స్టాక్ (స్టాక్ ) టైప్ లేదా స్టాక్ (స్టాక్) క్లాస్ (క్లాస్), పుష్ (పుష్), పాప్ (పాప్), టాప్ (టాప్) మరియు ఖాళీ పబ్లిక్, కాబట్టి ఒక అప్లికేషన్ ప్రాథమికంగా ఈ విషయం స్టాక్‌ను ఎంత ఖచ్చితంగా సంబంధం లేకుండా ఉపయోగించగలదు స్టాక్ (స్టాక్) ను దెబ్బతీసే ప్రమాదం లేకుండా రైట్ ప్రాసెస్‌లో స్టాక్ అమలు చేయబడుతుంది.
 అప్లికేషన్.
 చివరగా, శీర్షిక మరియు అమలు ఫైళ్ళ సందర్భంలో సమాచారాన్ని దాచడానికి కోడ్-ఆధారిత ఆబ్జెక్ట్ (కోడ్) ఆధారిత సి ++ కోడ్ సాధారణంగా ఎలా నిర్వహించాలో మేము చూపించాము.
 మేము తరువాత ఒక ఇడియమ్స్ గురించి మాట్లాడుతాము, దీనిని సాధారణంగా గేట్-సెట్ ఇడియమ్స్ అని పిలుస్తారు, ఇది తరగతి లేదా వస్తువు యొక్క వేర్వేరు సభ్యులలో ఉపయోగించబడుతుంది. ధాన్యం యాక్సెస్ నియంత్రణ కోసం ఉపయోగించబడుతుంది.
 మేము అన్ని లక్షణాలను ప్రైవేట్‌గా ఉంచుతామని మాకు తెలుసు మరియు మేము పద్ధతులను బహిరంగంగా ఉంచుతాము మరియు ఇది డేటాకు ప్రాప్యతను పూర్తిగా పరిమితం చేస్తుంది, ఇది మీకు ఉండవచ్చు.
 ఇప్పుడు సాధారణంగా మేము ఈ ప్రాప్యతను పరిష్కరించాలనుకుంటున్నాము మరియు మేము ఎంచుకున్న పబ్లిక్ మెంబర్ ఫంక్షన్లను అందించాలనుకుంటున్నాము లేదా ఫంక్షన్ (ఫంక్షన్) చదవాలనుకుంటున్నాము లేదా డేటాను పొందాలనుకుంటున్నాము లేదా ఫంక్షన్ (ఫంక్షన్) రాయాలి లేదా డేటా (డేటా) పై పద్ధతులను సెట్ చేయాలనుకుంటున్నాము.
 కాబట్టి, నేను మొత్తం ఆలోచనను ఒక ఉదాహరణ పరంగా వివరించాను, ఇక్కడ నేను ఉన్న తరగతి ఉంది. క్లాస్ మైక్లాస్‌గా చెప్పండి, ఇది చాలా ముఖ్యమైనది కాదు.
 నలుగురు డేటా సభ్యులు ఉన్నారు మరియు నేను ఇక్కడ క్లాస్ డెఫినిషన్ ప్రారంభం నుండి ఎటువంటి యాక్సెస్ స్పెసిఫైయర్‌ను ఉపయోగించలేదు, అంటే అప్రమేయంగా ఈ డేటా సభ్యులు అక్కడ ప్రైవేట్‌గా ఉన్నారు మరియు ఈ డేటా (డేటా) సభ్యుల ఉద్దేశ్యం అంటే మొదట చదివిన డేటా సభ్యులు డేటా సభ్యుడు, నేను డేటా సభ్యుని కాబట్టి, ఇది ప్రైవేట్, కాబట్టి ఎవరైనా నేరుగా రావచ్చు మరియు దాని విలువ మారదు, కానీ దాని ఉపయోగం పరంగా దాని విలువను చదివి వ్రాయాలనుకుంటున్నాను.
 ఉదాహరణకు, ఇది సంక్లిష్ట సంఖ్య యొక్క పున components- భాగాలు, సంక్లిష్ట సంఖ్య యొక్క im భాగాలు వంటి సభ్యుడు, నేను సంక్లిష్ట సంఖ్యను చదువుతుంటే ఈ భాగం యొక్క విలువను చదివి సెట్ చేయాలి.
 నేను సంక్లిష్ట సంఖ్య యొక్క ప్రస్తుత విలువను వ్రాస్తున్నట్లయితే, నేను మళ్ళీ చదవాలి, im భాగం మరియు మొదలైనవి.
 పెద్ద సంఖ్యలో డేటా సభ్యులు చదవలేనివారు.
 అందువల్ల, నేను దీన్ని చేయగలిగే కొన్ని యంత్రాంగాన్ని అందించాలి మరియు దీన్ని చేయటానికి సరళమైన మార్గం జత గేట్-సెట్ ఫంక్షన్‌ను అందించడం.
 మీకు ఏమి లభిస్తుంది, ఫంక్షన్ సెట్ చేయండి? ఈ వేరియబుల్‌లోని రీడ్ రైట్‌లో గెట్ ఫంక్షన్ ఒక పేరు getReadWrite అని చెబుతుంది, ఇది ఈ డేటా సభ్యుడిని తీసుకొని తిరిగి ఇస్తుంది.
 ఈ పద్ధతి బహిరంగ ప్రదేశంలో ఉంచబడుతుంది, కాబట్టి ఏదైనా బాహ్య ఫంక్షన్ (ఫంక్షన్) లేదా మరొక తరగతి (తరగతి) లోని ఏ ఇతర సభ్యుడు ఫంక్షన్ getReadWrite ఫంక్షన్ (ఫంక్షన్) ను స్థానికంగా పిలుస్తారు, ఎందుకంటే ఇది బహిరంగ ప్రదేశంలో లభిస్తుంది.
 మరియు అది ప్రైవేట్ సభ్యుడిని యాక్సెస్ చేస్తుంది మరియు దాని విలువను తిరిగి ఇస్తుంది.
 కాబట్టి ఒక విధంగా మనం బయటి ప్రపంచానికి ఎంపిక చేసుకుంటున్నాము, దాని విలువపై నియంత్రణతో ఒకరు దీన్ని ప్రత్యేకంగా చేయవలసి వచ్చినప్పుడల్లా ఈ ప్రత్యేకత ద్వారా వెళ్ళాలి, దాన్ని సాధించడం మధ్య ఒక ప్రాథమిక వ్యత్యాసం ఏమిటి మరియు నేను అని చెప్పనివ్వండి విలువను v తీసుకునే సమితిని కలిగి ఉండండి మరియు వాస్తవానికి డేటా సభ్యులు చదివే శాస్త్రం.
 కాబట్టి ప్రాథమికంగా, నేను గెట్ మరియు సెట్ రెండింటినీ కలిగి ఉంటే, నేను ఈ వేరియబుల్, రీడ్‌రైట్‌ను చదవగలను.
 ఇప్పుడు మీరు దీన్ని ప్రైవేట్‌గా ఎందుకు చేయాలనుకుంటున్నారో ఇప్పుడు మీరు ఆశ్చర్యపోతున్నారు, ఆపై దాన్ని పొందగలిగే మరియు సెట్ చేయగలిగే ఒక జత పబ్లిక్ పద్ధతులు ఉన్నాయి, మేము దీన్ని పబ్లిక్‌గా చేయగలము మరియు ఎవరైనా దీన్ని మార్చగలరు.
 కానీ అవును, చదవడం మరియు వ్రాయడం విషయంలో ఇది ఒకటే, కాని పెద్ద తేడా ఉంది ఎందుకంటే నేను దానిని బహిరంగంగా ఉంచితే ఆ వస్తువు ఎప్పటికీ తెలియదు, అది జరుగుతున్నప్పుడు అది ప్రత్యేక డేటా అవుతుంది. సభ్యుడు చదువుతున్నాడా లేదా అది పూర్తయినప్పుడు చదవండి.
 కానీ అది ఒక ఫంక్షన్ ద్వారా జరిగితే అది చదివేటప్పుడు ఒక పద్ధతి ఉంటుంది కాబట్టి నేను ఇక్కడ కొన్ని లెక్కలు కూడా చేయగలను.
 వ్రాసేటప్పుడు ఈ విలువ రాయడానికి ముందు లేదా తరువాత నేను కొన్ని లెక్కలు కూడా చేయగలను.
 అందువల్ల, రీడ్ రైట్ యొక్క విలువ మార్చబడిందని లేదా రీడ్ రైట్ యొక్క విలువను ఎవరైనా చదివారని ఆ వస్తువు ఎల్లప్పుడూ తెలుసుకుంటుంది.
 కాబట్టి, ఈ డేటా సభ్యుడిని పబ్లిక్ యాక్సెస్‌గా ఉంచడం సరికాదు.
ఇ ప్పుడు, మనం చదవడానికి మాత్రమే చేయాలనుకుంటున్న తదుపరిదాన్ని చూస్తే ఇతర డేటా సభ్యులకు వస్తోంది.
 అందువల్ల, ఏదైనా మోడల్ యొక్క విభిన్న వాస్తవ-ప్రపంచ డేటా రకాల పరంగా, ఎన్కప్సులేషన్ పుట్టిన తేదీ లాగా మాత్రమే చదివే డేటా చాలా ఉందని మేము కనుగొంటాము.
 ఒక వ్యక్తి పుట్టిన తేదీ మారదు, కాబట్టి ఆ వ్యక్తి కోసం ఒక వస్తువును సృష్టించేటప్పుడు దానిని ఏదో ఒకదానికి అమర్చాలి మరియు ఆ తరువాత దానిని మార్చడం సాధ్యం కాకూడదు, దానిని నియంత్రించడానికి ఉత్తమ మార్గం ఒక ప్రైవేట్ యాక్సెస్‌తో సృష్టించబడుతుంది ఆపై దానిపై ఒక ఫంక్షన్‌ను మాత్రమే స్వీకరించడానికి అనుమతించండి.
 కాబట్టి, అది ఎవరైనా పుట్టిన తేదీని చదవడానికి మరియు ఆ వ్యక్తి వయస్సును లెక్కించడానికి లేదా ఉద్యోగి ఐడిని చదివి తనిఖీ చేయడానికి, విద్యార్థి యొక్క రోల్ నంబర్‌ను చదవడానికి మరియు విద్యార్థి గ్రేడ్‌ను కనుగొనటానికి అనుమతిస్తుంది.
 ఈ ఫంక్షన్లన్నీ ఆ డేటాను పొందడానికి మాకు అనుమతిస్తాయి, కానీ ఆ డేటాను మార్చలేవు.
 కాబట్టి, దీని అర్థం నేను అందుకున్న ఫంక్షన్‌ను అందించినట్లయితే మరియు ప్రతిస్పందించే డేటా డేటాను మాత్రమే చదివితే.
 మీరు దాన్ని పొందిన తర్వాత, మిగిలినవి చాలా సరళంగా ముందుకు సాగుతాయి.ఇది సాధ్యమయ్యే అన్ని కలయికలను పూర్తి చేస్తుంది. మీరు ఆ వేరియబుల్‌పై సెట్ పద్ధతిని కలిగి ఉంటే మాత్రమే నిజమైన వేరియబుల్ అవుతుంది, కానీ మార్గం లేదు, కాబట్టి ఆశ్చర్యపోకండి ఒక వేరియబుల్ మాత్రమే వ్రాయబడుతుంది. చాలా వేరియబుల్స్ మాత్రమే వ్రాయబడతాయి.
 చాలా సాధారణ ఉదాహరణ పాస్వర్డ్, ఎందుకంటే పాస్వర్డ్ చాలా సున్నితంగా ఉంటుంది, సాధారణంగా మీరు కోరుకున్న పాస్వర్డ్ను చదవడానికి ఏ వ్యవస్థను అనుమతించకూడదని, అనుమతించవలసి ఉంటుంది, పాస్వర్డ్ను మార్చడానికి ఒక విధానం ఉంది.
 కాబట్టి, పాస్‌వర్డ్ మీరు టైప్ చేసే విషయం. మీరు ఆ విలువలను ఎప్పుడూ చదవరు.
 మీరు కేవలం వ్రాయగలిగే ఏ పనిని మాత్రమే సెట్ చేయవచ్చు మరియు చేయలేరు.
 అదేవిధంగా, చివరి సమూహంలో మీరు స్టాక్ లేదా డేటా శ్రేణి యొక్క స్టాక్ వంటి అదృశ్య సభ్యులను కలిగి ఉండవచ్చు. స్టాక్ వాటన్నింటినీ ఎలా నిర్వహిస్తుందో మీరు తెలుసుకోవద్దు. మీరు పుష్ (పాప్), పాప్, టాప్ మరియు ఖాళీ ఏమిటో తెలుసుకోవాలనుకుంటున్నారు మీరు పని చేయాలి.
 కాబట్టి, శీర్షికలు లేదా డేటా (డేటా) యొక్క విలువను చదవడం లేదా శీర్షాలు లేదా డేటా (డేటా) యొక్క విలువను మార్చడం / సెట్ చేయడం వంటి పద్ధతులు ఉండకూడదు మరియు అందువల్ల దానిపై సెట్-గెట్ పద్ధతులు ఉండకూడదు.
 కాబట్టి, ఈ సెట్-గేట్ ఇడియమ్‌లతో, డేటా సభ్యుల ప్రాప్యతపై మేము చాలా మంచి ధాన్యం నియంత్రణను సృష్టించగలము మరియు విభిన్న పద్ధతులను సమానంగా యాక్సెస్ చేయవచ్చు, అయితే, గేట్-సెట్ అనేది ఒక నిర్దిష్ట పదబంధం మరింత పరిమిత పనులు చేయడానికి మిమ్మల్ని అనుమతించే డేటా సభ్యులు.
 కలిసి మేము ఈ మాడ్యూల్ను మూసివేస్తాము.
 ఈ మాడ్యూల్‌లో, తరగతి సభ్యులు, ప్రభుత్వ మరియు ప్రైవేట్ వ్యక్తుల దృశ్యమానతను నియంత్రించడంలో ప్రాప్యత స్పేసర్‌లు ఎలా సహాయపడతాయో మేము అర్థం చేసుకున్నాము.
 ఒక తరగతి అమలు గురించి సమాచారాన్ని దాచడానికి, ఇంటర్‌ఫేస్ ద్వారా ప్రవర్తనను బహిర్గతం చేయడానికి మేము చూసినట్లుగా వీటిని ఉపయోగించవచ్చు మరియు గేట్-సెట్ యొక్క పద్ధతులు నిర్దిష్ట ఇడియమ్‌లను కలిగి ఉన్నాయని మేము ప్రత్యేకంగా చూశాము C ++ నుండి గొప్ప ధాన్యం నియంత్రణను అందిస్తుంది.
 మీ రూపకల్పనలో మీరు అందించాలనుకుంటున్న డేటా సభ్యుల పరంగా ఇంటర్ఫేస్.