Да си припомним: какво са класовете и обектите?



страница2/84
Дата03.01.2022
Размер0.54 Mb.
#112941
ТипПрограма
1   2   3   4   5   6   7   8   9   ...   84
Класове
Свързани:
Изпитна тема1, Изпитна тема2
Клас (class) в ООП наричаме описание (спецификация) на даден клас обекти от реал­ността. Класът представлява шаблон, който описва видо­вете състояния и поведението на конкретните обекти (екземплярите), които биват създа­вани от този клас (шаблон).

Обект (object) наричаме екземпляр създаден по дефиницията (описание­то) на даден клас. Когато един обект е създаден по описанието, което един клас дефинира, казваме, че обектът е от тип "името на този клас".

Например, ако имаме клас Dog, описващ някакви характеристики на куче от реалния свят, казваме, че обектите, които са създадени по описанието на този клас (например кученцата "Шаро" и "Рекс") са от тип класa Dog. Това означение е същото, както когато казваме, че низът "some string" е от класа String. Разликата е, че обектът от тип Dog е екземпляр от клас, който не е част от библио­теката с класове на .NET Framework, а е дефиниран от самите нас.

Какво съдържа един клас?

Всеки клас съдържа дефиниция на това какви данни трябва да се съдържат в един обект, за да се опише състоянието му. Обектът (конкретния екземпляр от този клас) съдържа самите данни. Тези данни дефинират състоянието му.

Освен състоянието, в класа също се описва и поведението на обектите. Поведението се изразява в действията, които могат да бъдат извършвани от обектите. Средството на ООП, чрез което можем да описваме поведе­нието на обектите от даден клас, е декларирането на методи в класа.

Елементи на класа

Сега ще изброим основните елементи на един клас, а по-късно ще разгле­да­ме подробно всеки един от тях.

Основните елементи на класовете в C# са следните:

-     Декларация на класа (class declaration) – това е редът, на който декларираме името на класа. Например:

public class Dog

-     Тяло на клас – по подобие на методите, класовете също имат част, която следва декларацията им, оградена с фигурни скоби – "{" и "}" между които се намира съдържанието на класа. Тя се нарича тяло на класа. Елементите на класа, които се описват в тялото му са изброени в следващите точки.

public class Dog

{

// ... The body of the class comes here ...



}

-     Конструктор (constructor) – това е псевдометод, който се из­пол­зва за създа­ване на нови обекти. Така изглежда един конструктор:

public Dog()

{

// ... Some code ...



}

-     Полета (fields) – те са променливи, декларирани в класа (някъде в лите­ратурата се срещат като член-променливи). В тях се пазят данни, които отразяват състоянието на обекта и са нужни за работата на методите на класа. Стойността, която се пази в полетата, отразява конкретното състояние на дадения обект, но съществуват и такива полета, наречени статични, които са общи за всички обекти.

// Field definition

private string name;



-     Свойства (properties) – така наричаме характеристиките на даден клас. Обикновено стойността на тези характеристики се пази в полета. Подобно на полетата, свойствата могат да бъдат притежа­вани само от конкретен обект или да са споделени между всички обекти от тип даден клас.

// Property definition

private string Name { get; set; }



-     Методи (methods) – от главата "Методи", знаем, че методите представляват именувани блокове програмен код. Те извършват някакви действия и чрез тях реализират поведението на обектите от този клас. В методите се изпълняват алгоритмите и се обработват данните на обекта.

Ето как изглежда един клас, който сме дефинирали сами и който прите­жа­ва елементите, които описахме току-що:



// Class declaration

public class Dog

{ // Opening brace of the class body

 

// Field declaration



private string name;

 

// Constructor declaration



public Dog()

{

this.name = "Balkan";



}

 

// Another constructor declaration



public Dog(string name)

{

this.name = name;



}

 

// Property declaration



public string Name

{

get { return name; }



set { name = value; }

}

 



// Method declaration

public void Bark()

{

Console.WriteLine("{0} said: Wow-wow!", name);



}

} // Closing brace of the class body



За момента няма да обясняваме в по-големи детайли изложения код, тъй като подробна информация ще бъде дадена при обяснението как се декларира всеки един от елементите на класа.

Използване на класове и обекти

В главата "Създаване и използване на обекти" видяхме подробно как се създават нови обекти от даден клас и как могат да се използват. Сега накратко ще си припомним как ставаше това.

Как да използваме дефиниран от нас клас?

За да можем да използваме някой клас, първо трябва да създадем обект от него. За целта използваме ключовата дума new в комбинация с някой от конструкторите на класа. Това ще създаде обект от дадения клас (тип).

За да можем да манипулираме новосъздадения обект, ще трябва да го присвоим на променлива от типа на неговия клас. По този начин в тази променлива ще бъде запазена връзка (референция) към него.

Чрез променливата, използвайки точкова нотация, можем да извикваме методите, свойствата на обекта, както и да достъпваме поле­тата (член-променливите) и свойствата му.

Пример – кучешка среща

Нека вземем примера от предходната секция на тази глава, където де­фи­ни­рахме класа Dog, който описва куче, и добавим метод Main() към него. В него ще онагледим казаното току-що:

static void Main()

{

string firstDogName = null;



Console.WriteLine("Write first dog name: ");

firstDogName = Console.ReadLine();

 

// Using a constructor to create a dog with specified name



Dog firstDog = new Dog(firstDogName);

 

// Using a constructor to create a dog wit a default name



Dog secondDog = new Dog();

 

Console.WriteLine("Write second dog name: ");



string secondDogName = Console.ReadLine();

 

// Using property to set the name of the dog



secondDog.Name = secondDogName;

 

// Creating a dog with a default name



Dog thirdDog = new Dog();

 

Dog[] dogs = new Dog[] { firstDog, secondDog, thirdDog };



 

foreach (Dog dog in dogs)

{

dog.Bark();



}

}


Съответно изходът от изпълнението ще бъде следният:

Write first dog name:



Сподели с приятели:
1   2   3   4   5   6   7   8   9   ...   84




©obuch.info 2024
отнасят до администрацията

    Начална страница