嗔秤戻幣�哉膵�云利匈嬉蝕湊蛸賜�塋床四衲���萩晦編報炎嘔囚^泡仟 ̄云利匈�《超噌�殻窟�嵌虜隆輓麈觚翹瀘卉韮�仍仍�。� 烏御危列
浪慕利 卦指云慕朕村 厘議慕尺 厘議慕禰 TXT畠云和墮 序秘慕杏 紗秘慕禰

VB2008貫秘壇欺娼宥(PDF鯉塀哂猟井)-及62嫗

梓囚徒貧圭�鮗� ○ 賜 ★ 辛酔堀貧和鍬匈��梓囚徒貧議 Enter 囚辛指欺云慕朕村匈��梓囚徒貧圭�鮗� ● 辛指欺云匈競何��
!!!!隆堋響頼��紗秘慕禰厮宴和肝写偬堋響��




           print that forces the implementation to take a certain shape。 Ideas when coded are Visual Basic  

           interfaces�察�which cannot be executed by themselves。 From a programmatic point of view�察�an  

           interface is like a MustInherit base class in that you can reference an interface�察�but you cannot  

           instantiate an interface。 To get a working idea�察�you write an implementation�察�or implement an  

           interface。 

                The following is an example of a Visual Basic interface。 



           Interface IExample 

           End Interface 



                The keyword Interface is associated with an identifier  IExample�察�and from a syntax perspec

           tive is used like the Class keyword。 You can associate the public scope with an interface。 The  

           interface contains methods and properties that determine the behavior of the classes that  

           implement the interface。 Consider the following source code�察�which defines an interface with  

           a single method and single property。 



           Interface IExample  

               Sub Method�┌� 

               Property ExampleProperty As Integer 

           End Interface 



                When you define an interface�察�the included methods and properties do not have an imple

           mentation because you are defining a signature。 A class that implements an interface will play  

           a game called ^match the properties and method signatures。 ̄  



           *Note  Generally speaking�察�the naming convention used to define a type is verbose and self´explanatory。  

           When I define interfaces�察�I use identifiers prefixed with a capital I�察�like IExample。 The capital I is a mon  

           convention used to identify interfaces。 You should use this notation to be consistent with other  code。 



                The following code is a rudimentary implementation of the defined interface。 


´´´´´´´´´´´´´´´´´´´´´´Page 189´´´´´´´´´´´´´´´´´´´´´´´

                            CH AP T E R   7   *    L E AR N IN G   AB O U T   CO M P O N E N TS   AN D   C L AS S  H I E R AR C HI E S 167 



Class ExampleImplementation  

    Implements IExample 



    Public Sub Method�┌� Implements IExample。Method 

    End Sub 



    Public Property ExampleProperty�┌� As Integer Implements IExample。ExampleProperty 

        Get 

            Return 0 

        End Get 

        Set��ByVal value As Integer�� 

        End Set 

    End Property 

End Class 



      ExampleImplementation implements the interface IExample using an explicit cross´reference  

of the method or property signature。 The cross´reference of interface to implementation in the  

sample method is prefixed with the keyword Implements�察�and the appropriate interface and  

method。 The method name doesn¨t need to be the same as the interface¨s method name。 All  

that matters is the signature of the method�察�or property。  



*Note  Visual Basic and the CLR are single´inheritance models in that a class can subclass only a single class。  

But a Visual Basic class can implement as many interfaces as necessary。 If a class subclasses another class�察�it uses  

Inherits�察�if it implements interfaces�察�it uses Implements。 The class is the first identifier after the colon。  



     When implementing an interface�察�all of the methods and properties of the interface must be  

implemented in the class。 If they are not�察�then when the source code is piled�察�the piler will  

plain about missing methods or properties and consider the implementation as inplete。 

     As inheritance is used�察�you can think of  IExample as a base class that has no implementa

tion。 The following code illustrates how to instantiate the implementation and assign the  

instance to a variable that has the interface as its type。 



Dim cls As IExample = New ExampleImplementation�┌� 

