1. కంపెనీ చరిత్ర

పెద్ద సిస్టమ్‌ల సంక్లిష్టతతో పోరాడటానికి OOP ఎలా సహాయపడుతుందో వివరించే కథను నేను మీకు చెప్పాలనుకుంటున్నాను . మీరు OOP యొక్క ప్రయోజనాన్ని అర్థం చేసుకోవడానికి ఇది అవసరం .

ఒకప్పుడు నక్షత్రమండలాల మధ్య షిప్పింగ్ సేవలు అందించే చిన్న కంపెనీ...

దీనిని గెలాక్సీ రష్ అని పిలుద్దాం. ఇది 5 మందిని నియమించింది. ఒకరు ఫైనాన్స్‌లో పనిచేశారు, రెండవది గిడ్డంగిలో పనిచేశారు, మూడవది డెలివరీలు చేసింది, నాల్గవది ప్రకటనలను నిర్వహించింది మరియు ఐదవది మొత్తం సంస్థను నిర్వహించింది.

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

అంతే సమస్యలు మొదలయ్యాయి. అక్కడ ఎక్కువ మంది ఉన్నారు , మరియు వారు ఒకరి మార్గంలో మరొకరు రావడం ప్రారంభించారు.

విక్రయదారుడు కొత్త ప్రకటనల ప్రచారం కోసం బ్యాంక్ ఖాతాను ఖర్చు చేస్తాడు, కాబట్టి అత్యవసరంగా రవాణా చేయవలసిన ఉత్పత్తులను కొనుగోలు చేయడానికి డబ్బు లేదు.

వేర్‌హౌస్‌లో 10 సరికొత్త హైపర్ డ్రైవ్‌లు ఉన్నాయి, అవి నెలకు ఒకసారి క్లయింట్‌కు పంపబడతాయి. ఒక కొరియర్ వెళ్లింది మరియు వేరొక క్లయింట్ కోసం హైపర్ డ్రైవ్‌ను తీసుకువెళ్లింది, దీని వలన 10 హైపర్ డ్రైవ్‌ల కోసం రెగ్యులర్ ఆర్డర్ ఒక నెల ఆలస్యం అవుతుంది. మొదటి కొరియర్ రెండవ కొరియర్ ద్వారా నింపబడిన ఇతర ఆర్డర్ గురించి తెలియదు.

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

పరిస్థితిని విశ్లేషిస్తే, స్పేస్‌షిప్, నగదు మరియు ఉత్పత్తులు వంటి ముఖ్యమైన వనరులు సరైన రీతిలో ఉపయోగించబడటం లేదని బాస్ గ్రహించారు. బదులుగా, వారు "మీరు తాత్కాలికంగా ఆపివేయండి, మీరు కోల్పోతారు" అనే నియమానికి లోబడి ఉంటారు. ఏ ఉద్యోగి అయినా వారి పనికి ప్రతి ఒక్కరికి అవసరమైన వనరును తీసుకోవచ్చు, తద్వారా ఇతర ఉద్యోగులు మరియు మొత్తం కంపెనీకి ప్రమాదం ఏర్పడుతుంది.

ఏదో ఒకటి చేయాలి, కాబట్టి బాస్ ఏకశిలా సంస్థను కొన్ని విభాగాలుగా విభజించాలని నిర్ణయించుకున్నాడు. అతను షిప్పింగ్ డిపార్ట్‌మెంట్, మార్కెటింగ్ డిపార్ట్‌మెంట్, ప్రొక్యూర్‌మెంట్ డిపార్ట్‌మెంట్, ఫైనాన్స్ డిపార్ట్‌మెంట్ మరియు ఇన్వెంటరీ విభాగాన్ని సృష్టించాడు. ఇకపై ఎవరూ కేవలం స్పేస్ షిప్ తీసుకోలేరు. షిప్పింగ్ విభాగం అధిపతి డెలివరీల గురించి మొత్తం సమాచారాన్ని అందుకున్నారు మరియు అత్యంత లాభదాయకమైన ఆర్డర్‌తో కొరియర్‌కు ఓడను జారీ చేశారు. అదనంగా, గిడ్డంగి కొరియర్‌లను వారు కోరుకున్న వస్తువులను తీసుకోవడానికి అనుమతించలేదు. బదులుగా, గిడ్డంగి నుండి ఉత్పత్తులను ఎంచుకోవడం నియంత్రిత ప్రక్రియగా మారింది. త్వరలో కొనుగోలు జరుగుతుందని తెలిస్తే ఆర్థిక శాఖ మార్కెటింగ్ ప్రచారానికి నిధులను విడుదల చేయదు. ప్రతి విభాగానికి ఒక ప్రజా ముఖం ఉంది - డిపార్ట్‌మెంట్ హెడ్.ప్రతి విభాగం యొక్క అంతర్గత నిర్మాణం దాని స్వంత వ్యాపారం. ఒక కొరియర్ ఉత్పత్తులను పొందాలనుకుంటే, ఆమె గిడ్డంగికి కాకుండా వేర్‌హౌస్ మేనేజర్‌కి వెళ్లింది. కొత్త ఆర్డర్ వచ్చినట్లయితే, అది షిప్పింగ్ డిపార్ట్‌మెంట్ హెడ్ ( public-facing representative) ద్వారా స్వీకరించబడింది మరియు కొరియర్ ( someone not authorized to interact with the other departments) ద్వారా కాదు.

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

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

