Шығыс Қазақстан облысының білім басқармасы


[ спецификаторлар ] типі қасиет_аты



Pdf көрінісі
бет38/180
Дата06.01.2022
өлшемі4,77 Mb.
#15026
1   ...   34   35   36   37   38   39   40   41   ...   180
спецификаторлар ] типі қасиет_аты 
{ 
[ get қатынасу_коды ] 
[ set қатынасу_коды ] 
} 
Қасиеттерді пайдалану кезінде, автоматты түрде онда көрсетілген оқу (get) және орнат
у (set) блоктары шақырылады. 
Мұнда не get, не set бөлігі болмауы мүмкін, бірақ екеуінің де бірден жоқ болуы мүмкі
н емес. Егер set бөлігі болмаса, қасиет тек оқылады (read-only), ал егер get бөлігі болмаса –
 тек жазылады (write-only). 
 
2.4 тақырып. Полиморфизм 
 
Объекті  бағдарланған  программалау  -  қазіргі  программалау  тілдерінің  негізгі 
технологиясы. Бұл технологияда негізгі  мүше объект  болып  табылады және программаның 
басқа  бөлігінен  тәуелсіз,  кейбір  функционалдық  есептерін  шешу  үшін  оның  бөліктері  де 
жеткілікті.  Соңғы  кезде  объекті  бағдарланған  технология  негізінде  кез  келген  Windows- 
қосымшаны  немесе  Web-қосымшаны  құруға  арналған  жалпы  платформа  қажет  болды.  Бұл 
мәселені  Microsoft  корпорациясының  програмистері  шешті  және  жаңа  технологиялар 
мүмкіндіктері қолданылатын .Net платформасын құрды. 
Net  Framework  платформасы  –қолданбалы  программаларды  құруға  және  орындауға 
арналған  базалық  платформа.  Платформа  негізгі  екі  компоненттен  тұрады:  жалпы  тілді 
орындау  ортасы  және  класстар  кітапханасы.  Microsoft  .Net  платформасында  жиырмадан 
астам  программалау  тілі(C++,  Visual  Basic,  C#,  C#  )  қолданылады  және  кітапханадағы  бір 
тілдің модулі екінші тілге қолдану мүмкіндігі бар. 
Ақпараттық  жүйелер  мамандығының  «Программалау  технологиясы»  курсының 
объекті  бағдарланған  программалау  бөлімінде  С#  тілінде  программалау  негіздері 
оқытылады.  Бұл  курстың  негізгі  мақсаты  -  объекті  бағдарланған  программалаудың  негізгі 
принциптерін,  технологиясын,  құрылымы  мен  моделдерін  оқыту.  С#  тілінде  жазылған 
программа  мәтіндік  файл  болып  табылады  және  тіл  операторларынан,  түсініктемелерден 
тұрады.  С#  тілі  объекті  бағдарланған  программалау  тілдерінің  тобына  жатады.  Объекті 
бағдарланған  программалау  тілдерінің  негізгі  концепциясы  –  құрылатын  қосымша  өзара 
байланысқан негізгі объектілерден тұрады. Объектілер дегеніміз бірнеше рет қолданылатын 
программалық  модулдерден,  яғни  байланысқан  мәліметтер  мен  процедуралардан  тұрады. 
Күрделі  программалар  бірнеше  біртипті  объектілерді  қолдануы  мүмкін.  Бұл  жағдайда  әр 
объект  үшін  әдістер  мен  айнымалылар  туралы  информацияны  жазу  тиімсіз.  Бұл  мақсатқа 
объектілер  класы  деген  түсінік  енгізілген.  Класс  дегеніміз  біртипті  объектілерге  арналған 
шаблон және объектілі  айнымалылар  типтері  мен  әдістерін  анықтайтын  информациялардан 
тұрады.  Кез  келген  программалық  әрекет  класс  әдісінің  ішінде  орындалады.  Объектіге 
бағдарланған 
программалауда 
әрекет 
объектіге 
хабарларды 
беру 
арқылы 
инициализацияланады.  Хабар  әрекетті  жүзеге  асыру  үшін  сұраулардан  тұрады.  Хабарға 
реакция  ретінде  алушы  қабылданған  сұрауды  қанағаттандыру  үшін  кейбір  әдісті  жібереді. 
Объектіге бағдарланған тәсілдің принциптері: 

 
Барлық  объектілер  кластардың  экземплярлары  болып  табылады.  Бір  кластың 
барлық объектілері бірдей хабардың жауабына бір ғана әдісті қолданады. 


40 
 

 
Мұралау  принципі.  Кластар  қасиеттерін  мұралауда  және  иерархиялық 
құрылымда ұйымдастырылады. Туынды класс аталымды кластың атрибуттарын мұралайды. 

 
Полиморфизм принципі. Объектілер тек өзіне лайықты түрдегі бір ғана хабарға 
жауап береді. 
Объектіге бағдарланған тәсілдің негізгі идеялары келесі ережелерге тіреледі: 
-программа  кейбір  нақты  процестің,  дүниенің  нақты  бөлігінің  моделі  болып 
табылады; 
-нақты  дүниенің  немесе  оның  бөлігінің  моделі  объектілердің  бір-бірімен  өзара 
әсерінің жиынтығы сияқты сипатталанады; 
-объектінің  күйін  анықтайтын  шамалардың  параметрінің  жиынтығымен  және  объект 
орындайтын операциялардың (әрекеттердің) жиынтығымен сипатталынады; 
-объектілердің  арасындағы  өзара  әсер  бір  объектіден  екіншіге  арнайы  хабарды 
жіберумен жүзеге асырылады; 
-объектімен  алынған  хабар  белгілі  әрекетті  орындауды  талап  етеді,  мысалы, 
объектінің күйін өзгерту; 
-  параметрлердің  бір  ғана  жиынтығымен  орындауға  қабілетті  объектілер  бір  типті 
объектілер болып табылады. 
Программалау  тілінің  көз  қарасына  қарай  объектілер  класын  деректің  типіндей,  ол 
жеке  объектіні  осы  типтің  дерегіндей  қарауға  болады.  Сонымен,  объектіге  бағдарланған 
тәсілмен программаны дайындағанда программада қолданылған объектілердің кластарының 
анықталуын  және  олардың  сипаттамасын  құруды,  содан  кейін  объектілерге  қажетті 
экземплярлардың жасалуын және олардың арасындағы өзара әсерді анықтауды болжайды. 
Объектілер және кластар үшін кіру ережелері : 
-  Private  ретінде  хабарланған  элементтер  функция-мүшелерге,  кластың  өрістеріне 
және туынды кластардың функция-мүшелеріне кіре алады. 
- Public ретінде хабарланған элементтер кез-келген функцияларға кіре алады. 
-  Ашық  (public)  базалық  класс  ретінде  қолданған  кезде,  оның  ашық  элементтері 
туынды  класының  ашық  элементі  болады,  ал  қорғалған  (protected)  элементтері-туынды 
класының қорғалған элементтері болады. 
-  Жабық  (рrivate)  класс  базалық  класс  ретінде  қолданылған,  және  оның  қорғалатын 
элементтері. 
Net платформасында С# тілінде программалау технологиясын тестілеу программасын 
құру  қосымшасымен  қарастырамыз.  Қосымша  негізгі  мына  модульдерден  тұрады: 
мұқабалық форма, тіркелу, тестілеу бөлімі, бағалау бөлімі. 
Тестілеу  бөліміне  дейін  студент  немесе  қолданушы  жеке  мәліметтерін  енгізеді. 
Тіркелу модулінің коды: 
public string[] name =new string[5]; 
public string fam; 
public string kurs; 
public string specialnost; 
private void button1_Click(object sender, EventArgs e) 
{name[0] = "exam_pascal.xml"; name[4] = textBox1.Text; 
name[1] = textBox2.Text; name[2] = textBox3.Text; 
name[3] = textBox4.Text; 
Form3 f3 = new Form3(name); f3.Show(this); this.Hide(); } 
private void textBox4_TextChanged(object sender, EventArgs e) 
{if ((textBox1.Text != "") && (textBox2.Text != "") && (textBox3.Text != "") && 
(textBox4.Text != "")) button1.Enabled = true; 
else button1.Enabled = false; } 
Тестілеу модулінің коды: 
public string[] name = new string[5]; public string[] options ={"30"}; 


41 
 
public int sec; public int min; 
public int l; RadioButton[] radioButton; 
Label[] label; XDocument xdoc; DirectoryInfo di; 
IEnumerable xel; 
string fpt; string fnm; 
int[] test; int tv = 0; 
int mode = 0; int otv; int right; int nr; int n; 
public Form3(string[] args) 
{InitializeComponent(); 
radioButton = new RadioButton[4]; label = new Label[4]; 
name = args; for (int i = 0; i < 4; i++) 
{radioButton[i] = new System.Windows.Forms.RadioButton(); 
radioButton[i].Location = new System.Drawing.Point(135, 20+i*16); 
radioButton[i].Name = "radioButton"+i.ToString(); 
radioButton[i].Size = new System.Drawing.Size(14, 13); 
radioButton[i].Visible = false; 
radioButton[i].Click += new System.EventHandler(this.radioButton1_Click); 
radioButton[i].Parent = this; 
label[i] = new System.Windows.Forms.Label(); label[i].AutoSize = true; 
label[i].Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, 
System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); 
label[i].Location = new System.Drawing.Point(155, 20 + i*16); 
label[i].MaximumSize = new System.Drawing.Size(400, 0); 
label[i].Name = "label" + i.ToString(); 
label[i].Size = new System.Drawing.Size(45, 16); 
radioButton[i].Visible = false; 
label[i].Parent = this;} radioButton5.Checked = true; 
if (args.Length > 0) 
{if (args[0].IndexOf(":") == -1) 
{di = new 
DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)); 
fpt = di.FullName + "\\"; fnm = args[0];} 
else{ 
fpt = args[0].Substring(0, args[0].LastIndexOf("\\") + 1); 
fnm = args[0].Substring(args[0].LastIndexOf("\\") + 1); 
}}else 
{label1.ForeColor = Color.DarkRed; 
label1.Text = "Тест файлының аты көрсетілмеген!"; 
mode = 2; return; } 
try{ 
xdoc = XDocument.Load(fpt + fnm); xel = xdoc.Elements(); 
label1.Text = xel.Elements("info").ElementAt(0).Value; 
n = xel.Elements("queries").Elements().Count(); 
test = new int[n]; 
Boolean[] b; b = new Boolean[n]; 
for (int i = 0; i < n; i++) 
{b[i] = false;} 
Random rnd = new Random(); 
int r; 
for (int i = 0; i < n; i++) 
{do r = rnd.Next(n); 


42 
 
while (b[r] == true); 
test[i] = r; b[r] = true;} 
mode = 0; tv = 0;} 
catch (Exception aException) 
{label1.ForeColor = Color.DarkRed; label1.Text = aException.Message; 
mode = 2; return; }} 
private void button1_Click(object sender, EventArgs e) 

