友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
狗狗书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

VB2008从入门到精通(PDF格式英文版)-第76章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 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 
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!