Мегаобучалка Главная | О нас | Обратная связь


Пояснения к Тест 2 - Локальные и глобальные переменные класса



2019-08-13 520 Обсуждений (0)
Пояснения к Тест 2 - Локальные и глобальные переменные класса 0.00 из 5.00 0 оценок




 Создадим интерфейс пользователя для работы с классом TestingLocals. С этой целью добавим в проект интерфейсный класс FormLocals – наследник класса Form. На рис. 4.2.5-7 показано, как выглядит спроектированный интерфейс в процессе работы с формой.

Рис. 4.2.5-7. Форма FormLocals - интерфейс пользователя

Назначение формы поясняется в специальном текстовом окне. В разделе «исходные данные» два текстовых окна позволяют задать данные, необходимые для формирования объекта класса TestingLocals. Две командные кнопки позволяют создать объект этого класса и вызвать метод Test(), тело которого представляет систему вложенных внутренних блоков, содержащих объявление локальных переменных. Большой раздел в интерфейсе формы занимают советы, подсказывающие разработчику, что он может делать при объявлении локальных переменных, и что является недопустимым.

Напомню, что код интерфейсного класса, создаваемый по умолчанию, состоит из двух частей. Одна часть предназначена для Дизайнера форм, и код в ней появляется автоматически, отражая проектирование дизайна формы, выполняемое руками. Другая часть ориентирована на разработчика интерфейса. В эту часть класса добавляются поля, необходимые для обмена информацией с элементами управления, расположенными на форме. Здесь же находится поле, в котором объявлен объект класса Testing. Заметьте, если создается интерфейсный класс, обеспечивающий поддержку работы с одним или несколькими содержательными классами, то в интерфейсном классе должны быть поля с объектами этих классов. Так интерфейсный класс становится клиентом содержательного класса. В нашем случае интерфейсный класс FormLocals становится клиентом класса TestingLocals и эти два класса связываются отношением «клиент – поставщик».

Код части интерфейсного класса, которая создается разработчиком, показан на
рис. 4.2.5-8.

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;   namespace SimpleVariables { public partial class FormLocals : Form {    //поля класса - константы и переменные    const string YOU_CAN_1 =        "Объявить локальную переменную с именем, " +        "совпадающим с именем поля класса!";    const string YOU_CAN_2 =        "В непересекающихся блоках объявлять " +        "локальные переменные с совпадающими именами!";    const string YOU_CAN_3 =        "Объявить локальную переменную в любой точке блока!";                const string YOU_CAN_4 =        "Объявлять константы в блоках!";    const string YOU_CANNOT_1 =        "Объявлять глобальные переменные " +        "уровня Решения, Проекта, Пространства Имен!";    const string YOU_CANNOT_2 =        "Объявить локальную переменную метода с именем," +        "совпадающим с именем формального параметра!";    const string YOU_CANNOT_3 =        "Объявить локальную переменную с атрибутом static!";    const string YOU_CANNOT_4 =        "Объявить переменную во внутреннем блоке, " +         "если в охватывающем блоке уже объявлена " +        "локальная переменная с тем же именем!";                   TestingLocals testing;    string s;    int n;    public FormLocals()    {        InitializeComponent();    }         } }

Рис. 4.2.5-8.

 

Помимо упомянутых полей класса в нем определены строковые константы для вывода советов по использованию локальных переменных.

В этой части класса появляются и обработчики событий элементов управления формы. Вот как выглядит код обработчика события Click командной кнопки, создающей объект класса TestingLocals (рис. 4.2.5-9).

private void buttonCreateObject_Click(object sender, EventArgs e)    {        s = textBoxS.Text;        n = Convert.ToInt32(textBoxN.Text);        testing = new TestingLocals(s, n);        textBoxS.Text = "Point";        textBoxN.Text = "0";    }

Рис. 4.2.5-9

 

Устроен он достаточно просто, - вначале из текстовых полей формы читается информация, необходимая конструктору класса TestingLocals для создания объекта, затем этот объект создается, а текстовые окна формы получают новое значение, которое может быть изменено конечным пользователем в процессе работы с формой.

Чуть более сложно устроен обработчик события Click командной кнопки, вызывающей метод Test класса TestingLocals (рис. 4.2.6-10).

private void buttonTest_Click(object sender, EventArgs e)    {      int x = Convert.ToInt32(textBoxX.Text);      textBoxResult.Text = testing.Test(x).ToString();          textBoxCan1.Text = YOU_CAN_1;        textBoxCan2.Text = YOU_CAN_2;        textBoxCan3.Text = YOU_CAN_3;        textBoxCan4.Text = YOU_CAN_4;          textBoxCannot1.Text = YOU_CANNOT_1;        textBoxCannot2.Text = YOU_CANNOT_2;        textBoxCannot3.Text = YOU_CANNOT_3;        textBoxCannot4.Text = YOU_CANNOT_4;    }

Рис. 4.2.6-10

 

И здесь из текстового окна формы читается значение аргумента, заданное конечным пользователем, затем созданный объект testing вызывает открытый (public) метод класса Test(), и результат работы метода выводится в соответствующее текстовое окно, поддерживая необходимую связь с конечным пользователем. В качестве побочного эффекта в текстовые поля формы выводятся советы по использованию локальных переменных.

Помимо советов, анализируя текст метода Test(), следует обратить внимание при использовании локальных переменных на следующие моменты:

· Аргументы метода (его формальные параметры) считаются объявленными в начале блока, задающего тело метода. Таким образом, область их действия распространяется на весь этот блок и ни в одном из внутренних блоков нельзя объявлять локальную переменную с именем, совпадающим с именем аргумента.

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

· В параллельных блоках (в нашем примере две ветви оператора if) разрешается объявлять локальные переменные с одинаковыми именами, поскольку области существования этих переменных не пересекаются.

· Поскольку объявлять локальную переменную можно в любой точке блока, то хорошим стилем считается объявление локальной переменной как можно ближе к точке ее непосредственного использования. Нет смысла объявлять локальную переменную в начале блока, если она будет использована где-то в конце блока.

 



2019-08-13 520 Обсуждений (0)
Пояснения к Тест 2 - Локальные и глобальные переменные класса 0.00 из 5.00 0 оценок









Обсуждение в статье: Пояснения к Тест 2 - Локальные и глобальные переменные класса

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою...
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (520)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.01 сек.)