- •1. .Net архитектурасы.Net-ке бағытталған кодтын орындалуы және компиляциясы. Microsoft Intermediate Language (msil) тілінің артықшылықтары.
- •3. С# программалау тілінің негізі. Айнымалыларды жариялау. Айнымалыларды инициялизациялау олардың көріну облысы.
- •5. Консольді енгізу-шығару үшін System.Console-ді пайдалану. Процессор директивтері.
- •6. Объекті/ ж/е типтер. Структура және кластардың өзара айырмашылық/ы. Класс мүшелері.
- •8. Конструкторлар және статикалық конструкторлар. Тек оқуға рұқсат етілген өріс.
- •9. Жекеленген кластар. Статикалық кластар. Object класы.
- •10. Мұралау. Мұралау типі. Іске асыруды (реализация) мұралау.
- •11. Мұралау. Рұқсат модификаторлары. Интерфейстер.
- •12. Жалпылау. Жалпылауға шолу. Жалпыланған кластар құру.
- •13. Жалпыланған кластар құралдары. Жалпыланған интерфейстер.
- •14. Жалпыланған структуралар. Жалпыланған әдістер.
- •15. Массивтер және кортеждер. Жай массивтер. Көпөлшемді массивтер.
- •16. Тісті массивтер. Array класы.
- •17. Массивтер параметр ретінде. Тізім бойынша санау.
- •18. Кортеждер. Құрылымдық салыстыру.
- •20. Мәліметтердің қарапайым типтерін өзара өзгерту. Қаптама(boxing) құралдарымен мәндер типін сілтеме типке өзгерту.
- •21. Сілтеме типтерді келтіру арқылы өзгерту. Стандартты операцияларды қолданушы типтер үшін асыра жүктеу.
- •Vector структурасы
- •22. Келтіру операцияларын қолданушы типтерге қосу.
- •23. Делегаттар. Лямбда-өрнектер. Уақиғалар.
- •24. Сөз тіркесін құру. Жүйелі өрнектер.
- •25. Сөз тіркесін құру. Форматтаушы өрнектер.
- •26.Интерфейстер және коллекциялар типтері. Тізім, кезек және стектермен жұмыс.
- •27. Сортталған және жүйелі тізімдермен жұмыс. Жиындар мен сөздікті пайдалану.
- •29. Қателер және ерекшеліктер. Ерекшеліктерді өңдеу.
- •30. .Net ядросы. Деректер базасына қосылу. Команданы орындау.
14. Жалпыланған структуралар. Жалпыланған әдістер.
Жалпыланған структуралар жалпыланған класстарға өте ұқсас боп келеді.Бірақ Мұралану қасиеті болмайды.
Nullable<T> . Net Framework те жалпыланған структуралардың мысалы боп табылад.Деректер қорында және программалау тілінде сан мінездемесі бойынша әртүрлі боп келедіДеректер қорында null бола алады.C # та сан null бола алмайды.
Nullable<T> структурасы Жалпыланған Т типі структура болу керек шегін анықтайды.Т типіне жалғыз толлықтауыш боп ,анықталған Nullable<T>,hasvalue бульдік қатарынан тұрады,ол орнатылған мән бе әлде null –ға тең екенін анықтайды. Жалпыланған структуралар hasvalue және value типін оқу үшін қолжетімділікті анықтайды.Және де бірнеше операцияларды анықтайды. Nullable<T> -ны Т –ға келтіру операциясының жүктелуі анық,ол қателерді hasvalue false–қа тең болса,өңдей алады.Nullable<T> -ны Т –ға келтіру операциясының жүктелуі анық емес ,себібі ол әрқашанда ойдағыдай:
public struct Nullable<T>
where T:struct
{ public Nullable(T value)
{ this.hasvalue=True;
this.value=value;
}
private bool hasvalue;
public bool Hasvalue
{
get
{return hasvalue;}}
private T vaue;
public T Value
{
get
if(!hasvalue)
{throw new InvalidOperation (“no value”);}
return value;}}
public static explicit operator T(Nullable<T> value)
{return value.Value;}
public static implicit operator Nullable<T>(T value)
{return new Nullable<T>(value);}
Public overridge string ToString()
{if (!HasValue)
return String.Empty;
return this.value.Tostring();}}
Бұл мысалда, Nullable<T> көшірмесі Nullable<int> секілді құрылған.х айнымалысы енді int ретінде де қолдануға болады.Оған мағынасын меншіктеп кейбір есептерді шығаруда қолдануға болады.Мұндай әрекет Nullable<T> типіндегі операция арқасында мүмкін болды.
Жалпыланған әдістер.
Жалпыланған әдістерді жариялағанда, Жалпыланған типтер қолданылады. Жалпыланған әдістер жаллпыланбаған класс ішінде анықтала алады.
Swap <T> әдісі Т-ны жалпыланған тип ретінде анықтайды:
void swap <T>(ref T x,ref T y)
{t temp,temp=x;
temp =x;
x=y;
y=temp;}
жалпыланған әдіс нақты типтің жалпыланғанының орнына шақырылуы мүмкін:
int i=4;
int=5;
Swap <int >
(ref I ,ref j)
Жалпыланған әдістің мысалы:
Төменде коллекцияға барлық элементтерді жинау есебі кетірілген.
Жалпыланған әдістердің мүмкіндігін бағалау үшін Account класын пайдаланамыз.Ол Name және Balance қасиеттерін қамтиды.
Public class Account
{ public string Name{ get;private set;}
Public decimal Balance {get;private set ;}
Public Account (string name,Decial Balance)
{ this.Name=name;
This.Balance=balance;
}
Барлық есептер List <Account> есептеу тізіміне қосылады:
List <Account>:
Var accounts =newList <Account> ()
{new Account (“Christian”,1500),
new Account(“Stephane”,2200),
new Account (“Angela”,1800)};
15. Массивтер және кортеждер. Жай массивтер. Көпөлшемді массивтер.
Біртипті обьектілер жиынымен жұмыс істеу үшін коллекциялар және массивтер қолдануға болады. C # бағдарламасында массивтертерді хабарлау және қолдануы үшін арнайы ережелер қарастырылған. Бұл жерде массивтің ішіндегі элементтерді іріктеу және фильтрлеуде қолданылатын әдістерді көрсететін Array классы іске қосылады. Қайта санау (enoumerator) функциясы көмегімен массивтің барлық элементтері бойынша итерация жүргізуге болады. Сонымен қатар, .NET 4-те объектілер жиыны комбинациясы үшін қолданылатын Tuple (кортеж) жаңа типі пайда болды.
Қарапайым массивтер
Біртипті объектілер жиынымен жұмыс істеу барысында массивтерді қолдануға болады.
Массив – біртипті элементтердің жиынын құрайтын мәліметтер құрылымы.
Массивтің хабарлануы
Массив - соңынан тік жақшалар мен айнымалы аты қойылатын элементтердің типін анықтаумен хабарланады. Мысалы, толымды элементтер қолданылатын масситер келесі түрде беріледі.
int [] myArray;
Массивтің инициализациясы
Массив хабарлауынан кейін оның барлық элементтерін сақтайтын жад белгіленуі тиіс. Массив сілтемелі тип ретінде берілгендіктен, ол үшін жады үйіндіде жіктелуі тиіс. Бұл массивтегі элемент типі мен саны көрсетілетін new операциясы көмегімен жасалатын айнымалылар инициализациясымен орындалады. Массив мөлшерін келесі түрде жазуғa болады:
myArray = new int [4];
Осындай хабарлама мен инициализациядан кейін myArray айнымалысы үйінділерге жіктелген 4 толымды мәнге сілтеме жасайды. Массив мәндерін бірнеше жолда емес, тек бір жолда да көрсетуге және жариялауға болады :
Int [] myArray = new int [4];
Массив инициалтзаторы көмегімен массивтің әрбір элементіне мән беруге болады. Массив инициализаторы массив хабарланып болғанда емес, хабарлану барысында қолданылады.
Int []myArray = new int [4] {4, 7, 11, 2};
Егер сіз массив мәндерін тік жақша арқылы енгізсеңіз, онда сізге массив көлемін көрсетпесе де болады, себебі компилятор оны өзі анықтайды.
Int []myArray = new int {4, 7, 11, 2);
C # компиляторын қолдануда одан да қысқа форма бар. Массив хабарламасы мен мәндерін жүйелі жақша арқылы жазуға болады. Компиляторда реттелген код дәл алдынғыдай болады.
Int []myArray = {4, 7, 11, 2};
Массив элементтеріне рұқсат
Массив хабарланып инициализацияланғаннан кейін, оның элементтеріне индексатор (indexer) қолдануға болады. Массивтер тек қана бүтін санды индексаторларды қабылдайды.
Массивке рұқсат үшін элемент номері индексаторға жіберіледі. Индексатор бірінші элемент үшін әрдайым 0 санынан басталады. Индексаторға жібере алатын ең үлкен номер элементтердің жалпы қосындысынан 1-ді азайтқанға тең, себебі, номерлеу нольден басталған. Келесі мысалда myArray массиві төрт бүтін мәндермен хабарланып инициализациялануда. Элементтерге болады 0, 1, 2 және 3 индексатор мәндермен қолдануға болады.
int [] myArray = new int {4, 7, 11, 2};
int v1 = myArray [0]; //бірінші элементті оқу
int v2 = myArray [1]; //екінші элементті оқу.
myArray [3] = 44; // төртінші элементті өзгерту
Төменде келтірілгендей, массивтеггі элемент санын анықтау үшін Length қасиетін пайдалануға болады:
for = 0 (int i=0 ; i<myArray.Length ; i++)
{ Console.WriteLine (myArray [i]); }
Массив барлық элементтер бойынша өтуде for операторының орнына foreach операторын қолдану керек :
foreach (int val in myArray)
{ Console.WriteLine (val); }
Көп өлшемді массивтер
Қарапайым массивтер (бір өлшемді жалғыз бүтін мәнмен индекстелінеді. Көпөлшемді массив деп екі не одан көп бүтін сандармен индекстелінеді. 6.3 суретте үш жол үш бағаннан тұратын екіөлшемді массивтің математикалық мағынасы көрсетілген. Бірінші жол 1, 2 және 3 мәніне ие, ал үшіншісі- 7, 8 және 9.
Екіөлшемді массивтің математикалық мағынасы
С# тілінде екі өлшемді массивті жариялау үшін тік жақшаладың ішіне үтір қою керек. Массив әрбір өлшем мөлшерлерән нұсқаумен белгіленеді(ранг деп те атайды). Енді индексатордағы екі санды көрсету арқылы массив элементін шақыруға болады:
int [,] twodim = new int [3, 3];
twodim [0, 0] = 1;
twodim [0, 1] = 2;
twodim [0, 2] = 3;
twodim [1, 0] = 4;
twodim [1, 1] = 5;
twodim [1, 2] = 6;
twodim [2, 0] = 7;
twodim [2, 1] = 8;
twodim [2, 2] = 9;
Егер элемент саны алдын-ала белгіленген болса, онда екіөлшемді массивті массив индексаторын қолдану арқылы да инициалдауға болады. Массивті инициализациялауда әрбір жолы жеке-жеке жүйелі жақшаларға алынатын қос жүйелі жақшалар қолданылады.
int [,] twodim ={
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
}
Инициализаторды қолданған кезде оның әрбір элементі белгіленуі тиіс. Оны қалдырып кетуге болмайды.
Жүйелі жақшалардың ішіне екі үтір көрсетіп, үш өлшемді массив жариялауға болады :
Int [,,] threedim ={
{{1, 2}, {3, 4},
{{5, 6}, {7, 8},
{{9, 10}, {11, 12}}
};
Console.WriteLine (threedim [0, 1, 1]);
Кортеждер
Массивтер бір типті объектілерді жүйелесе, кортеждер әр түрлі типті объектілерді жүйелей алады. .NET 4-те кортеждердің фабрикасы қызметін атқаратын сегіз Tuple жалпылама классы және Tuple бір статистикалық классы анықталған. Әр түрлі мөлшерлі элементті қолдайтын Tuple жалпылама класстары әр түрлі болады: Tuple<T1> бір элементті, Tuple<T1, T2> екі элементтен тұрады.
Divide() методы кортеждің екі мүшесінің қайтуын көрсетеді - Tuple<int,int>. Жалпылама класстың параметрі мүшелердің типін анықтайды, біздің жағдайда екеуі де бүтін сан. Кортеж Tuple статистикалық классының Create() статистикалық методымен жасалған. Create() методының жалпылама параметрлері кортеждің жасалынып жатқан экземплярының типін анықтайды. Қайта жасалынған кортеж бөлінгіш нәтижесін қайтару үшін result және reminder айнымалыларымен инициализацияланады.
Public static<int,int> Divide(int dividend, int divisor)
{ Int result=dividend/divisor;
Int reminder=dividend%divisor;
Return Tuple.Create<int,int>(result,reminder); }
Келесі кодта Divide() методын шақыру көрсеілген. Кортеж элементтері Item1 және Item2 ерекшеліктері арқылы ғана қолжетімді.
Var result=Divide(5,2);
Console.WriteLine(“resultat delenia: {0}, ostatok:{1}”,
Result.Item1, result.Item2);
Кортежге енгізілетін элемент саны сегізден көп болған жағдайда сегіз параметрлі Tuple классының анықтамасын қолдануға болады. Кортеждің өзі берілетін соңғы параметр TRest деп аталады. Осылайша параметр санына шектеусіз кортеждер жасауға болады.
Бұл функционалдылықты көрсету үшін келесідей код жазамыз:
Public class Tuple<T1,T2,T3,T5,T6,T7,TRest>
Мұнда шаблонның соңғы параметрі кортеждің типі болып табылады, осылайша кез келген көлемді кортеж жасауға болады:
Var tuple=Tuple.create<string,string,string,int,int,int,double,
Tule<int,int>>(“Stephanie”,”Alina”,”Nagel”,2009,6,2,1,37,
Tuple.create<int,int>(52,3490));
