// Используем основные классы .NET Framework
using System;
// Объявляем, что мы работаем в пространстве имен SampleProgram
namespace SampleProgram
{
///
/// Класс Client содержит информацию о кленте - его имя и баланс счета
///
class Client
{
///
/// Эта переменная хранит имя клиента
///
private string _name;
///
/// Эта переменная хранит баланс счета клиента
///
private int _balance;
///
/// Это свойство используется для доступа к имени клиента.
/// Принято все переменные класса закрывать для доступа извне
/// и предоставлять доступ к ним через свойства, чтобы контролировать
/// доступ.
///
public string Name
{
// Здесь мы определяем код, который будет использован для
// получения значения свойства
get
{
return _name;
}
// Этот код служит для присвоения свойству нового значения
// Параметр value здесь представляет новое значения свойства
set
{
_name = value;
}
}
///
/// Это свойство служит для доступа к счету клиента. Доступ на
/// запись для него закрыт, чтобы нельзя было извне класса
/// в обход его методов изменить сумму на счету клиента.
///
public int Balance
{
get
{
return _balance;
}
}
///
/// Здесь мы определяем констуктор - метод, используемый
/// для создания нового объекта данного класса.
///
/// Параметр name задает имя для нового клиента
/// Параметр initialCash задает начальную сумму, которая будет на его счету
public Client( string name, int initialCash )
{
// Задаем имя клиента через свойство
Name = name;
// Задаем начальный счет через непосредственный доступ к переменной
_balance = initialCash;
}
///
/// Этот метод перечисляет деньги на счет клиента
///
/// Этот параметр задает сумму, которая будет перечислена
/// Этот параметр задает идентификатор транзакции для проверки подлинности перечисления
public void AddMoney( int amount, int transactionID )
{
// Если транзакция верна
if (Transaction.CheckID(transactionID))
// Перечисляем деньги
_balance += amount;
else
// Иначе генерируем исключение
throw new Exception("Wrong transaction ID");
}
///
/// Этот метод переопределяет стандартный метод ToString, определенный в классе
/// System.Object. По умолчанию этот метод выводит класс объекта.
///
/// Метод возвращает стороковое представление объекта
public override string ToString()
{
return Name + " (" + Balance + ")";
}
}
///
/// Класс транзакции. В нашем примере он будет лишь проверять правильность идентификатора транзакции
///
public class Transaction
{
///
/// Этот метод проверяет, верный ли идентификатор ему передан
///
/// Идентификатор для проверки
/// Возвращает true, если идентификатор верен и false если нет
public static bool CheckID( int id )
{
// В нашем примере идентификатор считается правильным, если он не делится на 2
return id % 2 != 0;
}
}
///
/// Класс приложения - класс, предстваляющий основное направление выполнения программы.
/// В нем определена точка входа
///
public class Application
{
///
/// Точка входа в программу
///
public static void Main()
{
// Создаем нового клиента по имени Johny Smith и двумястами долларами на счету
Client client = new Client("Johnny Smith", 200);
// Выводим начальное состояние клиента
// Благодаря перегрузке метода ToString, мы получим информацию о клиенте
Console.WriteLine("Начальное состояние: " + client);
// Следующий код мы заключаем в try...catch блок, так как в нем могут
// возникнуть исключения.
try
{
client.AddMoney(100, 0);
client.AddMoney(140, 1);
}
// Этот блок будет вызван, если возникнет исключение
catch (Exception)
{
Console.WriteLine("Перечисление денег было отклонено");
}
// Этот код будет вызван в любом случае либо по отработке блока catch, либо блока try
finally
{
Console.WriteLine("Конечное состояние клиента: " + client);
}
}
}
}
|