సమస్య ఏమిటంటే, ఏ ఉద్యోగి అయినా ఏదైనా వనరుతో పని చేయవచ్చు మరియు పర్యవేక్షణ లేదా నియంత్రణలు లేకుండా మరే ఇతర ఉద్యోగికి ఆదేశాలను ఇవ్వవచ్చు. మేము చిన్న పరిమితిని విధించాము, కానీ మరింత క్రమాన్ని సాధించాము. మరియు మేము కూడా ప్రతిదీ బాగా నియంత్రించగలిగాము.

ఇది దాని స్వచ్ఛమైన రూపంలో విభజించు మరియు జయించడం.


2. ప్రోగ్రామ్‌లు ఎలా సృష్టించబడతాయి

OOP యొక్క మరొక ప్రయోజనాన్ని వెల్లడించే మరో ముఖ్యమైన అంశాన్ని నేను టచ్ చేయాలనుకుంటున్నాను . కార్యక్రమాలు భవనాల కంటే జంతువుల లాంటివి అని మీరు చూస్తున్నారా? అవి నిర్మించబడలేదు. అవి పెరిగాయి. అభివృద్ధి అనేది స్థిరమైన మార్పు. నిర్మాణంలో, మీరు మంచి ప్రణాళికను కలిగి ఉండవచ్చు మరియు దానిని ఖచ్చితత్వంతో అనుసరించవచ్చు. సాఫ్ట్‌వేర్ డెవలప్‌మెంట్ విషయంలో ఇది కాదు.

చాలా తరచుగా ప్రోగ్రామింగ్‌లో, మీరు మొదట ఉద్దేశించిన విధంగా ఏదైనా చేయలేరు మరియు చాలా తిరిగి పని చేయాలి. కస్టమర్ అవసరాలు మరింత తరచుగా మారతాయి.

అయితే కస్టమర్ చాలా ఖచ్చితమైన వివరణను అందించినట్లయితే? అది విషయాలు మరింత దిగజారుతుంది. కాలక్రమేణా ఉత్పత్తితో ఏమి జరుగుతుందో పరిశీలించండి.

ఉత్పత్తి యొక్క విజయం కస్టమర్‌ను కొత్త వెర్షన్‌ను విడుదల చేయాలనుకునేలా చేస్తుంది, ఆపై మరొకటి మరియు మరొకటి. మరియు, వాస్తవానికి, మీరు చేయాల్సిందల్లా ఇప్పటికే ఉన్న ఉత్పత్తికి "చిన్న మార్పులు" జోడించడం. కాబట్టి మీరు ఉత్పత్తి అభివృద్ధి అనేది స్థిరమైన మార్పుల శ్రేణిని చూడవచ్చు. సమయ ప్రమాణం మాత్రమే భిన్నంగా ఉంటుంది. కొత్త వెర్షన్‌ను వారానికి ఒకసారి, నెలకు ఒకసారి లేదా ఆరు నెలలకు ఒకసారి విడుదల చేయవచ్చు.

మరియు వీటన్నింటి నుండి మనం ఏ తీర్మానాన్ని తీసుకోవచ్చు? ఉత్పత్తి యొక్క అంతర్గత నిర్మాణాన్ని కనీస రీవర్క్‌తో ముఖ్యమైన (మరియు చిన్న) మార్పులను అనుమతించే విధంగా నిర్వహించాలి.

వస్తువు సమన్వయం

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

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

