Главная Обратная связь

Дисциплины:

Архитектура (936)
Биология (6393)
География (744)
История (25)
Компьютеры (1497)
Кулинария (2184)
Культура (3938)
Литература (5778)
Математика (5918)
Медицина (9278)
Механика (2776)
Образование (13883)
Политика (26404)
Правоведение (321)
Психология (56518)
Религия (1833)
Социология (23400)
Спорт (2350)
Строительство (17942)
Технология (5741)
Транспорт (14634)
Физика (1043)
Философия (440)
Финансы (17336)
Химия (4931)
Экология (6055)
Экономика (9200)
Электроника (7621)






Дополнение класса формы средствами решения прикладной задачи



 

Пусть задана задача: сколько элементов одномерного массива меньше его среднего арифметического. В классе Form1 имеются объявление данных, а также функции для ее решения. Вызов функций выполняется при нажатии на командные кнопки. Форма для этой задачи представлена на рис. 5.1.

 

 

Рис. 5.1

 

Класс Form1:

namespace Exampl_51

{

public partial class Form1 : Form

{

double[] x;// данные для задачи

Int kol;

Double SrAr;

 

public Form1()

{

InitializeComponent();

}

 

private void button4_Click(object sender, EventArgs e)

{

Close();

}

Private void Input()

{ // ввод исходных данных

string[] temp;

string dan;

dan = textBox1.Text;

temp = dan.Split(';');

x = new double[temp.Length];

for (int i = 0; i < x.Length; i++)

x[i] = Convert.ToDouble(temp[i]);

}

Private void Comp_aver()

{ // нахождение среднего арифметического

SrAr = 0;

for (int i = 0; i < x.Length; i++)

SrAr += x[i];

SrAr = SrAr / x.Length;

}

Private void Comp_Count()

{// определение требуемого количества элементов

kol = 0;

for (int i = 0; i < x.Length; i++)

if (x[i] < SrAr) kol++;

 

}

 

private void button1_Click(object sender, EventArgs e)

{ // реализация кнопки ввода исходных данных

Input();

Sred.Enabled = true;

}

 

private void Sred_Click(object sender, EventArgs e)

{ // реализация кнопки нахождения среднего арифметического

Comp_aver();

KolVo.Enabled = true;

}

 

private void KolVo_Click(object sender, EventArgs e)

{ //нахождение и вывод количества

Comp_Count();

label3.Text = "" + kol;

}

 

private void textBox1_Click(object sender, EventArgs e)

{// перевод задачи в исходное состояние

textBox1.Text = "";

Sred.Enabled = false;

KolVo.Enabled = false;

label3.Text = "";

} } }

 

Первоначально кнопки «Среднее арифметическое» и «Количество» заблокированы, потому что до ввода исходных данных на них нажать нельзя. Щелчок мышью на строке ввода исходных данных переводит программу в исходное состояние.

 

Создание отдельных классов

 

Поступим следующим образом. Объявим несколько классов и используем их методы при нажатии командных кнопок на форме. В принципе, можно использовать сколь угодно сложные структуры данных в классах, но мы не будем тратить на это время, потому что вопросы передачи структурированных данных в качестве формальных/фактических параметров функций были подробно рассмотрены выше.



Создавать классы можно двумя способами:

- написать классы самому «с нуля»; не забудьте, что класс формы должен быть впереди собственных классов;

- ставить курсор мыши на имя проекта, нажать на правую клавишу, выбрать из выпадающего меню пункт «Add», далее «Class».

 

namespace Klassid

{

public class Cl1

{

protected int a1 = 0;

protected double a2 = 3.5;

private Cl3 _Cl3;

public Cl1(int i, double x)

{

a1 = i;

a2 = x;

}

public string opp()

{

_Cl3 = new Cl3("Greeting from Moscow");

return _Cl3.get_c1();

 

}

public double op2()

{

return (a1*a2);

}

 

}

public class Cl2 : Cl1

{

public string st1;

public Cl2(int i, double x, string s)

: base(i, x)

{

st1 = s;

}

public string op21()

{

return st1;

}

}

public class Cl3

{

 

public string c1;

public Cl3(string t)

{

c1 = t;

}

public string get_c1()

{

return c1;

}

}

public class Cl4

{

public int i1;

public Cl4(int k)

{

i1 = k;

}

public int fun2()

{

return i1;

}

}

class Cl5 // обработка массива

{

int[] k;

public Cl5(int[] temp)

{

k = new int[temp.Length];

for (int i = 0; i < temp.Length; i++)

k[i] = temp[i];

}

public int sum_pol()

{

int u=0;

for (int i = 0; i < k.Length; i++)

if (k[i] > 0) u += k[i];

return u;

}

} }

 

Работа с классами из формы:

namespace Klassid

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

 

private void button1_Click(object sender, EventArgs e)



{

Close();

}

 

private void button2_Click(object sender, EventArgs e)

{// создание объекта класса Cl3

Cl3 pp = new Cl3(textBox1.Text);

textBox2.Text = pp.get_c1();

}

 

private void button3_Click(object sender, EventArgs e)

{ // работа с классом Cl2

Cl2 q;

string s1;

s1 = textBox1.Text;

q = new Cl2(6, 2.5, s1);

textBox2.Text = q.st1;

}

 

private void button4_Click(object sender, EventArgs e)

{ // работа с классом Cl2

Cl2 q;

string s1;

int i;

s1 = textBox1.Text;

i=Convert.ToInt32(textBox2.Text);

q=new Cl2(i,2.5,s1);

textBox2.Text=Convert.ToString(q.op21());

}

 

private void button5_Click(object sender, EventArgs e)

{// работа с классом Cl1, а через него с Cl3

Cl1 f1 = new Cl1(5, 3.7);

textBox1.Text = f1.opp();

}

private void button6_Click(object sender, EventArgs e)

{// обработка массива

string[] z;

string s1;

int[] t;

s1 = textBox1.Text;

z = s1.Split(';');

t=new int[z.Length];

for (int i = 0; i < z.Length; i++)

t[i] = Convert.ToInt32(z[i]);

Cl5 My_Cl = new Cl5(t);

textBox2.Text = "Summa " + My_Cl.sum_pol();

}

} }


Эта страница нарушает авторские права

allrefrs.ru - 2019 год. Все права принадлежат их авторам!