Класс ба Объект

Класс ба Объект

Бидний өдий хүртэл сурсаар байсан программчлалын бүтэц бол Процедур бүтэц юм. Процедур програмчлал бүтэц нь програм зохиогч тус тусдаа ажилладаг процедурын цуглуулга код бичдэг ба ашиглахын тулд процедураас процедур руу дуудах маягаар дууддаж ажиллуулдаг. 8 хэсэгт бид ямар ч бүтэц зохион байгуулалтгүй програмчлалын хэлбэрээс процедур програмчлал хэрхэн илүү дээр болохыг үзсэн. Програм зохиогч нар маш удаан хугацаа зарцуулж бодож тунгаасны  үр дүнд процедур програмчлалын бүтцээс илүү, бүрэн хэмжээний цогц систем хөгжүүлэхэд зориулагдсан  Объект Хандалтад програмчлалын(OOP) бүтцийг (загвар)  бий болгосон. Бид уншигчидаа OOP –ын талаар хэт цогц зүйлийн талаар ярьж толгойг нь эргүүлэхээс илүү чухал хэрэгтэй шаардлагатай зүйлийг нь хэлэлцэхээр шийдсээн. OOP-д класс нь загвар болон нарийвчилсан төлөвлөлтөөр зохион байгуулагдсан классын функцыг үүсгэдэг объект гэж нэрлэгдэх хувьсагчуудаас тогтсон хэл бүтэцтэй систем юм. Энэ хичээлээр алхам алхамаар маш тодорхой заах болно.

Класс үүсгэх
Жишээ#1
Доорх жишээнд Person гэж нэрлэгдэх класс үүсгэсэн байна. Энэ нь name (нэр) address (хаяг) гэх 2 функц хувьсагчтай ба цөөн хэдэн үйлдлүүдээс тогтсон. Хэрэв функц хувьсагч нь private төрлөөр тодорхойлогдсон бол классын гаднаас ямар нэгэн дуудагдахгүй ба холбогдохын тулд бидэнд өөр method хэрэгтэй. Харин public хувьсагчууд нь хаанаас ч дуудагдах боломжтой байдаг. Бүх хувьсагч функцууд нь private-аар байх шаардлагатай бөгөөд тэдгээрийг дуудах аргууд (method)-ууд мөн байх шаардлагатай. Тиймээс бидэнд public- аар тодорхойлогдсон SET ба GET аргууд (method) байна. Бүх аргууд public байх хэрэгтэй ба эс тэгвээс бид классын гаднаас дуудаж ажиллуулж чадахгүй.
Классын төгсгөлд бид Person классын “р” функц үүсгэсэн. “р” нь Person классын объектоор дуудагддаг. Тэмдэглэх зүйл гэвэл “р” объект нь аргууд(methods) болон хувьсагчууд хамтад нь холбодог. Энэ нь хайрцаглах(encapsulation) гэж нэрлэгддэг ООР-ын шинж чанар нь юм.

<?php
class Person
{
// Properties or Instance variables
private $name;
private $address;

//Methods or behaviours
//set methods are used to set the instance variables
              public function setName($aName)
             {
	         $this->name= $aName;
    	}
	public function setAddress($aAddress)
	{
       		$this->address= $aAddress;
    	}
	//get methods are used to get the instance variables
	public function getName()
	{
      		 return $this->name;
    	}
	public function getAddress()
	{
        		return $this->address;
    	}
}// end of class

//create a object of Person class
$p = new Person();
//Set name
$p->setName("Gary Tom");
//Set address
$p->setAddress("Unit 10 Nelson Bay, NSW 2030 Australia");
//Print name
echo $p->getName();
//Print Address
echo $p->getAddress();
?>


Дээрх кодын гаралтын хэсэг нь: Gary Tom Unit 10 Nelson Bay, NSW 2030 Australia

Байгуулагч ба устгагч
Объект үүсгэхийг байгуулагч арга(method) гэх ба энэ нь хувьсагч функцуудыг ашиглахад бэлэн болгоход дуудагдаг. Үүний адилаар устгагч арга нь объектыг устгахад дуудаддаг.