వదులుగా కలపడం సూత్రం

"లూజ్ కప్లింగ్ సూత్రం" ఉంది. ప్రోగ్రామ్ అనేక భాగాలుగా విభజించబడింది, అవి తరచుగా పొరలుగా ఉంటాయి. ఈ పొరలు/భాగాల తర్కం వాటి అంతర్గత నిర్మాణంతో కఠినంగా జతచేయబడుతుంది మరియు ఇతర పొరలు/భాగాలకు చాలా వదులుగా జతచేయబడుతుంది. పొరల మధ్య పరస్పర చర్యలు సాధారణంగా చాలా నియంత్రించబడతాయి. ఒక పొర రెండవ పొరను సూచించవచ్చు మరియు దాని తరగతుల యొక్క చిన్న ఉపసమితిని మాత్రమే ఉపయోగించవచ్చు. ఇది "కంపెనీని విభాగాలుగా విభజించడం" అనే సూత్రం మనం ఇంతకు ముందు చూసాము, కానీ పెద్ద స్థాయిలో.

ఫలితం ఏమిటంటే, మేము ఒక విభాగాన్ని దాని ప్రభావాన్ని పెంచడానికి అవసరమైన విధంగా పునర్వ్యవస్థీకరించవచ్చు మరియు మేము డిపార్ట్‌మెంట్ కోసం ఇంకా ఎక్కువ మంది వ్యక్తులను నియమించుకోవచ్చు మరియు మా ఇతర విభాగాలతో పరస్పర చర్య యొక్క ప్రోటోకాల్‌ను మార్చనంత కాలం, చేసిన అన్ని మార్పులు స్థానికంగా ఉండండి. ఎవరూ తిరిగి ఏమీ నేర్చుకోవాల్సిన అవసరం లేదు. మీరు మొత్తం వ్యవస్థను మళ్లీ పని చేయవలసిన అవసరం లేదు. ఇంటర్‌డిపార్ట్‌మెంటల్ ఇంటరాక్షన్ కోసం మెకానిజమ్‌లను బాగా ఎంచుకుంటే ప్రతి విభాగం ఈ రకమైన అంతర్గత ఆప్టిమైజేషన్‌ను చేయగలదు.

బాగా ఎంచుకున్నారు. కానీ వారు బాగా ఎంపిక చేయకపోతే? అప్పుడు మార్పు కోసం సామర్థ్యం త్వరగా అయిపోతుంది మరియు మీరు మొత్తం సిస్టమ్‌ను మళ్లీ చేయవలసి ఉంటుంది. ఇది ఎప్పటికప్పుడు చేయాలి. మీరు భవిష్యత్తును అంచనా వేయలేరు, కానీ మీరు రెడోల సంఖ్యను కనిష్టంగా ఉంచవచ్చు.

సంగ్రహణ సూత్రం

విభాగాలు ఎలా నిర్మాణాత్మకంగా ఉన్నాయి మరియు అవి ఎలా సంకర్షణ చెందుతాయి అనేదాన్ని ఎంచుకోవడం అనేది " నైరూప్య సూత్రం ". ప్రోగ్రామింగ్‌లో, ప్రోగ్రామ్‌ను భాగస్వామ్య భాగాలుగా విభజించడానికి మరియు ఆ భాగాలు ఎలా సంకర్షణ చెందాలో ఉత్తమ మార్గాన్ని నిర్ణయించడానికి ఇది ఉపయోగించబడుతుంది. మేము ప్రోగ్రామ్‌ను వ్యక్తిగత తరగతులుగా విభజించే వరకు, ఫలిత భాగాలను భాగాలుగా విభజించడం ద్వారా సూత్రాన్ని మళ్లీ వర్తింపజేయవచ్చు.

ఈ భాగాల అంతర్గత నిర్మాణాన్ని దాచడం మరియు ఇతర భాగాలతో పరస్పర చర్యలను ఖచ్చితంగా పరిమితం చేయడం ఎన్‌క్యాప్సులేషన్ . ఎన్‌క్యాప్సులేషన్ మరియు సంగ్రహణ OOP యొక్క మూలస్తంభాలు . మంచి కార్యక్రమం ఈ రెండు సూత్రాలను అనుసరించాలి. భవిష్యత్తులో, మేము మిగిలిన సూత్రాలను పరిశీలిస్తాము మరియు అవి అందించే ప్రయోజనాలను అన్వేషిస్తాము.