Главная » C# » Модули коммерческого валютного маклера и обменного пункта отеля в приложении обмена валют в Visual C# (Sharp)

0

Как уже упоминалось несколько раз ранее, приложение обмена валют CurrencyTrader состоит из модуля коммерческого валютного маклера и модуля обменного пункта отеля. В процессе реализации этих двух модулей мы сможем более детально изить процесс использования наследования.

Реализация класса ActiveCurrencyTrader

Класс ActiveCurrencyTrader реализует логику модуля коммерческого валютного маклера. Для начала, добавим к этому классу конструктор.

Добавление конструктора к ActiveCurrencyTrader

Конструктор применяется, чтобы присвоить экземпляру класса ActiveCurrencyTrader определенное состояние по умолчанию. Будем считать этот экземпляр неизменяемым (immutable). Это означает, что присвоенные экземпляру данные впоследствии иенить нельзя.

ПРИМЕЧАНИЕ

Примером неизменяемого типа может служить строковый тип string. Значение, првоенное переменной этого типа, в дальнейшем изменить нельзя. Ни один из методов строкового типа  не  применяется для  модификации  содержимого  строковой  переменной.

Неизменяемый тип полезен тем, что он позволяет реализовать объекты,  которые пле начальной установки не требуют к себе никакого внимания. Кроме этого, содеимое неизменяемого объекта не подвержено случайному изменению. В целом, неизменяемый тип является надежным и предсказуемым.

Код конструктора выглядит таким образом:

public class ActiveCurrencyTrader : CurrencyTrader { string _fromCurrency;

string _toCurrency;

public ActiveCurrencyTrader(double currExchange, string fromCurrency,

string toCurrency) { ExchangeRate = currExchange;

_fromCurrency = fromCurrency;

_toCurrency = toCurrency;

}

}

Конструктор имеет три параметра. Параметр currExchange представляет текущий обменный курс, параметр fromCurrency указывает исходную валюту (например, доллары США), а параметр toCurrency указывает конечную валюту (например, евро). Значения этих трех параметров присваиваются членам  данных,  вследствие чего только текущий обменный курс ExchangeRate присваивается базовому классу CurrencyTrader.

Определение информационных свойств только для чтения

Строки,  представляющие  исходную  и  конечную  валюты,  служат  исключительно информационным целям. Например, мы можем создать некоторое число валютных пар, чтобы маклер мог разобраться с валютами, представляемыми значениями перенных _fromCurrency и _toCurrency. Это означает, что значения названий валют являются свойствами только для чтения и программируются следующим образом: public class ActiveCurrencyTrader : CurrencyTrader {

string _fromCurrency; string _toCurrency;

public ActiveCurrencyTrader(double currExchange, string fromCurrency,

string toCurrency) { ExchangeRate = currExchange;

_fromCurrency = fromCurrency;

_toCurrency = toCurrency;

}

public string FromCurrency { get {

7 Зак. 555

return _fromCurrency;

public string ToCurrency { get {

return _toCurrency;

}

}

Свойства именуются подобно соответствующим членам данных (FromCurrency, ToCurrency), чтобы мы с легкостью могли определить, что означает каждый фраент кода. Лично я применяю начальный символ подчеркивания в именах частных членов данных, но можно применять любую другую нотацию.

Добавление методов, выполняющих преобразование

Последним шагом к завершению класса ActiveCurrencyTrader будет добавление функциональности преобразования стоимости одной валюты в стоимость в другой валюте. В классе ActiveCurrencyTrader используется точный курс обмена. Меты  Convertvalue () И ConvertValuelnverse ()   имею т област ь  ВИДИМОСТИ protected и поэтому  не предоставляются  внешнему коду. Поэтому  в классе ActiveCurrencyTrader необходимо определить два  метода с областью видимости public, которые будут вызывать эти защищенные методы. Соответственно, модицированный класс ActiveCurrencyTrader будет выглядеть таким образом (давленные методы доступа к защищенным методам выделены жирным шрифтом):

public class ActiveCurrencyTrader : CurrencyTrader { string _fromCurrency;

string _toCurrency;

public ActiveCurrencyTrader(double currExchange, string fromCurrency,

string toCurrency) { ExchangeRate = currExchange;

_£romCurrency = fromCurrency;

_toCurrency = toCurrency;

}

public string FromCurrency { get {

return _fromCurrency;

}

}

public string ToCurrency {

get {

return _toCurrency;

}

}

public double ConvertTo(double value) { return ConvertValue(value);

}

public double ConvertFram(double value) { return ConvertValuelnverse(value);

}

}

Методы convertTo () и convertFromt) всего лишь служат обертками для защищеых методов ConvertValue () И ConvertValuelnverse О , соответственно, И сами ПО себе не выполняют никакой  полезной  работы. Но вспомните пример, когда, опливая  наши  покупки,  мы  не  позволяем  кассиру  прямой  доступ  к  нашим  деньгам в бумажнике, а лишь непосредственный, вынимая их из бумажника сами и потом передавая кассиру. Поэтому, хотя с первого взгляда и кажется, что данные методы не делают ничего полезного, в действительности они служат в качестве барьера, подобного барьеру  между вашим бумажником  и кассиром.  Кроме этого, они  проставляют нам определенную гибкость в работе с кодом.

Например, допустим, ЧТО методы CurrencyTrader.ConvertValue() И CurrencyTrader.ConvertValuelnverse() был и объявлен ы public, а не  protected. Тогда  любой  пользователь  класса   ActiveCurrencyTrader мог   бы   пользаться функциональностью, предоставляемой классом CurrencyTrader. Далее дустим,  что  кто-то  решил  изменить  функциональность  методов  ConvertValue () и ConvertValuelnverse(). Это бы породило проблемы, т. к. изменения в классе currencyTradder автоматически подразумевают изменения в классе ActiveCurrencyTrader. Определяя собственные методы, мы обеспечиваем возмоость приспособиться к будущим потенциальным изменениям без необходимости модифицирования компонентов, вызывающих класс ActiveCurrencyTrader.

На этом создание функциональности класса ActiveCurrencyTrader для коммерчкого валютного маклера завершено, и можно приняться за класс HoteicurrencyTrader для обменного пункта отеля.

Источник: Гросс  К. С# 2008:  Пер. с англ. — СПб.:  БХВ-Петербург, 2009. — 576 е.:  ил. — (Самоучитель)

По теме:

  • Комментарии