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

11. Мұралау. Рұқсат модификаторлары. Интерфейстер.

Модификаторлар public және private әдістерін көрсетілуін қамтамасыз ете алады. Онымен қоса олардың virtual және abstract екендігн анықтай алады. C# тілінде модификатордың көптеген түрі анықталған.

Рұқсат модификаторлары.

Модификатор

Сипаттамасы

Public

Элемент кез келген баска кодта көрінеді.

Protected

Элемент тек кез келген туынды типке көрінеді.

Internal

Элемент тек шектелген құрылымда көрінеді.

Private

Элемент тек өзі байланысты тип шегінде көрсетіледі.

Protected interval

Элемент тек шектелген құрылымда және кез келген туынды тип кодында көрінеді

Егер қосылған тип бар болатын болса, ол сыртқы тип мүшелерінің бәріне кіруге рұқсаты бар.

Басқа қосымша модификаторлар

Модификатор

Сипаттамасы

New

Бұл мүше сол сигнатурамен мұраланған мүшені көрсетпейді

Static

Бұл мүше нақты клас экземплярымен байланысты емес

Virtual

Мүше мұрагерлік кластарда кайта анықтауы мүмкін.

Abstract

Сигнатураны анықтайтынғ бірақ іске асыруды жасамайтын виртиалды мүше

Override

Базалық кластың мұраланған виртуалды немесе абстракты мүшесін қайта анықтайды.

Sealed

Басқа кластарға осы кластан мұралауға болмайтынын айтады.

Extern

Бұл мүше басқа тілде,сыртқы түрде жасалған

Интерфейстер

Объектіге бағытталған тілдер интерфейстерді қолдана алатындығына байланысты біз С# программалау тіліндегі интерфейстерді іске асруды қарастырайық. Біз IDisposable интерфейс қарастырайық.

Егер класс Dispose() әдісін іске асыруын хабарлағысы келсе, онда ол IDisposable интерфейсін іске асыруы керек, C# терминінде ол IDisposable мұраланады деп есептеледі.

Интерфейсті анықтау және іске асыру.

Код атын интерфейс екенін түсіну үшін келісім бойынша I әрпінен бастаймыз.

Мысалы сіз жазып шығарған код арқылы банктік ақша алмасуына арналған. Кез келген осындай код IBankAccount интерфейсін іске асыруы міндетті. Бұл интерфейс арқала әр түрлі шоттардың кластарын анықтауға жол ашады.

Туынды интерфейстер

Интерфейстер класстар сияқты бір бірі арқылы мұралана алады.

12. Жалпылау. Жалпылауға шолу. Жалпыланған кластар құру.

Жалпылау – бұл параметрлі тип. Төменде жалпылау класын хабарлау-ң жалпы формасы көрсетілген:

class класс_аты<тип_параметр-ң_тізімі> { // ...

Ал былай жалпылау класқа сілтеме жібреу синтаксисі көрсетілген:

класс_аты<тип_аргумент-ң_тізімі> айнымалы_аты =

new класс_аты< тип_параметр-ң_тізімі > (тип_аргумент-ң_тізімі);

Мысалдар келтірсек:

namespace ConsoleApplication1

// Т параметрі бар жалпылау класын құрайық

class MyObj<T>

{

T obj,

public MyObj(T obj)

{

this.obj = obj;

}

public void objectType()

{

Console.WriteLine("Тип объекта: " + typeof(T));

}

}

// Бірнеше параметрі бар жалпылау класы

class MyObjects<T, V, E>

{

T obj1;

V obj2;

E obj3;

public MyObjects(T obj1, V obj2, E obj3)

{

this.obj1 = obj1;

this.obj2 = obj2;

this.obj3 = obj3;

}

public void objectsType()

{

Console.WriteLine("\nТип объекта 1: " + typeof(T)+

"\nТип объекта 2: " + typeof(V) +

"\nТип объекта 3: " + typeof(E));

}

}

class Program

{

static void Main()

{

// int жалпыланған клас-ң экземпляры

MyObj<int> obj1 = new MyObj<int>(25);

obj1.objectType();

MyObjects<string, byte, decimal> obj2 = new MyObjects<string, byte, decimal>("Alex",26,12.333m);

obj2.objectsType();

Console.ReadLine();

}

}

}

MyObj класы үшін аргумент типі көрсетілгенде, м/лы, int н/е string, онда С#-да құрастылылған(сконструированный) д.а. тип құрылады. Сон.қат., MyObj<int> жабық құрастырылған тип болып табылады. С/бі, шынайы келгенде, MyObj<T> сияқты жалпыланған тип-абстракция. Нақты вариант құрылғаннан кейін, м/ға MyObj<int>, нақты тип құрылады. Ал MyObj<T> сияқты конструкция, С#-та ашық құрастырылған, с/бі онда int секәлдә нақты тип емес, Т параметр типі көрсетіледі.

Ашық тип деп аргумент параметр типі н/е оны өзіне қосатын параметр типі н/е кез келген жалпыланған тип саналады. Ал ашық типке жатпайтын кез келген тип жабық тип боп есептеледі. Құрастырылған тип д-міз тип-ң барлық аргументі көрсетілген жалыпланған тип.

Тағы да бір жағдай. Мынадай сұрақ тууы мүмкін: MyObj жалпылау класы-ң дәл осындай функционалдық мүмкіндік-н жалпылаусыз-ақ алуға болады, жай ғана объектті дерек-р типі ретінде көрсетіп, типті тиісті келтіруді орындау арқылы. Онда MyObj класын жалпылаудан не пайда? Жалпылау автоматты түрде MyObj класына қатысты барлық операция-ң типтік қауіпсіздігін қамтамасыз етеді.

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