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

9. Жекеленген кластар. Статикалық кластар. Object класы.

Жекеленген кластар

Partial ( жеке) кілттік сөзі классты,құрылымды,интерфейсті анықтауға мүмкіндік береді.

Partial кілттік сөзі класстың, құрылымның, интерфейстің алдында орналасады.

Класстың сипатталуында төменде келтірілген кілттік сөздер қолданылады:

-public

-private

-protected

-internal

-abstract

-sealed

-new

-жалпы шектеулер

Енгізілен бөліктер де солай орындалады, Partial кілттік сөзі class кілттік сөзімен әсер етеді.

//BigClassPart1.cs

[ CustomAttribute]

Partial class TheBigClass : TheBigBaseClass, IBigClass

{

Public void MethodOne ( )

{

}

}

//BigClassPart2.cs

[ AnotherAttribute]

Partial class TheBigClass : IotherBigClass

{

Public void MethodTwo ( )

[ CustomAttribute]

[AnotherAttribute]

Partial class TheBigClass ,IBigClass, IotherBigClass

{

Public void MethodOne( )

{

}

Public void MethodTwo( )

{

}

}

Статикалық кластар

Алдыңғы бөлімдерде біз статикалық конструкторлар мен олардың статикалық ауыспалы мүшелерінің қалай инициалдауға рұқсат беретіні туралы қарастырдық. Егер класс статикалық әдістер мен қасиеттерден ғана тұратын болса, онда класс өздігінен статикалық класс бола алады. Мұдай кластың көшірмесін жасау мүмкін емес. Егер static кілттік сөзін класты жариялаған кезде көрсететін болсақ, онда бұл класқа ешқандай статикалық мүшелердің қосылмауына компилятор гарантия береді. Кері жағдайда компиляция қателік табатын болады. Бұл сонымен қатар, осы кластың көшірмесінің болмайтынына гарантия береді. Статикалық класс келесі түрде болады:

Static class StaticUtilities

  • {

Public static void HelperMethod()

{

}

}

HelperMethod() функциясын шақыру үшін StaticUtilities типінің объектісі қажет емес. Шақыру кезінде типтің аты аталады:

StaticUtilities.HelperMethod();

Object класы

Алдында айтып өткендей, System.Object класы басынан .NET кластарын мұралайды. Егер жаңа класты ашу кезінде базалық класс көрсетілмесе, компилятор автоматты түрде оның Object класынан мұраланып тұр деп есептейді. Бұл бөлімде мұралау қолданбайды дегенмен, сіздер көріп тұрған барлық кластар негізінде Object класынан мұраланып тұр. (жоғарыда көрсетілгендей құрылым үшін мұралау түзу емес. Құрылым System.ValueType класы арқылы мұраланып тұр, ал ол өз кезегінде System.Object класы арқылы мұраланып тұр.)

Практикалық мәні: сіз анықтайтын әдістер мен қасиеттерден бөлек, Object класында анықталған жалпы және қорғалған әдістер мен қасиеттер пайда болады. Бұл әдістер барлық анықталған кластарда қатысады.

10. Мұралау. Мұралау типі. Іске асыруды (реализация) мұралау.

Объектіге бағытталған программалау тілінде мұралаудың екі түрі бар: іске асыруды мұралау және интерфейсті мұралау.

1. іске асыруды мұралау дегеніміз тип базалық типтен барлық жол мүшелері мен функция мүшелерін ала отырып іске асатын мұралау түрі. Іске асыруды мұралау кезінде туынды тип базалық типтің әрбір функциясына адаптацияланады. Мұрагерліктің бұл типі бар типке функциональдылық қасиетін қосу үшін қажет болғанда пайдаланылады. Онымен қоса, бірнеше байланысқан типтер ортақ функциональдылық көлемін бөліп тұрған кезде осы типті қолданған қолайлы.

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

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

  • Құрылымдар system.ValueType арқылы мұраланады. Олар кез келген көлемді интерфейсті мұрагерлей алады.

  • Кластар әрқашан сіз таңдаған белгілі бір класты мұралайды. Онымен қоса олар кез келген көлемді интерфейсті мұрагерлей алады.

Іске асыруды мұралау.Клас басқа кластан мұраланатынын хабарлау үшін келесі синтаксис қолданылады:

Class мұраланған класс:Базалық класс

{ // мәліметтер-мүшесі және функция-мүшелер }

Егер клас интерфейстарді мұраласа, онда базалық кластың және интерфейстердің тізімі үтір арқылы орналасады:

Public class MyDerivedClass: MyBaseClass, IInterface1, IInterface2

{ // және т.б. }

Егер класты анықтауды базалық класс көрсетілмеген болса, онда C# компиляторы базалық класс System.Object деп шешеді. Сол себепті келесі код фрагменттері өзара эквивалетті болады:

  1. Class Myclass: Object // System.Object арқылы мұраланады.

{ // және т.б. }

  1. Class Myclass: Object // System.Object арқылы мұраланады.

{ // және т.б. }

Object класына бағытталуы үшін Object кілттік сөзін қолданыңыз, ол Visual Studio .NET интелектулды редакторларымен анықталады.

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