Учебное пособие Казань 017 ббк 32. 973-018. Х15



Pdf көрінісі
бет53/66
Дата05.08.2022
өлшемі1.97 Mb.
#278158
түріУчебное пособие
1   ...   49   50   51   52   53   54   55   56   ...   66
Байланысты:
Programmirovanie-v-S
Математика 6 сынып 3, !ОШ доп СО Геометрия 7кл каз, Дістемелік кешен (2)
2.4.2. Константы 
Выше мы для хранения данных использовали статические поля 
класса без экземпляров. Нам эти поля пришлось объявить закрытыми и 
создать свойства для чтения. Использование модификатора public 


112 
позволило бы менять значения полей из других методов, что может быть 
недопустимо. Чтобы это исключить, можно поля объявить константами с 
помощью ключевого слова const. Тогда изменить их уже будет 
невозможно. 
Итак, можно создать абстрактный класс и поля объявить 
константами. В этом случае невозможно будет создать его экземпляры, и 
можно будет только считывать значения его полей. В предыдущий проект 
добавим абстрактный класс AbsOklad: 
abstract class AbsOklad 
{
public const int oklad1 = 25000; 
public const int oklad2 = 30000; 
public const int oklad3 = 35000; 
} 
и в процедуру Main() запишем код 
Human wrk1 = new Ingener("Иванов", "Василий", "Петрович", 
46, AbsOklad.oklad3); 
wrk1.Info(); 
Human wrk2 = new Ingener("Сидоров", "Семен", "Алексеевич", 
42, AbsOklad.oklad2); 
wrk2.Info();
Получим 
Иванов Василий Петрович, 46 лет, зарплата 35000 руб 
Сидоров Семен Алексеевич, 42 года, зарплата 30000 руб
 
Как видим, класс для хранения значений окладов получился 
существенно проще, но у нас нет возможности индексировать оклады, так 
как они объявлены константами. 
2.4.3. Перечисления
 
Для хранения целочисленных констант также можно использовать 
перечисления. Перечисления представляют собой набор именованных 
целочисленных констант. К константам можно обращаться по имени. 
Перечисления описываются так: 
enum имя_перечисления 



113 
константа1, 
константа2, 
…… 
константаN 

Здесь константа – это имя константы возможно с присвоенным ему 
значением. Константы предполагаются типа int. Можно использовать 
любой другой целочисленный тип, в этом случае он указывается в 
заголовке через двоеточие. 
Константы принимают присваиваемые им значения. Если для 
некоторой константы инициализация не проводится, то константа1 
принимает значение нуль, а любая другая - на единицу больше, чем 
предыдущая. Например, в перечислении 
enum sss 

a, 
b, 
c=5,


получим a=0,b=1,c=5,d=6. 
Перейдем к примеру. Создадим следующее перечисление 
enum Stafka 

oklad1 = 25000, 
oklad2 = 30000, 
oklad3 = 35000 
} 
Класс Ingener перепишем так: 
class Ingener: Human 

private Stafka oklad; 
public override int ZarPlata() 

return (int)oklad; 


114 

public Ingener(string lastname, string name, string 
secondname, int age, Stafka oklad) 
: base(lastname, name, secondname, age) 

this.oklad = oklad;


Здесь мы у поля oklad установили тип Stafka, в оператор return 
добавили явное преобразование типа и в заголовке конструктора изменили 
тип последнего параметра. Все эти изменения связаны с тем, что, хотя при 
инициализации членов перечисления используются значения типа int, для 
обратного перевода значений членов в числовой тип надо использовать 
явное преобразование. 
В Main() впишем код 
Human wrk1 = new Ingener("Иванов", "Василий", "Петрович", 
46, Stafka.oklad3); 
wrk1.Info();
Human wrk2 = new Ingener("Сидоров", "Семен", "Алексеевич", 
42, Stafka.oklad2);
wrk2.Info();
После выполнения, как и выше, получим 
Иванов Василий Петрович, 46 лет, зарплата 35000 руб 
Сидоров Семен Алексеевич, 42 года, зарплата 30000 руб 
В отличие от обычных классов перечисления относятся к значимым 
типам. Поэтому при использовании перечислений программа будет 
занимать меньше места в памяти и быстрее выполняться. 
Все 
перечисления 
являются 
потомками 
базового 
класса 
System.Enum, который обладает рядом статических методов. Эти методы 
можно использовать для работы с перечислениями. Рассмотрим некоторые 
из них. Метод Format позволяет найти член перечисления по его 
значению. Этот метод имеет три параметра: имя перечисления, значение 
искомого члена и режим вывода. Если требуется вывести имя члена с 
заданным значением, то следует указать режим "G". Еще возможны 
режимы "X" и "d". В этих случаях будет выведено значение, 
соответственно, в шестнадцатеричной и десятичной системах исчисления. 
Например, операторы 


115 
Console.WriteLine(Enum.Format(typeof(Stafka),30000,"G")); 
Console.WriteLine(Enum.Format(typeof(Stafka),30000,"X")); 
Console.WriteLine(Enum.Format(typeof(Stafka),30000,"d")); 
выведут на консоль строки
 
oklad2 
00007530 
30000 
Здесь метод typeof() используется для получения объекта System.Type 
для указанного типа. 
Рассмотрим второй метод. Метод GetValues() позволяет создать 
массив на основе перечисления. Этот массив будет принадлежать классу 
Array. Чтобы можно было обращаться к его элементам, этот массив 
следует привести к типу int[], например, с помощью операции 
приведения к типу. При выполнении операторов


Достарыңызбен бөлісу:
1   ...   49   50   51   52   53   54   55   56   ...   66




©melimde.com 2022
әкімшілігінің қараңыз

    Басты бет
Сабақтың тақырыбы
бойынша жиынтық
жиынтық бағалау
Сабақ тақырыбы
Сабақтың мақсаты
ғылым министрлігі
тоқсан бойынша
бағдарламасына сәйкес
бағалауға арналған
Сабақ жоспары
Реферат тақырыбы
жиынтық бағалауға
сәйкес оқыту
арналған тапсырмалар
Қазақстан республикасы
білім беретін
оқыту мақсаттары
бағалау тапсырмалары
республикасы білім
Жалпы ережелер
жиынтық бағалаудың
рсетілетін қызмет
бекіту туралы
тоқсанға арналған
Қазақстан тарихы
мерзімді жоспар
Қазақстан республикасының
арналған жиынтық
қызмет стандарты
болып табылады
жалпы білім
арналған әдістемелік
Мектепке дейінгі
оқыту әдістемесі
бағалаудың тапсырмалары
Қазақ әдебиеті
пәнінен тоқсанға
Инклюзивті білім
нтізбелік тақырыптық
Зертханалық жұмыс
Әдістемелік кешені
білім берудің
республикасының білім
туралы жалпы
Қазақстанның қазіргі
Қысқа мерзімді
Жұмыс бағдарламасы
атындағы жалпы
қазақ тілінде
қазіргі заман
туралы хабарландыру