{switch (mode) 
{case 0: 
qw(test[tv]); tv++; mode = 1; 
break; 
case 1: 
if (otv == right) nr++; 
if (tv < n) 
{qw(test[tv]); tv++; 
}else 
{for (int j = 0; j < 4; j++) 
{label[j].Visible = false; radioButton[j].Visible = false; 
}pictureBox1.Visible = false; 
ShowResult();mode = 2; } 
break; 
}}} 
private void qw(int i) 
{ int j; 
for ( j= 0; j < 4; j++) 
{label[j].Visible = false; radioButton[j].Visible = false;} 
radioButton5.Checked = true; label1.Text = 
xel.Elements("queries").Elements().ElementAt(i).Element("q").Value; 
right = System.Convert.ToInt32(xel.Elements("queries").Elements().ElementAt(i).Element 
("q").Attribute("right").Value); 
string src = xel.Elements("queries").Elements().ElementAt(i).Element 
("q").Attribute("src").Value; 
if (src.Length != 0) 
{try 
{pictureBox1.Image = new Bitmap(fpath + src); 
pictureBox1.Visible = true; 
radioButton[0].Top = pictureBox1.Bottom + 16; 
label[0].Top = radioButton[0].Top - 3; 
}catch 
{if (pictureBox1.Visible) 
pictureBox1.Visible = false; radioButton[0].Top = label1.Bottom + 10; 
label[0].Top = radioButton[0].Top - 3;} 
}else 
{pictureBox1.Visible = false; radioButton[0].Top = label1.Bottom + 10; 
label[0].Top = radioButton[0].Top - 3;} j = 0; 
foreach (XElement a in 
xel.Elements("queries").Elements().ElementAt(i).Element("as").Elements()) 
{label[j].Text = a.Value; label[j].Visible = true; 
radioButton[j].Visible = true; 
if (j != 0) 


43 
 
{radioButton[j].Top = label[j - 1].Bottom + 10; 
label[j].Top = radioButton[j].Top - 3; 
}j++; 
}button1.Enabled = false; } 
private void radioButton1_Click(object sender, EventArgs e) 
{if ((RadioButton)sender == radioButton[0]) otv = 1; 
if ((RadioButton)sender == radioButton[1]) otv = 2; 
if ((RadioButton)sender == radioButton[2]) otv = 3; 
if ((RadioButton)sender == radioButton[3]) otv = 4; 
button1.Enabled = true;} 
Тестілеу нәтижесі бөлімінің коды: 
  
