VB2008´ÓÈëÃŵ½¾«Í¨(PDF¸ñʽӢÎÄ°æ)-µÚ46²¿·Ö
°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡A¡¡PT¡¡E¡¡R¡¡¡¡¡¡6¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡T¡¡HE¡¡¡¡¡¡B¡¡AS¡¡IC¡¡S¡¡¡¡O¡¡F¡¡¡¡¡¡O¡¡B¡¡J¡¡E¡¡CT¡¡OR¡¡I¡¡E¡¡N¡¡TE¡¡D¡¡¡¡¡¡P¡¡R¡¡O¡¡G¡¡R¡¡AM¡¡M¡¡IN¡¡G¡¡153¡¡
Public¡¡Class¡¡ActiveCurrencyTrader¡¡
¡¡¡¡¡¡¡¡Inherits¡¡CurrencyTrader¡¡
¡¡¡¡¡¡¡¡Private¡¡_fromCurrency¡¡As¡¡String¡¡
¡¡¡¡¡¡¡¡Private¡¡_toCurrency¡¡As¡¡String¡¡
¡¡¡¡¡¡¡¡Public¡¡Sub¡¡New£¨ByVal¡¡currExchange¡¡As¡¡Double£»¡¡ByVal¡¡fromCurrency¡¡As¡¡String£»¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡ByVal¡¡toCurrency¡¡As¡¡String£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ExchangeRate¡¡=¡¡currExchange¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡_fromCurrency¡¡=¡¡fromCurrency¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡_toCurrency¡¡=¡¡toCurrency¡¡
¡¡¡¡¡¡¡¡End¡¡Sub¡¡
End¡¡Class¡¡
¡¡¡¡¡¡¡¡¡¡The¡¡constructor¡¡has¡¡three¡¡parameters£º¡¡currExchange¡¡represents¡¡the¡¡current¡¡exchange¡¡rate£»¡¡¡¡
fromCurrency¡¡indicates¡¡the¡¡source¡¡currency¡¡£¨for¡¡example£»¡¡USD£©£»¡¡and¡¡toCurrency¡¡indicates¡¡the¡¡¡¡
destination¡¡currency¡¡£¨for¡¡example£»¡¡EUR£©¡£¡¡These¡¡three¡¡parameters¡¡are¡¡assigned¡¡to¡¡data¡¡members£»¡¡¡¡
whereby¡¡only¡¡the¡¡current¡¡exchange¡¡rate¡¡is¡¡assigned¡¡to¡¡the¡¡base¡¡class¡¡¡¡
CurrencyTrader¡£ExchangeRate¡£¡¡
Defining¡¡Informational¡¡Read¡Only¡¡Properties¡¡
The¡¡characters¡¡that¡¡represent¡¡the¡¡from¡¡currency¡¡and¡¡to¡¡currency¡¡are¡¡stored¡¡as¡¡strings£»¡¡and¡¡are¡¡¡¡
purely¡¡for¡¡informational¡¡purposes¡£¡¡For¡¡example£»¡¡let¡¯s¡¡say¡¡that¡¡you¡¡have¡¡instantiated¡¡a¡¡bunch¡¡of¡¡¡¡
currency¡¡pairs¡¡so¡¡that¡¡the¡¡trader¡¡can¡¡prehend¡¡the¡¡currency¡¡pair¡¡in¡¡which¡¡the¡¡values¡¡of¡¡¡¡
_fromCurrency¡¡and¡¡_toCurrency¡¡will¡¡be¡¡presented¡£¡¡This¡¡means¡¡that¡¡the¡¡currency¡¡strings¡¡are¡¡¡¡
read¡only¡¡properties¡¡and¡¡are¡¡coded¡¡as¡¡follows£º¡¡
Public¡¡Class¡¡ActiveCurrencyTrader¡¡
¡¡¡¡¡¡¡¡Inherits¡¡CurrencyTrader¡¡
¡¡¡¡¡¡¡¡Private¡¡_fromCurrency¡¡As¡¡String¡¡
¡¡¡¡¡¡¡¡Private¡¡_toCurrency¡¡As¡¡String¡¡
¡¡¡¡¡¡¡¡Public¡¡Sub¡¡New¡¡£¨ByVal¡¡currExchange¡¡As¡¡Double£»¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ByVal¡¡fromCurrency¡¡As¡¡String£»¡¡ByVal¡¡toCurrency¡¡As¡¡String£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ExchangeRate¡¡=¡¡currExchange¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡_fromCurrency¡¡=¡¡fromCurrency¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡_toCurrency¡¡=¡¡toCurrency¡¡
¡¡¡¡¡¡¡¡End¡¡Sub¡¡
¡¡¡¡¡¡¡¡Public¡¡ReadOnly¡¡Property¡¡FromCurrency£¨£©¡¡As¡¡String¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Get¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡_fromCurrency¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Get¡¡
¡¡¡¡¡¡¡¡End¡¡Property¡¡
¡¡¡¡¡¡¡¡Public¡¡ReadOnly¡¡Property¡¡ToCurrency£¨£©¡¡As¡¡String¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Get¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡_toCurrency¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Get¡¡
¡¡¡¡¡¡¡¡End¡¡Property¡¡
End¡¡Class¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡176¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
154¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡6¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡IN¡¡G¡¡¡¡¡¡T¡¡HE¡¡¡¡¡¡B¡¡AS¡¡IC¡¡S¡¡¡¡O¡¡F¡¡¡¡¡¡OB¡¡J¡¡E¡¡CT¡¡OR¡¡I¡¡E¡¡N¡¡T¡¡E¡¡D¡¡¡¡¡¡P¡¡R¡¡O¡¡G¡¡R¡¡AM¡¡M¡¡IN¡¡G¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡naming¡¡of¡¡the¡¡properties¡¡£¨¡¡FromCurrency¡¡and¡¡ToCurrency£©¡¡corresponds¡¡closely¡¡to¡¡the¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡naming¡¡of¡¡the¡¡data¡¡members¡¡£¨_fromCurrency¡¡and¡¡_toCurrency£©¡£¡¡I¡¡do¡¡this¡¡throughout¡¡my¡¡code¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡so¡¡that¡¡I¡¡know¡¡what¡¡each¡¡piece¡¡of¡¡code¡¡means¡£¡¡My¡¡convention¡¡is¡¡to¡¡use¡¡a¡¡leading¡¡underscore¡¡to¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡name¡¡private¡¡data¡¡members£»¡¡but¡¡you¡¡can¡¡use¡¡a¡¡different¡¡notation¡¡if¡¡you¡¡prefer¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Adding¡¡the¡¡Conversion¡¡Methods¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡last¡¡step¡¡to¡¡make¡¡the¡¡ActiveCurrencyTrader¡¡class¡¡plete¡¡is¡¡to¡¡add¡¡the¡¡functionality¡¡to¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡convert¡¡a¡¡value¡¡from¡¡or¡¡to¡¡a¡¡currency¡¡pair¡£¡¡The¡¡ActiveCurrencyTrader¡¡class¡¡will¡¡use¡¡the¡¡exact¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡currency¡¡exchange¡¡rate¡£¡¡The¡¡ConvertValue£¨£©£»¡¡and¡¡ConvertValueInverse£¨£©¡¡methods¡¡have¡¡protected¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡scope£»¡¡and¡¡thus¡¡are¡¡not¡¡exposed¡¡outside¡¡the¡¡inheritance¡¡hierarchy¡£¡¡ActiveCurrencyTrader¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡needs¡¡to¡¡define¡¡a¡¡pair¡¡of¡¡publicly¡¡scoped¡¡methods¡¡that¡¡will¡¡call¡¡the¡¡protected¡¡scope¡¡methods¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡following¡¡is¡¡the¡¡plete¡¡ActiveCurrencyTrader¡¡implementation¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡Class¡¡ActiveCurrencyTrader¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Inherits¡¡CurrencyTrader¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Private¡¡_fromCurrency¡¡As¡¡String¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Private¡¡_toCurrency¡¡As¡¡String¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡Sub¡¡New¡¡£¨ByVal¡¡currExchange¡¡As¡¡Double£»¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ByVal¡¡fromCurrency¡¡As¡¡String£»¡¡ByVal¡¡toCurrency¡¡As¡¡String£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ExchangeRate¡¡=¡¡currExchange¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡_fromCurrency¡¡=¡¡fromCurrency¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡_toCurrency¡¡=¡¡toCurrency¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Sub¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡ReadOnly¡¡Property¡¡FromCurrency£¨£©¡¡As¡¡String¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Get¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡_fromCurrency¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Get¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Property¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡ReadOnly¡¡Property¡¡ToCurrency£¨£©¡¡As¡¡String¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Get¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡_toCurrency¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Get¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Property¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡Function¡¡ConvertTo£¨ByVal¡¡value¡¡As¡¡Double£©¡¡As¡¡Double¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡ConvertValue£¨value£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Function¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡Function¡¡ConvertFrom£¨ByVal¡¡value¡¡As¡¡Double£©¡¡As¡¡Double¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡ConvertValueInverse£¨value£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Function¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Class¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡ConvertTo£¨£©¡¡and¡¡ConvertFrom£¨£©¡¡methods¡¡are¡¡wrappers¡¡to¡¡the¡¡ConvertValue£¨£©¡¡and¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ConvertValueInverse£¨£©¡¡methods£»¡¡and¡¡provide¡¡no¡¡added¡¡value¡£¡¡But¡¡remember¡¡the¡¡problem¡¡of¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡the¡¡cashier¡¡and¡¡credit¡¡card¡£¡¡Just¡¡because¡¡it¡¡seems¡¡like¡¡there¡¡is¡¡no¡¡added¡¡value£»¡¡the¡¡reality¡¡is¡¡that¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡you¡¡are¡¡writing¡¡code¡¡that¡¡is¡¡acting¡¡as¡¡a¡¡gatekeeper¡¡and¡¡giving¡¡yourself¡¡flexibility¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡177¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡A¡¡PT¡¡E¡¡R¡¡¡¡¡¡6¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡T¡¡HE¡¡¡¡¡¡B¡¡AS¡¡IC¡¡S¡¡¡¡O¡¡F¡¡¡¡¡¡O¡¡B¡¡J¡¡E¡¡CT¡¡OR¡¡I¡¡E¡¡N¡¡TE¡¡D¡¡¡¡¡¡P¡¡R¡¡O¡¡G¡¡R¡¡AM¡¡M¡¡IN¡¡G¡¡155¡¡
¡¡¡¡¡¡¡¡¡¡For¡¡example£»¡¡suppose¡¡that¡¡CurrencyTrader¡£ConvertValue£¨£©£»¡¡and¡¡CurrencyTrader¡£¡¡
ConvertValueInverse£¨£©¡¡were¡¡declared¡¡using¡¡¡¡Public¡¡rather¡¡than¡¡¡¡Protected¡£¡¡Then¡¡any¡¡user¡¡of¡¡¡¡
ActiveCurrencyTrader¡¡could¡¡use¡¡the¡¡functionality¡¡exposed¡¡by¡¡CurrencyTrader¡£¡¡Suppose¡¡someone¡¡¡¡
decided¡¡to¡¡change¡¡the¡¡functionality¡¡of¡¡ConvertValue£¨£©¡¡and¡¡ConvertValueInverse£¨£©¡£¡¡At¡¡that¡¡¡¡
point£»¡¡you¡¡would¡¡have¡¡problems£»¡¡because¡¡the¡¡changes¡¡to¡¡CurrencyTrader¡¡automatically¡¡imply¡¡¡¡
changes¡¡in¡¡ActiveCurrencyTrader¡£¡¡By¡¡defining¡¡your¡¡own¡¡methods£»¡¡you¡¡are¡¡controlling¡¡and¡¡¡¡
making¡¡sure¡¡that¡¡if¡¡things¡¡change¡¡in¡¡the¡¡future£»¡¡you¡¡can¡¡acmodate¡¡them¡¡without¡¡needing¡¡¡¡
to¡¡change¡¡the¡¡callers¡¡of¡¡ActiveCurrencyTrader¡£¡¡
¡¡¡¡¡¡¡¡¡¡We¡¡have¡¡now¡¡pleted¡¡the¡¡functionality¡¡of¡¡ActiveCurrencyTrader£»¡¡so¡¡let¡¯s¡¡implement¡¡¡¡
HotelCurrencyTrader¡£¡¡
Implementing¡¡HotelCurrencyTrader¡¡
The¡¡difference¡¡in¡¡features¡¡between¡¡HotelCurrencyTrader¡¡and¡¡ActiveCurrencyTrader¡¡is¡¡the¡¡¡¡
existence¡¡of¡¡a¡¡sizable¡¡spread¡£¡¡
Adding¡¡a¡¡Constructor¡¡to¡¡HotelCurrencyTrader¡¡¡¡
Again£»¡¡we¡¯ll¡¡begin¡¡by¡¡adding¡¡a¡¡constructor¡£¡¡The¡¡HotelCurrencyTrader¡¡constructor¡¡needs¡¡an¡¡¡¡
additional¡¡parameter¡¡value¡¡referencing¡¡a¡¡spread¡£¡¡Following¡¡is¡¡the¡¡code¡¡for¡¡the¡¡¡¡
HotelCurrencyTrader¡¡class£»¡¡including¡¡its¡¡constructor¡£¡¡
Public¡¡Class¡¡HotelCurrencyTrader¡¡
¡¡¡¡¡¡¡¡Inherits¡¡CurrencyTrader¡¡
¡¡¡¡¡¡¡¡Private¡¡_fromCurrency¡¡As¡¡String¡¡
¡¡¡¡¡¡¡¡Private¡¡_toCurrency¡¡As¡¡String¡¡
¡¡¡¡¡¡¡¡Private¡¡_spread¡¡As¡¡Double¡¡
¡¡¡¡¡¡¡¡Public¡¡Sub¡¡New¡¡£¨ByVal¡¡currExchange¡¡As¡¡Double£»¡¡ByVal¡¡spread¡¡As¡¡Double£»¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ByVal¡¡fromCurrency¡¡As¡¡String£»¡¡ByVal¡¡toCurrency¡¡As¡¡String£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ExchangeRate¡¡=¡¡currExchange¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡_fromCurrency¡¡=¡¡fromCurrency¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡_toCurrency¡¡=¡¡toCurrency¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡_spread¡¡=¡¡spread¡¡
¡¡¡¡¡¡¡¡End¡¡Sub¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡ReadOnly¡¡Property¡¡FromCurrency£¨£©¡¡As¡¡String¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Get¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡_fromCurrency¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Get¡¡
¡¡¡¡¡¡¡¡End¡¡Property¡¡
¡¡¡¡¡¡¡¡Public¡¡ReadOnly¡¡Property¡¡ToCurrency£¨£©¡¡As¡¡String¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Get¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡_toCurrency¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Get¡¡
¡¡¡¡¡¡¡¡End¡¡Property¡¡
End¡¡Class¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡178¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
156¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡AP¡¡T¡¡E¡¡R¡¡¡¡¡¡6¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡IN¡¡G¡¡¡¡¡¡T¡¡HE¡¡¡¡¡¡B¡¡AS¡¡IC¡¡S¡¡¡¡O¡¡F¡¡¡¡¡¡OB¡¡J¡¡E¡¡CT¡¡OR¡¡I¡¡E¡¡N¡¡T¡¡E¡¡D¡¡¡¡¡¡P¡¡R¡¡O¡¡G¡¡R¡¡AM¡¡M¡¡IN¡¡G¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡In¡¡the¡¡constructor¡¡of¡¡HotelCurrencyTrader£»¡¡you¡¡can¡¡see¡¡the¡¡additional¡¡parameter¡¡spread¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡spread¡¡parameter¡¡is¡¡assigned¡¡to¡¡the¡¡data¡¡member¡¡_spread¡¡and¡¡represents¡¡a¡¡calculation¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡that¡¡modifies¡¡the¡¡exchange¡¡rate¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Adding¡¡the¡¡Conversion¡¡Methods¡¡to¡¡HotelCurrencyTrader¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Remember¡¡in¡¡the¡¡previous¡¡section¡¡how¡¡the¡¡methods¡¡ConvertTo£¨£©¡¡and¡¡ConvertFrom£¨£©¡¡seemed¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡to¡¡add¡¡no¡¡extra¡¡value¡£¡¡For¡¡HotelCurrencyTrader£»¡¡they¡¡will¡¡add¡¡value¡¡and¡¡illustrate¡¡why¡¡it¡¡is¡¡useful¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡to¡¡create¡¡indirect¡¡exposure¡£¡¡Calculating¡¡what¡¡people¡¡will¡¡receive¡¡for¡¡their¡¡currency¡¡depends¡¡on¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡the¡¡exchange¡¡rate£»¡¡and¡¡in¡¡the¡¡case¡¡of¡¡the¡¡hotel£»¡¡the¡¡exchange¡¡rate¡¡has¡¡a¡¡spread¡£¡¡As¡¡explained¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡earlier¡¡in¡¡this¡¡chapter£»¡¡this¡¡means¡¡you¡¡will¡¡never¡¡get¡¡as¡¡much¡¡as¡¡you¡¡hoped¡¡and¡¡will¡¡always¡¡pay¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡more¡¡than¡¡you¡¡expected¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡The¡¡following¡¡is¡¡the¡¡source¡¡code¡¡for¡¡the¡¡HotelCurrencyTrader¡¡implementations¡¡of¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ConvertTo£¨£©¡¡and¡¡ConvertFrom£¨£©¡£¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡Class¡¡HotelCurrencyTrader¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Inherits¡¡CurrencyTrader¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Private¡¡_fromCurrency¡¡As¡¡String¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Private¡¡_toCurrency¡¡As¡¡String¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Private¡¡_spread¡¡As¡¡Double¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡Sub¡¡New¡¡£¨ByVal¡¡currExchange¡¡As¡¡Double£»¡¡ByVal¡¡spread¡¡As¡¡Double£»¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ByVal¡¡fromCurrency¡¡As¡¡String£»¡¡ByVal¡¡toCurrency¡¡As¡¡String£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ExchangeRate¡¡=¡¡currExchange¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡_fromCurrency¡¡=¡¡fromCurrency¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡_toCurrency¡¡=¡¡toCurrency¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡_spread¡¡=¡¡spread¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Sub¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡ReadOnly¡¡Property¡¡FromCurrency£¨£©¡¡As¡¡String¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Get¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡_fromCurrency¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Get¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Property¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡ReadOnly¡¡Property¡¡ToCurrency£¨£©¡¡As¡¡String¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Get¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡_toCurrency¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Get¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Property¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Public¡¡Function¡¡ConvertTo£¨ByVal¡¡value¡¡As¡¡Double£©¡¡As¡¡Double¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡realExchange¡¡As¡¡Double¡¡=¡¡ExchangeRate¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ExchangeRate¡¡=¡¡realExchange¡¡_spread¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Dim¡¡retval¡¡As¡¡Double¡¡=¡¡ConvertValue£¨value£©¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ExchangeRate¡¡=¡¡realExchange¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Return¡¡retval¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡End¡¡Function¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡179¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡CH¡¡A¡¡PT¡¡E¡¡R¡¡¡¡¡¡6¡¡¡¡¡¡¡ö¡¡¡¡¡¡¡¡L¡¡E¡¡A¡¡R¡¡N¡¡I¡¡N¡¡G¡¡¡¡¡¡T¡¡HE¡¡¡¡¡¡B¡¡AS¡¡IC¡¡S¡¡¡¡O¡¡F¡¡¡¡¡¡O¡¡B¡¡J¡¡E¡¡CT¡¡OR¡¡I¡¡E¡¡N¡¡TE¡¡D¡¡¡¡¡¡P¡¡R¡¡O¡¡G¡¡R¡¡AM¡¡M¡¡IN¡¡G¡¡157¡¡