சூரியன், பூமி, சந்திரன் போன்ற பல்வேறு பொருட்களால் ஆனது நமது பிரபஞ்சத்தை கற்பனை செய்யலாம். அதே போல் சக்கரம், ஸ்டீயரிங், கியர் போன்ற பல்வேறு பொருட்களால் உருவாக்கப்பட்ட நமது காரை கற்பனை செய்யலாம். அதே வழியில் எல்லாவற்றையும் ஒரு பொருளாகக் கருதும் பொருள் சார்ந்த நிரலாக்க கருத்துக்கள் உள்ளன.
பொருள் சார்ந்த கருத்துக்கள் நாம் விரிவாகச் செல்வதற்கு முன், பொருள் சார்ந்த நிரலாக்கம் தொடர்பான முக்கியமான சொற்களை வரையறுக்கலாம்.
கிளாஸ்.
இது
புரோகிராமர் உருவாக்கிய டேட்டா டைப் ஆகும்.இது லோக்கல் மெத்தட்கள் மற்றும் லோக்கள்
டேட்டா ஆகியவை அடங்கும். ஒரே மாதிரியான (அல்லது
வகுப்பு)
பொருளின்
பல
நிகழ்வுகளை
உருவாக்குவதற்கான டெம்ப்ளேட்டாக ஒரு
கிளாசை
நீங்கள்
நினைக்கலாம்.
பொருள் - ஒரு வகுப்பால் வரையறுக்கப்பட்ட தரவு கட்டமைப்பின் தனிப்பட்ட நிகழ்வு. நீங்கள்
ஒரு வகுப்பை ஒருமுறை வரையறுத்து, அதற்குரிய பல பொருட்களை உருவாக்குகிறீர்கள்.
பொருள்கள் நிகழ்வு என்றும் அழைக்கப்படுகின்றன.
உறுப்பினர் மாறி ( மெம்பர் வேரியபிள்)- இவை ஒரு கிளாசிற்குள் வரையறுக்கப்பட்ட மாறிகள். இந்தத்
தரவை கிளாசிற்கு வெளியே காணமுடியாது இதை மெம்பர் ஃபங்க்சன் கொண்டு தான் அனுகலாம். ஒரு
பொருள் உருவாக்கப்பட்டவுடன் இந்த வேரிபிள்கள் பொருளின் பண்பு என்று அழைக்கப்படுகின்றன
உறுப்பினர் செயல்பாடு( மெம்பர் ஃபங்க்சன்)
- இவை
ஒரு
கிளாசிற்குள்ம் வரையறுக்கப்பட்ட செயல்பாடு மற்றும்
பொருள்
தரவை
( டேட்டாவை)அணுக பயன்படுகிறது.
இன் ஹெரிடன்ஸ்:
ஓரு கிளாசானது மற்றொரு
கிளாசின் பண்புகள் மற்றும் செயற்பாடுகளை இன்ஹெரிட் செய்தல்.
பேரண்ட் கிளாஸ்.
இன்ஹெரிட் செய்யப்படும்
கிளாஸ். பேஸ் கிளாஸ் என்றும் அழைக்கப்படுகின்றது
சைல்ட் கிளாஸ்:
இன்ஹெரிட் செய்யப்பட்ட
கிளாஸ். டெரிவ்டு கிளாஸ் என்றும் அழைக்கப்படுகின்றது.
பாலிமார்பிசம் - இது ஒரு பொருள் சார்ந்த கருத்தாகும், இதில் ஒரே செயல்பாட்டை வெவ்வேறு நோக்கங்களுக்காகப் பயன்படுத்தலாம். எடுத்துக்காட்டாக, செயல்பாட்டின் பெயர் ஒரே மாதிரியாக இருக்கும், ஆனால் அது வெவ்வேறு எண்ணிக்கையிலான ஆர்க்கியூமெண்ட்களை அனுப்பும் பொழுது வெவ்வேறு பணிகளைச் செய்ய முடியும்.
• ஓவர்லோடிங் - சில அல்லது அனைத்து ஆபரேட்டர்களும் தங்கள் ஆர்க்கியூமெண்ட்களின் வகைகளைப் பொறுத்து வெவ்வேறு செயலாக்கங்களைக் கொண்ட பாலிமார்பிஸத்தின் ஒரு வகை.
இதேபோல் மெத்தட்களும் வெவ்வேறு செயலாக்கத்துடன் ஓவர்லோட் செய்யப்படலாம்.
• தரவு
சுருக்கம்( டேட்டா அப்ஸ்ட்ராக்சன்)- செயலாக்க விவரங்கள் மறைக்கப்பட்ட (சுருக்கம்) தரவின் எந்தப் பிரதிநிதித்துவமும்.
• Encapsulation - ஒரு
பொருளை
உருவாக்க
அனைத்து
தரவு
(டேட்டா) மற்றும் உறுப்பினர் செயல்பாடுகளை ( மெம்பர் ஃபங்க்சன்கள் ) ஒன்றாக இணைக்கும் ஒரு
கருத்தை
குறிக்கிறது.
கன்ஸ்ட்ரக்டர் − என்பது ஒரு
சிறப்பு
வகை
செயல்பாட்டைக் குறிக்கிறது, இது ஒரு
கிளாசில் இருந்து ஒரு
ஆப்ஜெக்ட்
உருவாக்கம்
ஏற்படும்
போதெல்லாம்
தானாகவே
அழைக்கப்படும்.
• டிஸ்ட்ரக்டர் - என்பது ஒரு சிறப்பு
வகை
செயல்பாட்டைக் குறிக்கிறது, இது ஒரு
ஆப்ஜெக்ட்
நீக்கப்பட்டால் அல்லது ஸ்கோப் இல்லாமல்
போகும்
போதெல்லாம்
தானாகவே
அழைக்கப்படும்.
PHP கிளாஸ்களை வரையறுத்தல்.
PHP இல் ஒரு புதிய கிளாசை உருவாக்குவதற்கான பொதுவான வடிவம் பின்வருமாறு
<?php
class
phpClass {
var
$var1;
var
$var2 =
"constant string";
function
myfunc ($arg1,
$arg2)
{
[..]
}
[..]
}
?>
கிளாஸ்
என்ற கீவேர்டு தொடந்து கிளாசின் பெயர்.அதற்கடுத்து ஒரு பிரேஸ் செட். இதற்குள் டேட்டா
மெம்பர்கள் , மெத்தட்கள் ஆகியவை இருக்கும்.
வேரியபிள்
அறிவிப்புகள் var என்ற கீவேர்டுடன் தொடங்குகின்றது. தொடந்து $ சிம்பளில் ஆரம்பிக்கும்
வேரியபிள் பெயர். தொடர்ந்து அதற்கு ஏதேனும் டேட்டா மதிப்பிருத்தப்படுதல்(ஆப்சனல்).
ஃபங்க்சன்
வரையரைகள். இது php ஃபங்க்சணை போன்றே எழுதப்படுகின்றது. இது லோக்கல் டேட்டாவை ஆக்சஸ்
செய்யவும் மதிப்பிருத்தவும் பயன்படுகின்றது.
சான்று
நிரல்.
<?php
class
Books
{
/* Member variables */
var
$price;
var
$title;
/* Member functions */
function
setPrice($par){
$this->price
=
$par;
}
function
getPrice(){
echo $this->price
."<br/>";
}
function
setTitle($par){
$this->title
=
$par;
}
function
getTitle(){
echo $this->title
." <br/>";
}
}
?>
$this
என்ற சிறப்பு வேரியபிள் அதே ஆப்ஜெக்ட் என்பதைக் குறிக்கும்.
PHP இல் ஆப்ஜெக்டுகளை உருவாக்குதல் உங்கள் கிளாசை வரையறுத்தவுடன், அந்த கிளாஸ் வகைக்கு நீங்கள் விரும்பும் பல ஆப்ஜெக்டுகளை உருவாக்கலாம். New ஆபரேட்டரைப் பயன்படுத்தி ஒரு ஆப்ஜெக்டை எவ்வாறு உருவாக்குவது என்பதற்கான எடுத்துக்காட்டு கீழே உள்ளது.
$physics
= new Books;
$maths
= new Books;
$chemistry
= new Books;
இங்கே நாம் மூன்று
ஆப்ஜெக்டுகளை உருவாக்கியுள்ளோம், இந்த ஆப்ஜெக்டுகள் ஒன்றுக்கொன்று சுதந்திரமானவை மற்றும்
அவை
தனித்தனியாக இருக்கும்.
அடுத்து மெம்பர் ஃபங்க்சன்களை
எவ்வாறு ஆக்சஸ் செய்வது மற்றும் எவ்வாறு மெம்பர் டேட்டாவை பயன்படுத்துவது என்று பார்ப்போம்.
மெம்பர் ஃபங்க்சன்களை அழைத்தல்.
ஆப்ஜெக்டுகள் உருவாக்கியபின்
அதை பயன்படுத்தி அதன் தொடர்புடையே மெம்பர் டேட்டாவை மட்டுமே ஆக்சஸ் செய்யலாம்.
டைட்டில்
மற்றும் விலை மதிப்பிருத்த கீழ்கண்டவாறு ஃபங்க்சன்கள் அழைக்கப்படுகின்றது.
physics->setTitle(
"Physics for High School" );
$chemistry->setTitle(
"Advanced Chemistry" );
$maths->setTitle(
"Algebra" );
$physics->setPrice(
10
);
$chemistry->setPrice(
15
);
$maths->setPrice(
7
);
இப்பொழுது
அந்த டைட்டில் மற்றும் விலையை பெறுவதற்கு கீழ்கண்டவாறு ஃபங்க்சன்கள் அழைக்கப்படுகின்றது.
$physics->getTitle();
$chemistry->getTitle();
$maths->getTitle();
$physics->getPrice();
$chemistry->getPrice();
$maths->getPrice();
வெளியீடு:
Physics
for High School
Advanced
Chemistry
Algebra
10
15
7
கன்ஸ்ட்ரக்டர்:
இது
ஒரு சிறப்பு ஃபங்க்சன் ஆகும். இது கிளாசிற்கு ஆப்ஜெக்ட் உருவாக்கு பொழுது தானாகவை அழைக்கப்படுகின்றது.
Php
ஆனது __construct() என்ற சிறபப்பு ஃபங்க்சனை பயன்படுத்துகின்றது.
கீழே
உள்ளது books கிளாசிற்கு கன்ஸ்ட்ரக்டர் அமைக்கின்றது.
function
__construct( $par1, $par2 ) {
$this->title = $par1;
$this->price = $par2;
}
இப்பொழுது
கீழ்கண்டவாறு நிரல் தொடருகின்றது.
$physics = new
Books(
"Physics for High School", 10
);
$maths = new
Books
(
"Advanced Chemistry", 15
);
$chemistry = new
Books
("Algebra", 7
);
/* Get those set values */
$physics->getTitle();
$chemistry->getTitle();
$maths->getTitle();
$physics->getPrice();
$chemistry->getPrice();
$maths->getPrice();
வெளியீடு:
Physics for High School
Advanced Chemistry
Algebra
10
15
7
கண்ஸ்ட்ரக்டர்
மாதிரியே டெஸ்ட்ரக்டரை __destruct() என்ற ஃபங்க்சன் மூலம் அமைக்கலாம்.
இன்ஹெரிடன்ஸ்,.
ஒரு
கிளாசானது மற்றொரு கிளாசால் extends என்ற கீவேர்டை பயன்படுத்தி இன்ஹெரிட் செய்யப்படுகின்றது.
class
Child extends Parent {
<definition body>
}
இப்பொழுது
பேரண்ட் கிளாசின் எல்லா மெம்பர் வேரியபிள் மற்றும் ஃபங்க்சன்கள் சைல்ட் கிளாஸிற்குள்
பொருத்தப்படுகின்றது.
class
Novel
extends
Books
{
var
$publisher;
function
setPublisher($par){
$this->publisher
=
$par;
}
function
getPublisher(){
echo $this->publisher.
"<br />";
}
}
No comments:
Post a Comment