private void ShowResult() 
{int k; int i;int p = 0;k = xel.Elements("levels").Elements().Count(); 
for (i = 0; i < k-1; i++) 
{p = System.Convert.ToInt32(xel.Elements("levels").Elements().ElementAt 
(i).Attribute("p").Value); 
if (nr >= p) 
break;} 
label3.Text ="Всего вопросов: " + n.ToString() + "\n" + 
"Правильных ответов: " + nr.ToString() + "\n" + "Оценка: " + 
xel.Elements("levels").Elements().ElementAt(i).Value; 
label5.Text = "Aty "+name[4]; label6.Text = "Тегі "+name[1]; 
label2.Text = "Курс " +name[2]; label7.Text = "Мамандық" +name[3]; 

private void Form3_Load(object sender, EventArgs e) 
{sec = 0; min = 0; 
timer1.Enabled = true; 
l = 0; } 
private void updatelabel() 
{label4.Text = " Время: " + min.ToString() + "мин " + sec.ToString() + "сек"; 

private void timer1_Tick(object sender, EventArgs e) 
{if (sec == 60) { sec = 0; min++; } 
sec++; if (min == 30) 
{timer1.Enabled = false; Form4 form4 = new Form4(); 
form4.Show(this); this.Hide();} 
else updatelabel(); } 

Қорыта  айтқанда,  Net  платформасында  С#  тілінде  программалау  технологиясының 
ерекшелігі  -  кез  келген  программаны,  яғни  Windows-  қосымша,  Web-қосымша,  мәліметтер 
қорымен  жұмыс  істеуге  арналған  қосымшаларды  құру  мүмкіндігі.  Екінші  ерекшелігі, 
файлдар  мен  программаларды  қорғау  деңгейінің  жоғарылығы:  басқарушы  кодтарда 
программаның  орындалу  тәсілі  және  файлдық  жүйе  туралы  ақпарат  болмайды.  Бұл 
технологияны  меңгерген  студент  немесе  қолданушы  жоғары  деңгейлі  қолданбалы 
программалар құрады. 
  


Достарыңызбен бөлісу:
1   ...   34   35   36   37   38   39   40   41   ...   180




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет