Модулі комерційного валютного маклера та обмінного пункту готелю в додатку обміну валют в Visual C # (Sharp)

Як уже згадувалося кілька разів раніше, додаток обміну валют 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

&gt&nbsp

&gt&nbsp

public string ToCurrency { get {

return _toCurrency

&gt&nbsp

}

}

Властивості іменуються подібно відповідним членам даних (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 О, відповідно, і самі по собі не виконують ніякої корисної роботи Але згадайте приклад, коли, оплівая наші покупки, ми не дозволяємо касиру прямий доступ до наших грошей у гаманці, а лише безпосередній, виймаючи їх з гаманця самі і потім передаючи касирові Тому, хоча з першого погляду і здається, що дані методи не роблять нічого корисного, насправді вони служать в якості барєру, подібного барєра між вашим гаманцем і касиром Крім цього, вони проставляють нам певну гнучкість у роботі з кодом

Наприклад, припустимо, ЩО методи CurrencyTraderConvertValue () І CurrencyTraderConvertValuelnverse () був і оголошений и public, а не protected Тоді будь-який користувач класу ActiveCurrencyTrader міг б пользаться функціональністю, що надається класом CurrencyTrader Далі дусту, що хтось вирішив змінити функціональність методів ConvertValue () і ConvertValuelnverse () Це б породило проблеми, т к зміни в класі currencyTradder автоматично увазі зміни в класі ActiveCurrencyTrader Визначаючи власні методи, ми забезпечуємо возмоость пристосуватися до майбутніх потенційним змінам без необхідності модифікування компонентів, що викликають клас ActiveCurrencyTrader

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

Джерело: Гросс К С # 2008: Пер з англ – СПб: БХВ-Петербург, 2009 – 576 е: ил – (Самовчитель)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*