The forced cast is the use of the method DirectCase。 The cast is forced because a conver sion to the desired type will occur; regardless if it is possible or not。 If the cast is not possible; a cast exception is thrown。 Another way to perform a type cast is to use a query cast; as illustrated by the following code; again assuming the inheritance hierarchy of this section。 Dim backToDerived As Derived = TryCast(baseCls; Derived) In the code; the cast involves using the TryCast method。 This cast is a query because a cast will be attempted。 If the cast is successful; then an instance of the type is assigned to the vari able backToDerived。 If the cast is not possible; then backToDerived is assigned a Nothing value。 No exception is thrown。 This casting technique is possible only for reference types。 …………………………………………………………Page 217…………………………………………………………… 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 195 The Important Stuff to Remember In this chapter; you learned about interfaces and implementations。 Here are the key points to remember: o Using interfaces is not like using inheritance。 They are two separate designs; even though interfaces will use inheritance。 o Interfaces at an abstract level imply ideas of how you would like your application to work。 o Ideas when implemented as interfaces should be general and applicable to multiple application implementations for the domain。 o Ideas are represented using Visual Basic interfaces。 And interfaces are implemented using classes or structures。 But note that interfaces are reference types。 o Factories are used to instantiate implementations and return an instance that imple ments an interface。 Using a factory means that the user of an interface does not need to know which type of implementation object is instantiated。 o Interfaces can be considered as facets that might be targeting a specific characteristic of an implementation。 However; as illustrated in the previous chapter; interfaces do not expose Friend state or the Friend workings of the implementations。 o ponents are a fundamental way of developing code and should be your primary way of writing code。 For the remainder of this book; interfaces will be used whenever possible。 Take notice and try to understand what the idea behind the interface is。 Some Things for You to Do The following are a couple things for you to do to apply what you’ve learned in this chapter。 1。 Implement your own tax system using the predefined base classes。 ■Note Because of the number of possible tax systems; I do not provide an answer for exercise 1。 If you want me to review your answer; please send it to me at christianhgross@gmail。。 2。 Add functionality to the tax engine’s base classes that implement the behavior of a minimum tax…free amount。 This means if your ine is not above the minimum tax free amount; you do not pay taxes。 …………………………………………………………Page 218…………………………………………………………… …………………………………………………………Page 219…………………………………………………………… C H A P T E R 8 ■ ■ ■ Learning About ponent Oriented Architecture So far; you have learned the essentials of Visual Basic。 With the essentials; you can write a functional application that uses classes; objects; interfaces; and inheritance。 In this chapter; you’ll learn about a Visual Basic programming technique that some developers define as structural。 A structural programming technique is when the code does not directly serve to solve a business problem; but solves a problem relating to building the application。 Another purpose of this chapter is to give you more experience with developing ponent oriented code。 In particular; you’ll learn how to develop a kernel。 Developing a kernel demon strates the power and flexibility of the ponent…oriented development approach。 You can build a working system even though you might not know what all of the implementations are ahead of time。 This type of development makes it possible to modularize development; in that individual teams are responsible for certain interfaces。 Then once the pieces have been imple mented; they are fitted together like a jigsaw puzzle。 Of course; interfaces and ponents do not guarantee success; but they do ensure one team does not need to wait for another team to finish its code。 To demonstrate all of these concepts; we’ll build an application that controls lighting in buildings; using the kernel programming approach。 Understanding Kernels Imagine you are the owner of a house or mercial building; and you want to reduce your electricity bill。 One way of doing that is to automate the lighting system of your building so that lights are on when they need to be。 What is unique about this system is that you have a controller and the devices that are controlled。 The controller controls devices that it does not know about ahead of time; but fulfills a contract。 The lighting system is a controller; programmatically called a kernel; because the rooms that it controls are not known initially。 The rooms are known when the controller is used to manage the lighting system。 The kernel programming approach is one where a core of func tionality is developed。 The core functionality by itself does not work; because it relies on other pieces to perform certain tasks。 In programming terms; this is called developing ponents that use interfaces and implementations。 197 …………