cls。Method�┌� 



     In the example�察�the class ExampleImplementation is instantiated and assigned to a variable  

cls of type  IExample。 Think of it as saying�察 �I am instantiating ExampleImplementation and  

assigning the instance to the type IExample that is in my inheritance hierarchy。 ̄ When the  

method cls。Method�┌� is called�察�the caller is really calling  ExampleImplementation。Method�┌��察 �

although the caller would not know that�察�as it is using the base type IExample。 

     The mechanics of defining an interface and its associated implementation are straightfor

ward�察�but why would you do it�拭�To explain�察�I¨ll use a real´life analogy。 

     Let¨s say that you are going to a restaurant for an evening of fine dining。 When you are  

sitting at the table�察�you expect a waiter to take your order�察�serve your food�察�remove the used  

dishes�察�and give you the bill。 All of these actions are ideas used to run a restaurant that serves a  


´´´´´´´´´´´´´´´´´´´´´´Page 190´´´´´´´´´´´´´´´´´´´´´´´

168       CH AP T E R   7   *    L E A R N IN G   AB OU T   CO M P O N E N TS   AN D  C L AS S  H I E R AR C H IE S 



           clientele。 You make use of the idea�察�as do millions of other clients。 The idea is applied across all  

           restaurants。 

                Think about this a bit。 The idea is a waiter�察�but the implementation is a human。 When you  

           sit down�察�your waiter may introduce himself by his name�察�but do you ever use the name�拭�Most  

           people don¨t�察�because they think of the waiter as a human that takes their order�察�serves their  

           food�察�and so on。 The point is that the human is the implementation�察�but you really only care  

           about a waiter fulfilling the scope of the task。 For example�察�while you might be sympathetic that  

          your waiter is having a bad day�察�you want him to be chipper and happy�察�and to do his job of  

           taking your order�察�serving your food�察�and so on。 Bluntly put�察�you probably would not care if the  

          waiter¨s puppy had been run over by a truck。 

                This is exactly what interfaces and implementations are about。 The interface defines a role  

           of tasks that an implementation is supposed to implement。 You don¨t care if the implementa

           tion is capable of doing more�察�or if the implementation is ^having a bad day。 ̄ All you care about  

           is that the implementation does what the interface says it should do。  

                What you have is a decoupling of the idea from the interface�察�just like at the restaurant�察 �

          where you don¨t care if Tom�察�Dick�察�Mary�察�or Jane is your server。 In fact�察�would you care if the  

           human waiter were replaced by a robot�拭�Probably not�察�because what you really care about is  

           eating the food。 This is an important aspect of interfaces and implementations�察�in that imple

           mentations are replaceable�察�and you want to be able to swap one implementation for another。 

                When you use interfaces and types that implement interfaces�察�you are writing ponent

           oriented software。 ponents and inheritance are two different object´oriented techniques。  

          You use inheritance to implement interfaces�察�but ponents serve the purpose of making  

           ideas happen。 



           Understanding How Inheritance and ponents Work 



           Inheritance is the act of defining base classes with functionality that may or may not be over

           ridden or overloaded�察�as explained in the previous chapter。 ponents define subsystems  

           that are put together like pieces of a puzzle。 The idea behind ponents is to be able to asso

           ciate two interface instances and make them work with each other without knowing what the  

           other does。 

                To get a feeling of the difference between inheritance using classes and ponents that  

           use interfaces and classes�察�we will look at a classic example of inheritance and how that example  

           translates to ponents。 



           Ill
卦指朕村 貧匯匈 和匯匈 指欺競何 壘��0�� 家��0��
隆堋響頼��紗秘慕禰厮宴和肝写偬堋響��
梁椣戻幣�� 梁心弌傍議揖扮窟燕得胎��傍竃徭失議心隈才凪万弌誌育断蛍�輌臆惨軼僑〃�燕慕得珊辛參資誼持蛍才将刮襲潜��範寔亟圻幹慕得 瓜寡追葎娼得辛參資誼寄楚署衛、持蛍才将刮襲潜填��