ТиМП Лабораторная работа 2
.pdf{
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
