Dərslər və obyektlər

C ++, Obyekt Odaklı Proqramlaşdırma dilidir. Obyekt Odaklı Proqramlaşdırmanın (OOP) əsas anlayışları bunlardır dərsləri obyektləri.

Bir sinif, obyekt yaratmaq üçün bir plandır. Təsvirini təqdim edir üzv dəyişənlər və bu sinif obyektlərinin davranışını həyata keçirir (üzv funksiyaları). Siniflər və obyektlər real dünya obyektləri ilə müqayisə edilə bilər. Həyatda eyni növ bir çox fərdi varlıq var. Məsələn, Şəxs ad, soyad və doğum tarixindən ibarət olan ilə müqayisə edilə bilər sinif. Eyni zamanda müqayisə edilə bilən bir çox fərd var obyektləri. Bir sinif, obyekt yaratmaq üçün yalnız şablon təmin edən mücərrəd bir məlumat quruluşudur. Ancaq bir obyekt, öz xüsusiyyətləri olan fərdi bir varlıqdır.

İstifadə edərək bir sinif təyin edə bilərsiniz sinif açar söz. Sinif tərifi yalnız yeni obyektlərin yaradılması üçün bir şablondur. Sinif tərifi yeni məlumat növünün quruluşunu, davranışını təsvir edir. Budur yaratmaq nümunəsi Şəxs sinif:

class Person
{
public://access control
	string firstName;//first name of a person
	string lastName;//last name of a person
	tm dateOfBirth;//date of birth
};

Bu, 3 məlumat üzvü olan bir sinifin sadə bir nümunəsidir. Bunu aşağıdakı şəkildə təsvir etmək olar:

Pin

Giriş növü, məlumat üzvlərinə və üzv funksiyalarına giriş imkanını müəyyənləşdirir. Ictimai giriş növü, məlumat üzvlərinə sinif xaricindən daxil olmaq imkanı verir. Digər 2 giriş növü var: müdafiə özəl. Xüsusi giriş növü, bir sinif xaricindən məlumat üzvlərinə və üzv funksiyalarına giriş məhdudlaşdırır. Giriş növləri “Dərslərdə giriş nəzarəti” ndə ətraflı şəkildə təsvir edilmişdir.

Tərifi obyektləri müxtəlif növ dəyişənlərin tərifi ilə eyni şəkildə aparılır. Obyekt üçün sinif və identifikator adından istifadə edilir:

Person person1;//declare a Person object with name "person1"

Üzv funksiyası bir sinif daxilində elan edilir. İstənilən statik olmayan üzv funksiyası bu sinifin bütün statik olmayan üzv üzvlərinə və üzv funksiyalarına daxil ola bilər. Bu, sinifin üzv funksiyasını yaratmağın bir nümunəsidir Şəxs:
void printPerson()
{
	cout << "First name " << firstName << endl;
	cout << "Last name " << lastName << endl;
	cout << "Year of Birth " << dateOfBirth.tm_year << endl;
}

Bu üzv funksiyası fərdi bir şəxs haqqında məlumat yazdırır.

Bir sinifin ümumi məlumat üzvləri birbaşa istifadə edərək əldə edilə bilər nöqtə operator (.):

Person person1;//declare a Person object with name "person1"
	
person1.firstName = "Smith";//set first name of person1 to Smith
person1.lastName = "James";//set last name of person1 to James
person1.dateOfBirth.tm_year = 1980;//set  year of birth of person1 to 1980

Açıq üzv funksiyaları nöqtə operatorundan da istifadə olunur:
//call printPerson member function
person1.printPerson();

Bu proqram aşağıdakı nəticəni təmin edir:

Ad Smith

Soyadı James

Doğum ili 1980

Obyektlərin yaradılması sinifdən istifadə etməklə həyata keçirilir inşaatçılar. Bir konstruktor fərdi bir obyekt yaratmaq məqsədi olan bir üzv funksiyası ilə müqayisə edilə bilər. Qurucunun adı həmişə sinifin adı ilə eynidir:

//constructor of individual person
Person(string fName, string lName, int yearOfBirth)
{
	firstName = fName;//set data members
	lastName = lName;//according to constructor's
	dateOfBirth.tm_year = yearOfBirth;//parameters
}

İnşaatçılar “Konstruktor və Dağıdıcı” mövzusunda ətraflı şəkildə müzakirə olunur.

Bir sinifin hər bir obyektinin özünə gizli bir göstəricisi var - bu. C ++ istifadə edir bu məlumat üzvlərinə və obyektlərin üzv funksiyalarına daxil olmaq üçün göstərici.

Dərslərdə statik məlumat üzvləri və üzv funksiyaları ola bilər. Sinifin bütün obyektləri üçün statik məlumat üzvü üçün məlumatların yalnız bir nüsxəsi saxlanılır. Statik üzv funksiyaları sinif əhatəsinə malikdir. Sınıfın yalnız statik üzvlərindən istifadə edə bilərlər:

static int x;//declare static data member
static int getX()//static function to get x value
{
	return x;
}

Artıq statik məlumat üzvünə və statik üzv funksiyasına sinif xaricindən daxil ola bilərsiniz:

Person::x = 10;//set value of x
cout << Person::getX() << endl;//call static function

Statik üzv funksiyaları gizli deyil bu mübahisə. Bu səbəbdən yalnız statik sinif üzvlərindən istifadə edə bilərlər.

Cisimlərlə işləmək üçün göstəricilərdən istifadə edə bilərsiniz. Bir obyektə bir göstəricinin tərifi digər məlumat növləri ilə eyni şəkildə həyata keçirilir:

Person* person2;

Bu halda bu obyekt üçün yaddaş ayırmaq lazımdır. Bu sinifin konstruktorunu axtararaq edilir:
person2 = new Person("Moore", "Thomas", 1972);

Ok operatorunu istifadə edərək göstəricilər istifadə edildikdə məlumat üzvlərinə daxil ola bilərsiniz (->)
person2->printPerson();

Translate »