JAVA - Step 3
படி 3 - OOP என்றால் என்ன ?
Object Oriented Programming என்பதின் சுருக்கமே OOP. இதை "ஓ ஓ பி" என்று கூறுவதே முறையாகும். ஆனால் பெரும்பாலோர் இதை "ஊப்" என்றே கூறிவருகிறார்கள். இது தவறானது. பள்ளி மேல்நிலை புத்தகத்தில் கூறியிருந்தாலும் தவறானதே. ( இது போலத்தான் SAP என்பதை நாம் ஸாப் என்றே கூறி வருகிறோம். அனால் சரியான முறை "எஸ் ஏ பி" என்பதுதான்.)
OOP க்கு முன்னால் வழக்கிலிருந்த முறை procedural programming எனப்படும். BASIC, FORTRAN, COBOL மற்றும் C மொழிகள் இந்த முறையை சார்ந்தவையே.
இந்த இரண்டு முறைகளுக்கும் என்ன வேறுபாடு என்பதற்கு பல எடுத்துக்காட்டுகளை பல பேர் பல முறை சொல்லியகிவிட்டது. ஆனாலும் மரபு கருதி நானும் சில உதாரணங்களை இங்கே கொடுக்கப்போகிறேன்.
நீங்கள் ஒரு பொதுத்தேர்வோ அரசாங்கத்தேர்வோ எழுதப்போவதாக வைத்துக்கொள்வோம். முதலில் உங்களுக்கு ஒரு அனுமதிச்சீட்டு வழங்கப்படும். அதில் ஒரு எண் குறிப்பிடப்பட்டு இருக்கும்.
தேர்வு நடக்கும் இடத்துக்கு நீங்கள் சென்றவுடன் நீங்கள் என்ன செய்வீர்கள்? தேர்வு மையத்தில் இருக்கும் அறிவுப்புப் பலகையை சென்று பார்ப்பீர்கள். அங்கு ஒவ்வொரு தெரு நடக்கும் அரை எண் மற்றும் அதற்கு நேரே அதில் தேர்வு எழுதப்போகும் மாணவர்களின் அனுமதிச்சீட்டின் முதல் எண் மற்றும் கடைசி எண் குறிப்பிடப்பட்டு இருக்கும். நீங்கள் உங்கள் அறையை எளிதாக கண்டுபிடித்து செல்ல முடியும். நீங்கள் அந்த அறையை அடைந்து உங்கள் தேர்வை சரியான நேரத்தில் எழுத ஆரம்பிக்கலாம்.
ஆனால், ஒரு அரசாங்க அலுவலகத்துக்கு ஒரு வேலையாக நீங்கள் சென்றால் எங்கு செல்ல வேண்டும் யாரைப்பார்க்க வேண்டும் என்பது புரியவே சில மணி நேரங்கள் அல்லது சில நாட்கள் ஆகலாம் .
நீங்கள் தேர்வு எழுத செல்லுமிடத்தில் ஒரு அறிவிப்பு பலகைக்கு பதிலாக ஒருவர் நாற்காலி மேசை போட்டு அமர்ந்துகொண்டு இருக்கிறார். அவர் கையில் இருக்கும் ஒரு தாளில் எந்த அனுமதிச்சீட்டு எண் எந்த அறையில் தேர்வு எழுத வேண்டும் என்ற குறிப்பு உள்ளது. எண்களும் வரிசையாக அறைகளில் ஒதுக்கப்படவில்லை என்றால் என்ன ஆகும்? கற்பனை செய்து பார்க்கவே எப்படி இருக்கிறது?
நீங்கள் தாமாகவே தேர்வு அறையைக் கண்டுபிடிப்பது OOP போல. பின்னது procedural programming போல.
ஒரு system ல் இருக்கும் ஒவ்வொரு பொருளுக்கும் அதனதன் வேலையைப் பற்றிய அறிவு இருந்த அது OOP.
இரண்டாவது முறையில் நீங்கள் ஒரு எண்ணாக மட்டும் பார்க்கப்படுகிறீர்கள். உங்கள் எண் எந்த அறையில் இருக்கிறது என்று மற்றொருவர் சொல்கிறார்.
நாம் சாப்ட்வேர் ப்ரோக்ராம் எழுதுவது ஒரு System (அமைப்பு) அல்லது process (செயல்முறை) ஆகியவற்றை கணினியின் துணை கொண்டு எளிமை ஆக்கத்தான்.
அந்த system ல் இருக்கும் பல்வேறு பொருள்கள் எப்படி கையாளப்படுகிறது என்பதை பொறுத்துத்தான் OOP என்பது அமைகிறது.
உதாரணமாக ஒருவரின் வயதைக் கணக்கிட வேண்டும் என்றால் என்ன செய்ய வேண்டும்?
int age = calculateAge(11, 5, 1983);
இந்த முறை procedural. இங்கு நீங்கள் ஒரு தேதியை அடிப்படையாக வைத்து வயதைக் கணக்கிடுகிறீர்கள். தேதி என்பதும் ஒரு தேதியாக இல்லை. நாள், மாதம், மற்றும் வருடம் என எளிய எண்களாக உள்ளது. இந்த 11, 5, 1983 என்பது பிறந்த தேதியா அல்லது வேறு எதாவது தேதியா என்ற தங்கவலும் இல்லை.
எளிய தகவல்களின் அடிப்படையில் எல்லா கணக்கீடுகளும் கையாளப்படுவது நடந்தால் அது procedural program. இங்கு ஒவ்வொரு தகவலும் சில பல function களுக்கு அனுப்பப்படும். இந்த தகவல்கள் எந்த பொருளை சார்ந்தது அதன் பொருள்(அர்த்தம்) என்ன என்பதைப்பற்றி அந்த function களுக்கு கவலை இல்லை. இந்த function கள் பொருளை சார்ந்து இல்லை. ஒரு பொருள் என்பதே இதில் கிடையவும் கிடையாது.
ஆனால் இதையே OOP ல்
int age = somePerson.getAge();
என்று எழுதலாம் . இதில் somePerson என்பது ஒரு பொருள். getAge என்ற function அந்த பொருளை சார்ந்து உள்ளது. வயதைக் கணக்கிடும் செயல் முறையும் அந்த பொருளிலேயே உள்ளது. எல்லா function (செயல்முறை) களும் பொருட்கள் சார்ந்தே இயக்கப்படும்போது அது OOP .
OOP என்பதை பொருள் சார்ந்த நிரலாக்கம் என்று பொருள் கொள்ளலாம்.
மற்றொரு உதாரணம் பேசிக் மொழியில்
A$ = "Hello"
PRINT len(A$)
இங்கு len என்பது ஒரு சொல்லின் நீளத்தைக் காண உதவும் செயல். இங்கு len என்னும் செயலுக்கு Hello என்ற சொல் அனுப்பப் படுகிறது.
ஆனால் இதுவே OOP (Java) மொழியில்
String a = "Hello";
System.out.println(a.length());
இங்கு length என்னும் செயல்பாடு String எனும் பொருளை சார்ந்தே உள்ளது. இங்கு ஒரு String பொருள் அதி உள்ள எழுத்துக்களை அளிக்கலாம்.
rectangle1.length() என்பதில் length என்னும் செயல்பாடு ஒரு செவ்வகத்தின் நீளத்தைக் கொடுக்கலாம்.
ஒரே பெயர் உள்ள ஒரு செயல் அது சார்ந்திருக்கும் பொருளை பொருத்து மாறுபடும். இதுதான் OOP ல் உள்ள ஒரு வசதி.
பொருளையும் செயலையும் இணைப்பது நடுவில் உள்ள புள்ளியே. ஒரு பொருளுக்குள் இருக்கும் மற்றறொரு பொருளையும் காண உதவுவதும் இதே புள்ளிதான்.
rectangle1.length() என்பதில் ஒரு செவ்வகதையும் அதன் செயலையும் இணைக்கிறது.
System.out.println() என்பதில் System என்ற பொருளில் உள்ள out என்ற பொருளை கொட்டுக்கிறது. இரண்டாவது புள்ளி out என்ற பொருளையும் அதன் println என்ற செயலையும் இணைக்கிறது.
aCircle.centre.getX() என்பதில் circle எனும் பொருளில் உள்ள centre என்னும் பொருளின் (இது ஒரு coordinate பொருள்) x மதிப்பை கொடுக்கிறது. ஒவ்வொரு புள்ளியாக வைத்து ஒவ்வொரு பொருளின் உள்ளேயும் நுழைந்து கடவுள் துகள் வரைக்கும் செல்ல முடியும்.
இது வரை கற்றவற்றை வைத்துக்கொண்டு procedural (???) முறையில் Java மொழியில் உள்ள சில பொருட்களை கையாளக் கற்றுக்கொள்ளலாம்.
Procedural முறையின் சில வழி முறைகளையும் விதிகளையும் பயன்படுத்தி முதலில் பொருட்களை கையாண்டு பிறகு நாமே பொருட்களை உருவாக்க முடியும்.
Comments