Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дріс 13.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
189.44 Кб
Скачать

Кластар жиынтығы. Қасиеті. Унарлық және бинарлық операторлар.

C# элементтерді сақтайтын кластар – бұл System.Array массиві. Бірақ класс – массив бір ғана дайын класс болып есептелінбейді. Деректердің дайын түрлері System.Collections аймағында анықталған. Мысалы:

ArrayList - өлшемдері тез өзгеріп отыратын массивтер үшін қолданылады. IList,ICollection,IEnumerable,ICloneable интерфейстерін таратады.

Stack – кәдімгі стек. ICollection,Ienumerable таратады.

Queue – стандартты кезек (FIFO – бірінші келді, бірінші кетті). IList,ICollection,IEnumerable,ICloneable интерфейстерін таратады.

Кластар жиынтығының жұмыс істеуі ұқсас болады. Мысалы: ArrayList кластар жиынтығының жұмыс істеуін қарастырайық.

using System;

using System.Collections;

class Man

{

public string name;

public string surname;

public Man(string name,string surname){

this.name=name;

this.surname=surname;

}

public void Show(){

Console.WriteLine("Аты={0} Фамилия={1}",name,surname);

}

}

class Sample

{

static void Main()

{

try

{

ArrayList ar = new ArrayList();

ar.Add(new Man("Аділ","Асқаров")); // элементті қосу

ar.Add(new Man("1","2"));

foreach(Man b in ar){

b.Show();

}

Console.WriteLine("\n\n");

ar.RemoveAt(0);// элементті өшіру

foreach(Man b in ar){

b.Show();

}

}

catch(Exception ex)

{

Console.WriteLine(ex.Message);

}

Console.Read();

}

}

Қасиет.

Қасиет - бұл класстар, құрылымдар және интерфейстер мүшесі, яғни қатынас функциясы (accessors) арқылы жабық өрістер мәндерін есептейді, оқиды және жазады.

.Net Runtime класс функцияларын қасиет атымен байланыстыратын таратылуларды қосымша метадеректер арқылы орындайды. Осыған байланысты бір тілдерде қасиет қасиет ретінде, ал енді біреулерінде жай класса функциялары ретінде көрінеді.

Қатынас функциялары

Қасиеттерді хабарлау кезінде программалық кодтың бір немесе екі өрісін көрсету керек. Бұлар қатынас функциялары (accessors) деп аталады. Қатынас функциялары оқиды және қасиеттің жаңа мәнін береді.

class SomeClass

{

// Өріс

int size;

// Қасиет

public int Size

{

// Оқу функциясы

get

{

return size;

}

// Жазу функциясы

set

{

// value – арнайы айнымалы,

// меншіктелу ұзындығынан тұрады;

// value түрі қасиет түрімен сәйкес келеді

size = value;

}

}

}

class Test

{

static void Main()

{

SomeClass sc = new SomeClass();

Console.WriteLine(sc.Size); // get функциясы

sc.Size = 100; // set функциясы

Console.WriteLine(sc.Size); // get функциясы

}

}

Шектеу

get функциясы мәнді қайтарады немесе мән бергізбейді, себебі set функциясының ішінде локальдық айнымалы value қолдануға болмайды.

Қасиет және мұрагерлік

Қасиет те класс функциясы сияқты модификаторлар virtual, override және abstract хабарлануы мүмкін. Модификаторлар хабарлау қасиетін қосып екі қатынас функциясына таратады. Хабарлау кезінде туынды класс қасиеті сол атпен қалады, ал негізгі класс қасиеті жасырынады.

Полиморфтік қасиет мысалы

class SomeClass

{

// Өріс

string name;

// Қасиет

virtual public string Name

{

// Оқу функциясы

get

{

return name != null ? name : "Not avaiable";

}

// Жазу функциясы

set

{

name = value;

}

}

}

class SomeClassD : SomeClass

{

// Өріс

string name;

// Қасиет

override public string Name

{

// Оқу функциясы

get

{

return name != null ? name : "Not avaiable yet";

}

// Жазу функциясы

set

{

name = value.ToUpper();

}

}

}

class Test

{

static void Main()

{

SomeClass sc1 = new SomeClass();

SomeClass sc2 = new SomeClassD();

Console.WriteLine("sc1: {0}", sc1.Name);

Console.WriteLine("sc2: {0}", sc2.Name);

sc1.Name = "Hello";

sc2.Name = "Hello";

Console.WriteLine("sc1: {0}", sc1.Name);

Console.WriteLine("sc2: {0}", sc2.Name);

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]