Modern C++ Design
ಮಾಡರ್ನ್ ಸಿ + + ಡಿಸೈನ್ಃ ಜೆನೆರಿಕ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಅಂಡ್ ಡಿಸೈನ್ ಪ್ಯಾಟರ್ನ್ಸ್ ಅಪ್ಲೈಡ್ ಎಂಬುದು ಆಂಡ್ರೇ ಅಲೆಕ್ಸಾಂಡ್ರೆಸ್ಕು ಬರೆದ ಪುಸ್ತಕವಾಗಿದ್ದು, 2001 ರಲ್ಲಿ ಅಡಿಸನ್-ವೆಸ್ಲೆ ಪ್ರಕಟಿಸಿದರು. ಇದನ್ನು ಸ್ಕಾಟ್ ಮೇಯರ್ಸ್ ಅವರು "ಅತ್ಯಂತ ಪ್ರಮುಖ ಸಿ + + ಪುಸ್ತಕಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ" ಎಂದು ಪರಿಗಣಿಸಿದ್ದಾರೆ. ಈ ಪುಸ್ತಕವು ಟೆಂಪ್ಲೇಟ್ ಮೆಟಾಪ್ರೋಗ್ರಾಮಿಂಗ್ ಎಂಬ ಸಿ + + ಪ್ರೋಗ್ರಾಮಿಂಗ್ ತಂತ್ರವನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು ಅನ್ವೇಷಿಸುತ್ತದೆ. ಅಲೆಕ್ಸಾಂಡ್ರೆಸ್ಕು ಈ ತಂತ್ರವನ್ನು ಕಂಡುಹಿಡಿಯದಿದ್ದರೂ, ಅವರು ಅದನ್ನು ಪ್ರೋಗ್ರಾಮರ್ಗಳಲ್ಲಿ ಜನಪ್ರಿಯಗೊಳಿಸಿದ್ದಾರೆ. ಅವರ ಪುಸ್ತಕವು ಸಿ + + ಪ್ರೋಗ್ರಾಮರ್ಗಳು ಎದುರಿಸಬಹುದಾದ ಪ್ರಾಯೋಗಿಕ ಸಮಸ್ಯೆಗಳಿಗೆ ಪರಿಹಾರಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಪುಸ್ತಕದ ಹಲವಾರು ಪದಗುಚ್ಛಗಳನ್ನು ಈಗ ಸಿ + + ಸಮುದಾಯದಲ್ಲಿ ಸಾಮಾನ್ಯ ಪದಗಳಾಗಿ ಬಳಸಲಾಗುತ್ತದೆಃ ಆಧುನಿಕ ಸಿ + + (ಸಿ/ಸಿ + + ಶೈಲಿಗೆ ವಿರುದ್ಧವಾಗಿ), ನೀತಿ-ಆಧಾರಿತ ವಿನ್ಯಾಸ ಮತ್ತು ಬೆರಳಚ್ಚು ಪಟ್ಟಿ. ಪುಸ್ತಕದಲ್ಲಿ ವಿವರಿಸಲಾದ ಎಲ್ಲಾ ಕೋಡ್ಗಳು ಅವರ ಲೋಕಿಯ ಗ್ರಂಥಾಲಯದಲ್ಲಿ ಉಚಿತವಾಗಿ ಲಭ್ಯವಿವೆ. ಈ ಪುಸ್ತಕವನ್ನು 2001 ರಿಂದ ಹಲವಾರು ಭಾಷೆಗಳಿಗೆ ಮರುಪ್ರಕಟಿಸಲಾಗಿದೆ ಮತ್ತು ಅನುವಾದಿಸಲಾಗಿದೆ. ನೀತಿ-ಆಧಾರಿತ ವಿನ್ಯಾಸ ನೀತಿ-ಆಧಾರಿತ ವಿನ್ಯಾಸ, ಇದನ್ನು ನೀತಿ-ಆಧಾರಿತ ವರ್ಗ ವಿನ್ಯಾಸ ಅಥವಾ ನೀತಿ-ಆಧಾರಿತ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಎಂದೂ ಕರೆಯುತ್ತಾರೆ, ಇದು ನೀತಿಗಳು ಎಂದು ಕರೆಯಲ್ಪಡುವ ಸಿ + + ನ ಭಾಷಾವೈಶಿಷ್ಟ್ಯವನ್ನು ಆಧರಿಸಿದ ವಿನ್ಯಾಸ ವಿಧಾನಕ್ಕಾಗಿ ಆಧುನಿಕ ಸಿ + + ವಿನ್ಯಾಸದಲ್ಲಿ ಬಳಸಲಾಗುವ ಪದವಾಗಿದೆ. ಇದನ್ನು ಕಾರ್ಯತಂತ್ರದ ಮಾದರಿಯ ಸಂಕಲನ-ಸಮಯದ ರೂಪಾಂತರವೆಂದು ವಿವರಿಸಲಾಗಿದೆ ಮತ್ತು ಇದು ಸಿ + + ಟೆಂಪ್ಲೇಟ್ ಮೆಟಾಪ್ರೋಗ್ರಾಮಿಂಗ್ನೊಂದಿಗೆ ಸಂಪರ್ಕವನ್ನು ಹೊಂದಿದೆ. ಇದನ್ನು ಮೊದಲ ಬಾರಿಗೆ ಸಿ + + ನಲ್ಲಿ ಆಂಡ್ರೇ ಅಲೆಕ್ಸಾಂಡ್ರೆಸ್ಕು ಅವರು ಮಾಡರ್ನ್ ಸಿ + + ಡಿಸೈನ್ನೊಂದಿಗೆ ಮತ್ತು ಸಿ/ಸಿ + + ಬಳಕೆದಾರರ ಜರ್ನಲ್ನಲ್ಲಿ ಜೆನೆರಿಕ್ <ಪ್ರೋಗ್ರಾಮಿಂಗ್> ಅಂಕಣದೊಂದಿಗೆ ಜನಪ್ರಿಯಗೊಳಿಸಿದರು, ಮತ್ತು ಇದು ಪ್ರಸ್ತುತ ಸಿ + + ಮತ್ತು ಡಿ ಯೊಂದಿಗೆ ನಿಕಟ ಸಂಬಂಧ ಹೊಂದಿದೆ ಏಕೆಂದರೆ ಇದಕ್ಕೆ ಟೆಂಪ್ಲೆಟ್ಗಳಿಗೆ ಹೆಚ್ಚು ದೃಢವಾದ ಬೆಂಬಲವನ್ನು ಹೊಂದಿರುವ ಕಂಪೈಲರ್ ಅಗತ್ಯವಿರುತ್ತದೆ, ಇದು ಸುಮಾರು 2003 ರ ಮೊದಲು ಸಾಮಾನ್ಯವಾಗಿರಲಿಲ್ಲ. ಪ್ಯಾರಾಮೀಟರ್ ಮಾಡಲಾದ ಜೆನೆರಿಕ್ ಕೋಡ್ ಅನ್ನು ಆಧರಿಸಿದ ಈ ವಿನ್ಯಾಸ ವಿಧಾನದ ಹಿಂದಿನ ಉದಾಹರಣೆಗಳಲ್ಲಿ ಎಂಎಲ್ ಭಾಷೆಗಳ ಪ್ಯಾರಾಮೆಟ್ರಿಕ್ ಮಾಡ್ಯೂಲ್ಗಳು (ಫಂಕ್ಟರ್ಗಳು) ಮತ್ತು ಮೆಮೊರಿ ನಿರ್ವಹಣಾ ನೀತಿಗಾಗಿ ಸಿ + + ಅಲೋಕೇಟರ್ಗಳು ಸೇರಿವೆ. ನೀತಿ-ಆಧಾರಿತ ವಿನ್ಯಾಸದಲ್ಲಿ ಕೇಂದ್ರ ನುಡಿಗಟ್ಟು ಒಂದು ವರ್ಗ ಟೆಂಪ್ಲೇಟ್ ಆಗಿದೆ (ಹೋಸ್ಟ್ ಕ್ಲಾಸ್ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ), ಇದು ಹಲವಾರು ರೀತಿಯ ನಿಯತಾಂಕಗಳನ್ನು ಇನ್ಪುಟ್ ಆಗಿ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ, ಇವುಗಳನ್ನು ಬಳಕೆದಾರರು ಆಯ್ಕೆ ಮಾಡಿದ ಪ್ರಕಾರಗಳೊಂದಿಗೆ (ಪಾಲಿಸಿ ಕ್ಲಾಸ್ಗಳು ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ) ತ್ವರಿತಗೊಳಿಸಲಾಗುತ್ತದೆ, ಪ್ರತಿಯೊಂದೂ ನಿರ್ದಿಷ್ಟ ಸೂಚ್ಯ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು (ಪಾಲಿಸಿ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ) ಅನುಷ್ಠಾನಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ತತ್ಕ್ಷಣದ ಹೋಸ್ಟ್ ವರ್ಗದ ನಡವಳಿಕೆಯ ಕೆಲವು ಆರ್ಥೋಗೋನಲ್ (ಅಥವಾ ಹೆಚ್ಚಾಗಿ ಆರ್ಥೋಗೋನಲ್) ಅಂಶವನ್ನು ಆವರಿಸುತ್ತದೆ. ಪ್ರತಿ ನೀತಿಗೆ ವಿಭಿನ್ನ, ಸಿದ್ಧಪಡಿಸಿದ ಅನುಷ್ಠಾನಗಳ ಗುಂಪಿನೊಂದಿಗೆ ಹೋಸ್ಟ್ ವರ್ಗವನ್ನು ಪೂರೈಸುವ ಮೂಲಕ, ಗ್ರಂಥಾಲಯ ಅಥವಾ ಮಾಡ್ಯೂಲ್ ವಿವಿಧ ನಡವಳಿಕೆಯ ಸಂಯೋಜನೆಗಳ ಘಾತೀಯ ಸಂಖ್ಯೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ, ಸಂಕಲನ ಸಮಯದಲ್ಲಿ ಪರಿಹರಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಹೋಸ್ಟ್ ವರ್ಗದ ಟೆಂಪ್ಲೇಟ್ನ ತ್ವರಿತಗತಿಯಲ್ಲಿ ವಿವಿಧ ಸರಬರಾಜು ಮಾಡಿದ ನೀತಿ ವರ್ಗಗಳನ್ನು ಬೆರೆಸುವ ಮತ್ತು ಹೊಂದಿಸುವ ಮೂಲಕ ಆಯ್ಕೆ ಮಾಡಬಹುದು. ಹೆಚ್ಚುವರಿಯಾಗಿ, ನಿರ್ದಿಷ್ಟ ನೀತಿಯ ಕಸ್ಟಮ್ ಅನುಷ್ಠಾನವನ್ನು ಬರೆಯುವ ಮೂಲಕ, ಗ್ರಂಥಾಲಯದ ಅಳವಡಿಕೆಯಿಂದ ಅನಿರೀಕ್ಷಿತ ನಡವಳಿಕೆಗಳ ಅಗತ್ಯವಿರುವ ಸಂದರ್ಭಗಳಲ್ಲಿ ನೀತಿ ಆಧಾರಿತ ಗ್ರಂಥಾಲಯವನ್ನು ಬಳಸಬಹುದು. ಪ್ರತಿ ನೀತಿಯ ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚು ಅನುಷ್ಠಾನವನ್ನು ಎಂದಿಗೂ ಬಳಸದ ಸಂದರ್ಭಗಳಲ್ಲಿಯೂ ಸಹ, ಒಂದು ವರ್ಗವನ್ನು ನೀತಿಗಳಾಗಿ ವಿಭಜಿಸುವುದು ವಿನ್ಯಾಸ ಪ್ರಕ್ರಿಯೆಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ, ಮಾಡ್ಯುಲಾರಿಟಿಯನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ ಮತ್ತು ಆರ್ಥೋಗೋನಲ್ ವಿನ್ಯಾಸ ನಿರ್ಧಾರಗಳನ್ನು ನಿಖರವಾಗಿ ಎಲ್ಲಿ ಮಾಡಲಾಗಿದೆ ಎಂಬುದನ್ನು ಹೈಲೈಟ್ ಮಾಡುತ್ತದೆ. ಪರಸ್ಪರ ಬದಲಾಯಿಸಬಹುದಾದ ಮಾಡ್ಯೂಲ್ಗಳಿಂದ ಸಾಫ್ಟ್ವೇರ್ ಘಟಕಗಳನ್ನು ಜೋಡಿಸುವುದು ಹೊಸ ಪರಿಕಲ್ಪನೆಯಿಂದ ದೂರವಿದ್ದರೂ, ನೀತಿ-ಆಧಾರಿತ ವಿನ್ಯಾಸವು ಆ ಪರಿಕಲ್ಪನೆಯನ್ನು ಪ್ರತ್ಯೇಕ ವರ್ಗದ ನಡವಳಿಕೆಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ (ತುಲನಾತ್ಮಕವಾಗಿ ಕಡಿಮೆ) ಮಟ್ಟದಲ್ಲಿ ಅನ್ವಯಿಸುವ ರೀತಿಯಲ್ಲಿ ನಾವೀನ್ಯತೆಯನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ. ಪಾಲಿಸಿ ವರ್ಗಗಳು ಕಾಲ್ಬ್ಯಾಕ್ಗಳಿಗೆ ಸ್ವಲ್ಪ ಹೋಲಿಕೆಯನ್ನು ಹೊಂದಿವೆ, ಆದರೆ ಅದರಲ್ಲಿ ಭಿನ್ನವಾಗಿರುತ್ತವೆ, ಒಂದೇ ಕಾರ್ಯವನ್ನು ಒಳಗೊಂಡಿರುವುದಕ್ಕಿಂತ ಹೆಚ್ಚಾಗಿ, ಪಾಲಿಸಿ ವರ್ಗವು ಸಾಮಾನ್ಯವಾಗಿ ಹಲವಾರು ಸಂಬಂಧಿತ ಕಾರ್ಯಗಳನ್ನು (ವಿಧಾನಗಳು) ಹೊಂದಿರುತ್ತದೆ, ಇದನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ರಾಜ್ಯದ ಅಸ್ಥಿರಗಳು ಅಥವಾ ನೆಸ್ಟೆಡ್ ಪ್ರಕಾರಗಳಂತಹ ಇತರ ಸೌಲಭ್ಯಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸಲಾಗುತ್ತದೆ. ನೀತಿ-ಆಧಾರಿತ ಆತಿಥೇಯ ವರ್ಗವನ್ನು ಒಂದು ರೀತಿಯ ಮೆಟಾಫಂಕ್ಷನ್ ಎಂದು ಪರಿಗಣಿಸಬಹುದು, ಇದು ಪ್ರಕಾರಗಳಿಂದ ಪ್ರತಿನಿಧಿಸುವ ನಡವಳಿಕೆಗಳ ಗುಂಪನ್ನು ಇನ್ಪುಟ್ ಆಗಿ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ ಮತ್ತು ಆ ನಡವಳಿಕೆಗಳನ್ನು ಒಟ್ಟುಗೂಡಿಸಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಫಲಿತಾಂಶವನ್ನು ಪ್ರತಿನಿಧಿಸುವ ಒಂದು ಪ್ರಕಾರವನ್ನು ಔಟ್ಪುಟ್ ಆಗಿ ಹಿಂದಿರುಗಿಸುತ್ತದೆ. (ಆದಾಗ್ಯೂ, ಎಂಪಿಎಲ್ ಮೆಟಾಫಂಕ್ಷನ್ಗಳಿಗಿಂತ ಭಿನ್ನವಾಗಿ, ಔಟ್ಪುಟ್ ಅನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ನೆಸ್ಟೆಡ್ ಔಟ್ಪುಟ್ ಪ್ರಕಾರಕ್ಕಿಂತ ಹೆಚ್ಚಾಗಿ ಇನ್ಸ್ಟಾಂಟಿಯೇಟೆಡ್ ಹೋಸ್ಟ್ ವರ್ಗವೇ ಪ್ರತಿನಿಧಿಸುತ್ತದೆ.) ಪಾಲಿಸಿ ನುಡಿಗಟ್ಟಿನ ಒಂದು ಪ್ರಮುಖ ಲಕ್ಷಣವೆಂದರೆ, ಸಾಮಾನ್ಯವಾಗಿ (ಇದು ಕಟ್ಟುನಿಟ್ಟಾಗಿ ಅಗತ್ಯವಿಲ್ಲದಿದ್ದರೂ), ಆತಿಥೇಯ ವರ್ಗವು (ಸಾರ್ವಜನಿಕ) ಬಹು ಆನುವಂಶಿಕತೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಅದರ ಪ್ರತಿಯೊಂದು ಪಾಲಿಸಿ ವರ್ಗಗಳಿಂದ (ತನ್ನನ್ನು ತಾನು ಮಕ್ಕಳ ವರ್ಗವನ್ನಾಗಿ ಮಾಡಿಕೊಳ್ಳುತ್ತದೆ) ಹುಟ್ಟಿಕೊಳ್ಳುತ್ತದೆ. (ಆತಿಥೇಯ ವರ್ಗವು ಕೇವಲ ಪ್ರತಿ ಪಾಲಿಸಿ ವರ್ಗದ ಪ್ರಕಾರದ ಸದಸ್ಯ ವೇರಿಯೇಬಲ್ ಅನ್ನು ಹೊಂದಿರಬೇಕು, ಅಥವಾ ಇಲ್ಲದಿದ್ದರೆ ಪಾಲಿಸಿ ವರ್ಗಗಳನ್ನು ಖಾಸಗಿಯಾಗಿ ಆನುವಂಶಿಕವಾಗಿ ಪಡೆಯಬೇಕು; ಆದಾಗ್ಯೂ, ಪಾಲಿಸಿ ವರ್ಗಗಳನ್ನು ಸಾರ್ವಜನಿಕವಾಗಿ ಆನುವಂಶಿಕವಾಗಿ ಪಡೆಯುವುದರಿಂದ ಪ್ರಮುಖ ಪ್ರಯೋಜನವೆಂದರೆ ಪಾಲಿಸಿ ವರ್ಗವು ಹೊಸ ವಿಧಾನಗಳನ್ನು ಸೇರಿಸಬಹುದು, ಇದು ತತ್ಕ್ಷಣದ ಆತಿಥೇಯ ವರ್ಗದಿಂದ ಆನುವಂಶಿಕವಾಗಿ ಪಡೆದಿದೆ ಮತ್ತು ಅದರ ಬಳಕೆದಾರರಿಗೆ ಪ್ರವೇಶಿಸಬಹುದು, ಇದರ ಬಗ್ಗೆ ಆತಿಥೇಯ ವರ್ಗವು ಸ್ವತಃ ತಿಳಿದಿರಬೇಕಾಗಿಲ್ಲ.) ನೀತಿಯ ನುಡಿಗಟ್ಟಿನ ಈ ಅಂಶದ ಒಂದು ಗಮನಾರ್ಹ ಲಕ್ಷಣವೆಂದರೆ, ಆಬ್ಜೆಕ್ಟ್-ಓರಿಯೆಂಟೆಡ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ಗೆ ಸಂಬಂಧಿಸಿದಂತೆ, ನೀತಿಗಳು ಮೂಲ ವರ್ಗ ಮತ್ತು ವ್ಯುತ್ಪನ್ನ ವರ್ಗದ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ತಿರುಗಿಸುತ್ತವೆ-ಆದರೆ ಒಓಪಿ ಇಂಟರ್ಫೇಸ್ಗಳಲ್ಲಿ ಸಾಂಪ್ರದಾಯಿಕವಾಗಿ (ಅಮೂರ್ತ) ಮೂಲ ವರ್ಗಗಳು ಮತ್ತು ವ್ಯುತ್ಪನ್ನ ವರ್ಗಗಳ ಇಂಟರ್ಫೇಸ್ಗಳ ಅನುಷ್ಠಾನಗಳಿಂದ ಪ್ರತಿನಿಧಿಸಲಾಗುತ್ತದೆ, ನೀತಿ-ಆಧಾರಿತ ವಿನ್ಯಾಸದಲ್ಲಿ ವ್ಯುತ್ಪನ್ನ (ಹೋಸ್ಟ್) ವರ್ಗವು ಇಂಟರ್ಫೇಸ್ಗಳನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ ಮತ್ತು ಮೂಲ (ನೀತಿ) ವರ್ಗಗಳು ಅವುಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತವೆ. ಪಾಲಿಸಿಗಳ ವಿಷಯದಲ್ಲಿ, ಸಾರ್ವಜನಿಕ ಆನುವಂಶಿಕತೆಯು ಆತಿಥೇಯ ಮತ್ತು ಪಾಲಿಸಿ ವರ್ಗಗಳ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ಪ್ರತಿನಿಧಿಸುವುದಿಲ್ಲ. ಇದನ್ನು ಸಾಂಪ್ರದಾಯಿಕವಾಗಿ ಒಓಪಿ ಸಂದರ್ಭಗಳಲ್ಲಿ ವಿನ್ಯಾಸದ ದೋಷದ ಪುರಾವೆ ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆಯಾದರೂ, ಇದು ಪಾಲಿಸಿ ಭಾಷಾವೈಶಿಷ್ಟ್ಯದ ಸಂದರ್ಭದಲ್ಲಿ ಅನ್ವಯಿಸುವುದಿಲ್ಲ. ಅವರ ಪ್ರಸ್ತುತ ಅವತಾರದಲ್ಲಿರುವ ನೀತಿಗಳ ಅನನುಕೂಲವೆಂದರೆ ನೀತಿ ಇಂಟರ್ಫೇಸ್ ಕೋಡ್ನಲ್ಲಿ ನೇರವಾದ, ಸ್ಪಷ್ಟವಾದ ಪ್ರಾತಿನಿಧ್ಯವನ್ನು ಹೊಂದಿಲ್ಲ, ಆದರೆ ಡಕ್ ಟೈಪಿಂಗ್ ಮೂಲಕ ಸೂಚ್ಯವಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ ಮತ್ತು ಕಾಮೆಂಟ್ಗಳಲ್ಲಿ ಪ್ರತ್ಯೇಕವಾಗಿ ಮತ್ತು ಕೈಯಿಂದ ದಾಖಲಿಸಬೇಕು. ಪ್ರಕಾರವನ್ನು ಸ್ಥಿರ ಅನುಷ್ಠಾನ ಮತ್ತು ಇಂಟರ್ಫೇಸ್, ನೀತಿ ಆಧಾರಿತ ವರ್ಗ ಮತ್ತು ವಿಭಿನ್ನ ನೀತಿಗಳಾಗಿ ವಿಂಗಡಿಸಲು ಸಾಮಾನ್ಯತೆ-ವ್ಯತ್ಯಾಸದ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಬಳಸುವುದು ಮುಖ್ಯ ಉದ್ದೇಶವಾಗಿದೆ. ಮುಖ್ಯ ವರ್ಗಕ್ಕೆ ಏನು ಹೋಗುತ್ತದೆ ಮತ್ತು ಯಾವ ನೀತಿಗಳನ್ನು ರಚಿಸಬೇಕು ಎಂಬುದನ್ನು ತಿಳಿದುಕೊಳ್ಳುವುದು ತಂತ್ರವಾಗಿದೆ. ಮೇಲೆ ತಿಳಿಸಲಾದ ಲೇಖನವು ಈ ಕೆಳಗಿನ ಉತ್ತರವನ್ನು ನೀಡುತ್ತದೆಃ ನಾವು ಎಲ್ಲೆಲ್ಲಿ ಸೀಮಿತ ವಿನ್ಯಾಸದ ನಿರ್ಧಾರವನ್ನು ತೆಗೆದುಕೊಳ್ಳಬೇಕಾಗುತ್ತದೆಯೋ, ಅಲ್ಲಿ ನಾವು ಆ ನಿರ್ಧಾರವನ್ನು ಮುಂದೂಡಬೇಕು, ನಾವು ಅದನ್ನು ಸೂಕ್ತವಾದ ಹೆಸರಿನ ನೀತಿಗೆ ನಿಯೋಜಿಸಬೇಕು. ನೀತಿ ತರಗತಿಗಳು ಅನುಷ್ಠಾನ, ಪ್ರಕಾರದ ವ್ಯಾಖ್ಯಾನಗಳು ಮತ್ತು ಮುಂತಾದವುಗಳನ್ನು ಒಳಗೊಂಡಿರಬಹುದು. ಮೂಲಭೂತವಾಗಿ, ಮುಖ್ಯ ಟೆಂಪ್ಲೇಟ್ ವರ್ಗದ ವಿನ್ಯಾಸಕರು ಪಾಲಿಸಿ ವರ್ಗಗಳು ಏನು ಒದಗಿಸಬೇಕು, ಅವರು ಯಾವ ಕಸ್ಟಮೈಸೇಶನ್ ಅಂಶಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬೇಕು ಎಂಬುದನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತಾರೆ. ಉತ್ತಮ ನೀತಿಗಳ ಗುಂಪನ್ನು ರಚಿಸುವುದು ಒಂದು ಸೂಕ್ಷ್ಮವಾದ ಕೆಲಸವಾಗಿರಬಹುದು, ಕೇವಲ ಸರಿಯಾದ ಸಂಖ್ಯೆ (ಉದಾಹರಣೆಗೆ, ಕನಿಷ್ಠ ಅಗತ್ಯ). ಒಟ್ಟಿಗೆ ಸೇರಿರುವ ವಿವಿಧ ಕಸ್ಟಮೈಸೇಶನ್ ಅಂಶಗಳು, ಶೇಖರಣಾ ನೀತಿ, ಊರ್ಜಿತಗೊಳಿಸುವಿಕೆ ನೀತಿ ಮುಂತಾದ ಒಂದು ನೀತಿ ವಾದಕ್ಕೆ ಹೋಗಬೇಕು. ಗ್ರಾಫಿಕ್ ವಿನ್ಯಾಸಕರು ತಮ್ಮ ನೀತಿಗಳಿಗೆ ಒಂದು ಹೆಸರನ್ನು ನೀಡಲು ಸಮರ್ಥರಾಗಿದ್ದಾರೆ, ಇದು ಪರಿಕಲ್ಪನೆಗಳನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ ಮತ್ತು ಕಾರ್ಯಾಚರಣೆಗಳು ಅಥವಾ ಸಣ್ಣ ಅನುಷ್ಠಾನ ವಿವರಗಳನ್ನು ಪ್ರತಿನಿಧಿಸುವುದಿಲ್ಲ. ನೀತಿ-ಆಧಾರಿತ ವಿನ್ಯಾಸವು ಇತರ ಉಪಯುಕ್ತ ತಂತ್ರಗಳನ್ನು ಒಳಗೊಂಡಿರಬಹುದು. ಉದಾಹರಣೆಗೆ, ಸಂಕಲನ ಸಮಯಕ್ಕಾಗಿ ಟೆಂಪ್ಲೇಟ್ ವಿಧಾನದ ಮಾದರಿಯನ್ನು ಮರು ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು, ಇದರಿಂದಾಗಿ ಮುಖ್ಯ ವರ್ಗವು ಅಸ್ಥಿಪಂಜರ ಅಲ್ಗಾರಿದಮ್ ಅನ್ನು ಹೊಂದಿರುತ್ತದೆ, ಇದು ಗ್ರಾಹಕೀಕರಣವು ಕೆಲವು ನೀತಿಗಳ ಸೂಕ್ತ ಕಾರ್ಯಗಳನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಸಿ + + ನ ಭವಿಷ್ಯದ ಆವೃತ್ತಿಗಳಲ್ಲಿನ ಪರಿಕಲ್ಪನೆಗಳಿಂದ ಇದನ್ನು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಸಾಧಿಸಲಾಗುತ್ತದೆ. ಕೆಳಗೆ ಪ್ರಸ್ತುತಪಡಿಸಲಾದ ಸರಳ ಉದಾಹರಣೆಯು ಸಿ + + ಹಲೋ ವರ್ಲ್ಡ್ ಪ್ರೋಗ್ರಾಂನ ಸರಳ (ಕಲ್ಪಿತ) ಉದಾಹರಣೆಯಾಗಿದೆ, ಅಲ್ಲಿ ಮುದ್ರಿಸಬೇಕಾದ ಪಠ್ಯ ಮತ್ತು ಅದನ್ನು ಮುದ್ರಿಸುವ ವಿಧಾನವನ್ನು ನೀತಿಗಳನ್ನು ಬಳಸಿಕೊಂಡು ವಿಭಜಿಸಲಾಗುತ್ತದೆ. ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, ಹಲೋವರ್ಲ್ಡ್ ಒಂದು ಆತಿಥೇಯ ವರ್ಗವಾಗಿದ್ದು, ಅದು ಎರಡು ನೀತಿಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ, ಒಂದು ಸಂದೇಶವನ್ನು ಹೇಗೆ ತೋರಿಸಬೇಕು ಎಂಬುದನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ಮತ್ತು ಇನ್ನೊಂದು ನಿಜವಾದ ಸಂದೇಶವನ್ನು ಮುದ್ರಿಸಲು. ಸಾಮಾನ್ಯ ಅನುಷ್ಠಾನವು ರನ್ ನಲ್ಲಿದೆ ಮತ್ತು ಆದ್ದರಿಂದ ಎರಡೂ ನೀತಿಗಳನ್ನು (ಮುದ್ರಣ ಮತ್ತು ಸಂದೇಶ) ಒದಗಿಸದ ಹೊರತು ಕೋಡ್ ಅನ್ನು ಸಂಕಲಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ ಎಂಬುದನ್ನು ಗಮನಿಸಿ. #include <ಐಯೋಸ್ಟ್ರೀಮ್> #include <ಸ್ಟ್ರಿಂಗ್> ಟೆಂಪ್ಲೇಟ್ <ಟೈಪಿನೆಮ್ ಔಟ್ಪುಟ್ ಪಾಲಿಸಿ, ಟೈಪಿನೆಮ್ ಲ್ಯಾಂಗ್ವೇಜ್ ಪಾಲಿಸಿ> ಕ್ಲಾಸ್ ಹಲೋವರ್ಲ್ಡ್ಃ ಪ್ರೈವೇಟ್ ಔಟ್ಪುಟ್ ಪಾಲಿಸಿ, ಪ್ರೈವೇಟ್ ಲ್ಯಾಂಗ್ವೇಜ್ ಪಾಲಿಸಿ {ಸಾರ್ವಜನಿಕಃ// ಬಿಹೇವಿಯರ್ ವಿಧಾನ. ಶೂನ್ಯ ರನ್ () ಕಾನ್ಸ್ಟ್ {// ಎರಡು ನೀತಿ ವಿಧಾನಗಳು. ಮುದ್ರಿಸು (ಸಂದೇಶ ());} ಖಾಸಗಿಯಾಗಿಃ ಲ್ಯಾಂಗ್ವೇಜ್ ಪಾಲಿಸಿಯನ್ನು ಬಳಸುವುದುಃಃ ಸಂದೇಶ; ಔಟ್ಪುಟ್ ಪಾಲಿಸಿಯನ್ನು ಬಳಸುವುದುಃಃ ಮುದ್ರಿಸು;}; ವರ್ಗ ಔಟ್ಪುಟ್ ಪಾಲಿಸಿವ್ರೈಟ್ ಟು ಕೌಟ್ {ಸಂರಕ್ಷಿತಃ ಟೆಂಪ್ಲೇಟ್ <ಟೈಪಿನೆಮ್ ಸಂದೇಶ ಪ್ರಕಾರ> ಅಮಾನ್ಯ ಮುದ್ರಣ (ಸಂದೇಶ ಪ್ರಕಾರ & & ಸಂದೇಶ) ಕಾನ್ಸ್ಟ್ {ಎಸ್ಟಿಡಿಃ: ಕೌಟ್ <<ಸಂದೇಶ <ಎಸ್ಟಿಡಿಃ: ಎಂಡಿಎಲ್;}; ವರ್ಗ ಲ್ಯಾಂಗ್ವೇಜ್ ಪಾಲಿಸಿ ಇಂಗ್ಲಿಷ್ {ಸಂರಕ್ಷಿತಃ ಎಸ್ಟಿಡಿಃ: ಸ್ಟ್ರಿಂಗ್ ಸಂದೇಶ () ಕಾನ್ಸ್ಟ್ {ಹಿಂತಿರುಗಿ "ಹಲೋ, ವರ್ಲ್ಡ್! ";}}; ವರ್ಗ ಲಾಂಗ್ವೇಜ್ಪೋಲಿಸಿಜೆರ್ಮನ್ {ಸಂರಕ್ಷಿತಃ std:: ಸ್ಟ್ರಿಂಗ್ ಸಂದೇಶ () ಸ್ಥಿರಾಂಕ {ಹಿಂತಿರುಗಿ" ಹಲೋ ವೆಲ್ಟ್! ";}}; ಇಂಟ್ ಮೇನ್ () {// ಉದಾಹರಣೆ 1 ಬಳಸಿ ಹಲೋವರ್ಲ್ಡ್ ಇಂಗ್ಲಿಷ್ = ಹಲೋವರ್ಲ್ಡ್ <ಔಟ್ಪುಟ್ ಪಾಲಿಸಿ ರೈಟ್ ಟು ಕೌಟ್, ಲಾಂಗ್ವೇಜ್ಪೋಲಿಸಿ ಇಂಗ್ಲಿಷ್>; ಹಲೋವರ್ಲ್ಡ್ ಇಂಗ್ಲಿಷ್ ಹಲೋ _ ವರ್ಲ್ಡ್; hello_world.Run ();// ಪ್ರಿಂಟ್ಸ್" ಹಲೋ, ವರ್ಲ್ಡ್! ". //ಉದಾಹರಣೆ 2// ಅದೇ ರೀತಿ ಮಾಡುತ್ತದೆ, ಆದರೆ ಮತ್ತೊಂದು ಭಾಷಾ ನೀತಿಯನ್ನು ಬಳಸುತ್ತದೆ. ಬಳಸುವುದು ಹಲೋವರ್ಲ್ಡ್ ಜರ್ಮನ್ = ಹಲೋವರ್ಲ್ಡ್ <ಔಟ್ಪುಟ್ ಪಾಲಿಸಿ ರೈಟ್ ಟು ಕೌಟ್, ಲ್ಯಾಂಗ್ವೇಜ್ ಪಾಲಿಸಿ ಜರ್ಮನ್>; ಹಲೋವರ್ಲ್ಡ್ ಜರ್ಮನ್ ಹಲೋ _ ವರ್ಲ್ಡ್2; hello_world2.Run ();// ಪ್ರಿಂಟ್ಸ್ "ಹಲೋ ವೆಲ್ಟ್!". ಡಿಸೈನರ್ಗಳು ಮೆಂಬರ್ ಫಂಕ್ಷನ್ ಪ್ರಿಂಟ್ನೊಂದಿಗೆ ಹೊಸ ತರಗತಿಗಳನ್ನು ಸೇರಿಸುವ ಮೂಲಕ ಹೆಚ್ಚು ಔಟ್ಪುಟ್ ಪಾಲಿಸಿಗಳನ್ನು ಸುಲಭವಾಗಿ ಬರೆಯಬಹುದು ಮತ್ತು ಅವುಗಳನ್ನು ಹೊಸ ಔಟ್ಪುಟ್ ಪಾಲಿಸಿಗಳಾಗಿ ತೆಗೆದುಕೊಳ್ಳಬಹುದು. ಲೋಕಿ ಗ್ರಂಥಾಲಯವು ಆಂಡ್ರೇ ಅಲೆಕ್ಸಾಂಡ್ರೆಸ್ಕು ಅವರು ತಮ್ಮ ಪುಸ್ತಕ ಮಾಡರ್ನ್ ಸಿ + + ಡಿಸೈನ್ನ ಭಾಗವಾಗಿ ಬರೆದ ಸಿ + + ಸಾಫ್ಟ್ವೇರ್ ಗ್ರಂಥಾಲಯದ ಹೆಸರಾಗಿದೆ. ಗ್ರಂಥಾಲಯವು ಸಿ + + ಟೆಂಪ್ಲೇಟ್ ಮೆಟಾಪ್ರೋಗ್ರಾಮಿಂಗ್ ಅನ್ನು ವ್ಯಾಪಕವಾಗಿ ಬಳಸುತ್ತದೆ ಮತ್ತು ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸುವ ಹಲವಾರು ಸಾಧನಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆಃ ಬೆರಳಚ್ಚು ಪಟ್ಟಿ, ಫಂಕ್ಟರ್, ಸಿಂಗಲ್ ಟನ್, ಸ್ಮಾರ್ಟ್ ಪಾಯಿಂಟರ್, ಆಬ್ಜೆಕ್ಟ್ ಫ್ಯಾಕ್ಟರಿ, ವಿಸಿಟರ್ ಮತ್ತು ಮಲ್ಟಿಮೆಥೋಡ್ಗಳು. ಮೂಲತಃ ಗ್ರಂಥಾಲಯವು ಎರಡು ಅತ್ಯಂತ ಪ್ರಮಾಣಿತ ಸಿ + + ಕಂಪೈಲರ್ಗಳೊಂದಿಗೆ ಮಾತ್ರ ಹೊಂದಿಕೊಳ್ಳುತ್ತಿತ್ತು (ಕೋಡ್ ವಾರಿಯರ್ ಮತ್ತು ಕಮೌ ಸಿ/ಸಿ + +): ನಂತರದ ಪ್ರಯತ್ನಗಳು ಇದನ್ನು ವ್ಯಾಪಕ ಶ್ರೇಣಿಯ ಕಂಪೈಲರ್ಗಳೊಂದಿಗೆ (ಹಳೆಯ ವಿಷುಯಲ್ ಸಿ + + 6, ಬೊರ್ಲ್ಯಾಂಡ್ ಸಿ + + ಬಿಲ್ಡರ್ 6, ಕ್ಲಾಂಗ್ ಮತ್ತು ಜಿಸಿಸಿ ಸೇರಿದಂತೆ) ಬಳಸಬಹುದಾಗಿದೆ. ಕಂಪೈಲರ್ ಮಾರಾಟಗಾರರು ಲೋಕಿಯನ್ನು ಹೊಂದಾಣಿಕೆಯ ಮಾನದಂಡವಾಗಿ ಬಳಸಿ, ಕಂಪ್ಲೈಂಟ್ ಕಂಪೈಲರ್ಗಳ ಸಂಖ್ಯೆಯನ್ನು ಮತ್ತಷ್ಟು ಹೆಚ್ಚಿಸಿದರು. ಪೀಟರ್ ಕುಮೆಲ್ ಮತ್ತು ರಿಚರ್ಡ್ ಸ್ಪೋಸಟೋ ನೇತೃತ್ವದ ಮುಕ್ತ-ಮೂಲ ಸಮುದಾಯದ ಮೂಲಕ ಲೋಕಿಯ ನಿರ್ವಹಣೆ ಮತ್ತು ಹೆಚ್ಚಿನ ಅಭಿವೃದ್ಧಿಯನ್ನು ಸೋರ್ಸ್ಫೋರ್ಜ್ ಯೋಜನೆಯಾಗಿ ಮುಂದುವರಿಸಲಾಗಿದೆ. ಅನೇಕ ಜನರ ನಿರಂತರ ಕೊಡುಗೆಗಳು ಗ್ರಂಥಾಲಯದ ಒಟ್ಟಾರೆ ದೃಢತೆ ಮತ್ತು ಕಾರ್ಯವನ್ನು ಸುಧಾರಿಸಿವೆ. ಲೋಕಿಯು ಈಗಾಗಲೇ ಸಾಕಷ್ಟು ಹೊಸ ಅಂಶಗಳನ್ನು ಹೊಂದಿರುವುದರಿಂದ (ಉದಾ. ಸ್ಟ್ರಾಂಗ್ ಪಿಟಿಆರ್, ಪ್ರಿಂಟ್ಎಫ್, ಮತ್ತು ಸ್ಕೋಪ್ಗಾರ್ಡ್). ಲೋಕಿಯು ಇದೇ ರೀತಿಯ ಉಪಕರಣಗಳು ಮತ್ತು ಕಾರ್ಯಗಳನ್ನು ಪ್ರೇರೇಪಿಸಿತು ಮತ್ತು ಈಗ ಬೂಸ್ಟ್ ಲೈಬ್ರರಿ ಸಂಗ್ರಹದಲ್ಲಿಯೂ ಸಹ ಇದೆ. ಬೂಸ್ಟ್ (ಸಿ + + ಗ್ರಂಥಾಲಯಗಳು) ಮಿಕ್ಸಿನ್ ರೆಫರೆನ್ಸಸ್ ಅನ್ನು ಸಹ ನೋಡಿ ಬಾಹ್ಯ ಕೊಂಡಿಗಳು ಅಲೆಕ್ಸಾಂಡ್ರೆಸ್ಕುವಿನ ಜಾಲತಾಣ (ಪುಸ್ತಕ ಎರ್ರಾಟಾದೊಂದಿಗೆ) ಸ್ಮಾರ್ಟ್ ಪಾಯಿಂಟರ್ಸ್ (ಪುಸ್ತಕದ ಮಾದರಿ ಅಧ್ಯಾಯ) ಪುಸ್ತಕ ಪ್ರಕಾಶಕರ ಮೂಲ ಮೂಲ ಕೋಡ್ 2001 ಕಾಲ್ಪನಿಕವಲ್ಲದ ಪುಸ್ತಕಗಳು ಸಿ + + ಬಗ್ಗೆ ಪುಸ್ತಕಗಳು