Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ТиМП Лабораторная работа 2

.pdf
Скачиваний:
0
Добавлен:
08.08.2026
Размер:
475 Кб
Скачать

{

throw new FormatException();

}

decimal sum = decimal.Parse(deposit); if (sum <= 0)

{

throw new ArgumentOutOfRangeException();

}

}

catch (ArgumentNullException)

{

Console.WriteLine("Сумма для пополнения должна быть не пустым значением\n" +

"Пример: 100,99"); return;

}

catch (FormatException)

{

Console.WriteLine("Сумма пополнения имеет неверный формат\n" + "Пример: 100,99");

return;

}

catch (StackOverflowException)

{

Console.WriteLine("Слишком большое число, пополните баланс на меньшую

сумму");

return;

}

catch (ArgumentOutOfRangeException)

{

Console.WriteLine("Сумма пополнения должна являться числом большим

нуля");

return;

}

catch

{

Console.WriteLine("Неизвестня ошибка"); return;

}

try

{

decimal sum = decimal.Parse(deposit) + this.Balance;

}

11

catch

{

Console.WriteLine("Слишком большое число, пополните баланс на меньшую

сумму");

return;

}

this.Balance += decimal.Parse(deposit);

}

}

interface PhoneState

{

public void Call(Phone phone) { }

public void ReceiveCall(Phone phone) { } public void Answer(Phone phone) { } public void EndCall(Phone phone) { }

}

class WaitingState : PhoneState

{

public void Call(Phone phone)

{

if (phone.Balance < decimal.Parse("2,5"))

{

Console.WriteLine($"Недостаточно средств, на счете {phone.Balance}"); return;

}

Console.WriteLine($"Исходящий звонок с {phone.Number}"); phone.Balance -= decimal.Parse("2,5");

phone.State = new InCallState();

}

public void ReceiveCall(Phone phone)

{

Console.WriteLine($"Входящий звонок на {phone.Number}"); phone.State = new IncomingCallState();

}

public void Answer(Phone phone)

{

Console.WriteLine($"Нет входящего звонка на {phone.Number}");

}

public void EndCall(Phone phone)

{

Console.WriteLine($"Нет активного звонка для {phone.Number}");

}

12

}

class IncomingCallState : PhoneState

{

public void Call(Phone phone)

{

Console.WriteLine($"Нельзя совершить зваонок - уже есть вызов");

}

public void ReceiveCall(Phone phone)

{

Console.WriteLine($"Уже получаете вызов");

}

public void Answer(Phone phone)

{

Console.WriteLine($"Ответели на звонок. Разговор начат");

}

public void EndCall(Phone phone)

{

Console.WriteLine($"Вызов отклонен");

}

}

class InCallState : PhoneState

{

public void Call(Phone phone)

{

Console.WriteLine($"Уже в разговоре");

}

public void ReceiveCall(Phone phone)

{

Console.WriteLine($"Нельзя принять второй звонок во время разговора");

}

public void Answer(Phone phone)

{

Console.WriteLine($"Уже в разговоре");

}

public void EndCall(Phone phone)

{

Console.WriteLine($"Разговор завершен");

}

}

13