
Билет 3
1. Написать короткий пример, который вызовет использование сборщика мусора.
2. В каких ситуациях используются ключевые словаoutиrefдля параметров ссылочного типа.
3.Промоделировать процесс выполнения звонков мобильными телефонами.
Для этого создать:
- перечислимый тип для времени дня:
public enum DayTime {Morning, Day, Evening, Night}
- классы "Телефон" (Phone), "Звонок" (Call).
Класс Call:
- хранит длительность звонка и время дня (тип DayTime), когда звонок был сделан;
Методы:
- конструктор с параметрами;
- метод для вычисления стоимости звонка (параметры – базовая стоимость минуты и стоимость соединения).
дневные звонки - стоимость 1 минуты=0.75*базовую стоимость
утренние и вечерние звонки - стоимость 1 минуты=базовой стоимости
ночные звонки - стоимость 1 минуты=0.5*базовой стоимости минуты
Класс Phone:
- хранит информацию о множестве сделанных выходных звонков, базовую стоимость одной минуты разговора и стоимость соединения.
Методы:
- конструктор с параметрами для стоимости минуты разговора и соединения;
- "Выполнить звонок" (MakeCall) - добавляет параметр-звонок к множеству уже сделанных;
- вычисление стоимости всех звонков, сделанных в заданное параметром время дня.
- вычисление количества всех звонков, сделанных в заданное параметром время дня.
В главной программе (метод Main):
- создать телефон.
- выполнить 4 звонка.
- выдать на экран количество и стоимость дневных звонков.
- выполнить 100 звонков со случайными значениями времени дня и длительностью от 5 до 200 секунд.
- выдать на экран количество и стоимость дневных звонков.
Билет 4
1. Почему в методах создаваемых программистом классов не рекомендуется использовать классConsole?
2. В каких задачах предпочтительнее использовать прямоугольные массивы вместо «рваных»?
3. Моделирование игры BlackJack. Определить два класса: Game и Player.
Класс Player - хранит имя игрока и текущее количество очков.
Методы:
- конструктор с параметром - именем игрока;
- метод TakeCard («Взять карту») с целочисленным параметром, на которое должно быть увеличено текущее количество очков игрока;
- логический метод CanTakeMore, не имеющий параметров. Метод возвращает истину, если текущее количество очков игрока меньше 21, и ложь в противном случае;
- методы GetName и GetRate, которые возвращают имя и текущее количество очков соответственно.
Класс Game - хранит информацию об игроках, учаcтвующих в игре.
Методы:
- конструктор, принимающий допустимое количество игроков;
- метод Register с параметром - объектом класса Player. Метод проверяет доступность "свободного места" для игрока и в случае наличия такового инициализирует соответствующую позицию в массиве играющих;
- логический метод GiveCard, принимающий в качестве параметра имя игрока. Этот метод по имени ищет соответствующего зарегистрированного игрока. Если игрок найден, то вызывается его метод TakeCard и ему передается сгенерированное случайное число в диапазоне от 2 до 11. В этом случае метод возвращает истину, в зависимости от того, нужны ли еще карты игроку (см. метод CanTakeMore класса Player). Если игрок не найден, метод возвращает ложь.
- метод GetWinner, возвращающий победителя (объект класса Player) игры. Метод определяет победителя, основываясь на степени близости количества очков игрока к числу 21.
- метод ToString, возвращающий строку с информацией о количестве и составе игроков с указанием текущего количества очков.
В методе Main главной программы (класс Program) необходимо:
- создать игроков;
-создать игру и зарегистрировать в ней игроков;
- пока игроки могуть брать (CanTakeMore) сдать карты (GiveCard) каждому из игроков;
- вывести на экран информацию об игре (ToString) и ее победителе (GetWinner).