Жишээ #2.
Энэ жишээнд байгаа код нь өөр аргаар гүйцэтгэгдэж байгаа боловч хэвлэгдэх үр дүн нь жишээ#1-тэй ижил болно. Энд байгуулагчийг ашиглан хэрхэн функ хувьсагчийг үүсгэхийг үзье.

<?php
class Person
{
    	// Properties or Instance variables
   	 private $name;
	private $address;

	//Default Constructor
	public function __construct()
	{
       		$this->name= "Gary Tom";
	   	$this->address= "Unit 10 Nelson Bay, NSW 2030 Australia";
   	}
      	//Default Destructor
   	function __destruct()
   	{
     		//This portion of the code will be executed when
	 	// we destroy an object explicitly.
   	}

  	//get methods are used to get the instance variables
	public function getName()
	{
       		return $this->name;
    	}
	public function getAddress()
	{
        		return $this->address;
    	}
}// end of class

//create a object of Person class
$p = new Person();
//Print name
echo $p->getName();
//Print Address
echo $p->getAddress();
?>


Энэ кодын гаралт нь жишээ#1-тэй ижил байна: Gary Tom Unit 10 Nelson Bay, NSW 2030 Australia
Удамшил
Нэрнээс үзвэл удамшилтын гол зарчим нь хүү класс нь эх классаас аргуудыг нь удимшдаг ба аргууд нь эх кодоороо гүйцэтгэгдэнэ.

Жишээ#3

Энэ жишээнд, Бид Person классаас Student классыг удимшснаар авсан. Дэд класс Student нь printMe арга болон түүний хувьсагч функцуудыг Person классаас удимшсан. Person классын printMe арга нь Student класс дээр ижил нэрээр дахин биччигдсэн. Хэрэв арга нь эх болон хүү класс хоёуланд нь ижил нэртэ байвал хүү классын объект нь 2 янзын ижил модультай байна. Энэ нөхцөлд хүү классын арга(method) нь эх классын аргыг хүчингүй болгодог. Энийг хүчингүй болгох арга гэж нэрлэдэг. Бид Student объектын printMe аргыг дуудахад энэ нь Student-ын printMe дуудах ба Person-классын printMe-г дуудахгүй. Сануулж хэлэхэд Person классын бүх өгөгдөл Student классаас дуудагдах боломжтой байдаг.

<?php
class Person
{
    	// Properties or Instance variables
    	private $name;
	private $address;

   	//Function to print Instance variables
   	public function printMe()
   	{
   		echo $this->name.", ".$this->address;
   	}
}// end of Person class

//Student class, inherits from Person class
class Student extends Person
{
	//Instance variables, remember that name and address is inherited from Person
	private $program;

	//Default Constructor
	public function __construct()
	{
       		$this->name= "Gary Tom";
	   	$this->address= "Unit 10 Nelson Bay NSW 2030 Australia";
	   	$this->program= "Masters in IT";
   	}

   	public function printMe()
   	{
   		echo $this->name.", ".$this->address.", ".$this->program;
   	}
}// end of Student class

//create a object of Person class
$s = new Student();
//Print s
$s->printMe();
?>


Гарах үр дүн нь : Gary Tom, Unit 10 Nelson Bay NSW 2030 Australia, Masters in IT
Энэ хичээлээр класс ба объектыг тухай жоохон зүйлийг заахыг хичээлээ. Бүтэн хавсралтыг үзэх бол дараах линкээр холбогдоно уу

Advertisements

3 thoughts on “Класс ба Объект

  1. WordPress дээр мэдээгээ PDF-ээр татаж авдаг Plugin суулгаад өгөөч PDF файлаар хадгалж авахыг хүсэж байна. Амжилт хүсье.

Хариулт үлдээх

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Өөрчлөх )

Twitter picture

You are commenting using your Twitter account. Log Out / Өөрчлөх )

Facebook photo

You are commenting using your Facebook account. Log Out / Өөрчлөх )

Google+ photo

You are commenting using your Google+ account. Log Out / Өөрчлөх )

Connecting to %s