Exercise 9a: Đặt vấn đề As a programmer for a wildife conservation (bảo tồn) project, you work with biologists (sinh học) who observe elephants. Currently, the scientist are notebooks to keep track of their elephants. They also record each elephant’s trumpeting sound in a wav file. Your job is to create an Arcmap environment for their work. Sine elephant object don’t exist in VBA or ArcGIS, you will program a new elephant class. The biologists want to store and retrieve elephant names and ages. They also want to be able to hear an elephant’s trumpet sound. You can use that information to make a UML diagram of the elephant class.
Exercise 9a: Đặt vấn đề In this exercise, you will do the service-side programming to make an elephant class based on the diagram. Your elephant class will consist of two variables and a procedure that plays a sound file. In the next exercise, you will do the client-side programming and write code to create elephant objects out of the class and use their properties and methods.
Exercise 9: 1.Start Arcmap and open ex09a.mxd in the C:\ArcObjects\Chapter09 foder. The map is empty because the elephant class you are about to create won’t be linked to any geographic location. In later chapers, you will learn how to create geopraphic features line points, lines, and polygons, and assign their geopraphic coordinates and attribute values 2. Click the tools menu, point the macros, and click Visual Basic Editor
Exercise 9: 3.In the project window, right-click Project(ex09a.mxd), point to insert, and click class module Class 1 opens and looks just like any other code module. This one will store your elephant class and the code for its properties and methods. 4.In the properties window, for the name property, replace class 1 with elephant. Press Enter. The elephant class is create. Now you will add its properties.
Exercise 9: 5. In the elephant class module, add the following two lines of code to declare age and name variables. Option Explicit Public Age As Integer Public Name As String Notice that you do not write code to set these varibles. That’s because they will be set by client-side programmers(including you) who make elephant objects out of your elephant class. For exemple, after creating a new elephant, a client-side programmer might write. myElephant.Name = “Benny “ or myElephant.Age = 10
Exercise 9: Now that the properties are done, you will code the trumper method. 6. With the elephant code module active, click the insert menu and click procedure. 7. In the add procedure dialog box, type trumpet as the name. Make sure the Type is set to Sub and the Scope to Public. If the trumper method were going to return a value, like a decibel level, you would make it a function. Since it just plays a sound file, you will make it a subroutine.
Exercise 9: 9. Inside the Trumpet subroutine, add the following code. (If you have installed the data at the different location, you will need to modify the path accordingly.) sndPlaySound “C:\ArcObjects\Data\elephant.wav”, SND_ASYNC
Exercise 9: This code is a bit different from anything you’ve seen before. The sndPlaySound function does not come from either VBA or ArcObjects, but is a Microsoft Windows Application Programming Interface (API) function. API functions carry out operating system operations like playing sound files, finding out who is logged on to a computer, or retrieving the path to the Temp folder. To call an API function in VBA, you first have to declare it in another code module. (You did this in chapter 6 when you declared the Kilogram ToPound function has already been declared for you in the standard module called PlaySounds.
Exercise 9: The sndPlaySound function has two arguments: the first is a path to a.wav sound file, and the second is a constant, which can be either SND_SYNC or SND_ASYNC. * The SND_SYNC option pauses the code until the sound fie has finished playing. * The SND_ASYNC option lets more code run while the sound file plays. Functions return a value, but you don’t always have to use it. The sndSoundPlay function returns True if the sound plays and False if it doesn’t. To keep the Elephant code simple, you aren’t going to use the returned value. To learn more about the sndPlaySound function andits options, go to msdn.microsoft.com and the search for sndPlaySound. Your elephant class is now complete. Granted, it’s a pretty simple class, but it relies on the same coding principles you would use to create more robust classes. You are now ready to make lephant objects.
Exercise 9: 10. If you want to save your word, click the File menu in ArcMap and click Save As. Navigate to C:\ArcObjects\Chapter09. Rename thefile my_ex09a.mxd and click Save. If you are continuing with the next exercise,leave ArcMap open. Otherwise close it.
Chapter 9: Creating objects Up to now, you have created objects with the aid of a user interface. For example, in chapter 3, you created a new form object from the Insert menu, and you then created CommandButton objects by dragging them from the Visual Basic Editor Toolbox onto the form. Now you will create objects with code, by declaring and setting variables. Variables represent not only basic data types like numbers, dates, and strings, but can also represent objects.
Chapter 9: Creating objects Variables that represent basic data types are called intrinsic variables. You declare and set them with code like the following: Dim X As Integer X = 365 Then you use them Msgbox X
Chapter 9: Creating objects Variables that represent objects are called object variables. These variables are also declared and set, but the code is a little different. When you declare an object variable, you use the class name as a data type. For an elephant object, you would declare the variables as Elephant. Dim E As Elephant The line of code to set an object variables begins with the Set keyword. If you are creating a new object, you also use the New keyword between the equals sign and the class name. So to create a new elephant object, you would write the following line of code: Set E = New Elephant
Chapter 9: Creating objects Now that you have an object variable called E, which refers to a new elephant, you can use the variable to set the elephant’s properties and run its methods. E.Name = “Mark” E.Trumpet
Chapter 9: Creating objects Then, if you want, you can create some more elephants. Dim E1 As Elephant Dim E2 As Elephant Set E1 = New Elephant Set E2 = New Elephant After creating them, you can set their properties so that each one is unique. E1.name = “jerry” E1.age = 24 E2.name = “ron” E2.age = “ron”
Exercise 9b: Đặt vấn đề In the previous exercise, you made an elephant class and programmed its properties and methods. In this exercise, you will make new objects out of this class and you their properties and methods.
Exercise 9b: 1. Start arcmap and open ex09b.mxd in the c:/arcobjects/chapter09 folder. On the standard toolbar you see the addelephant button next to and data button. 2. Right-click the add elephant button and click view source. You see the addelephant button’s empty click event. You will write code there to create elephant objects from the elephant class.
Exercise 9b: 3. In the this document code module, in the addelephant click event,add the following line of code to declare an object variable. Dim theElephant as elephant 4. Add the following line of code to create a new elephant object. Set theElephant = new elephant After the dim and set lines run, a new object is in your computer’s memory and you have a variable (theElephant) to refer to it. 5. Type theElephant. (including the dot). Your elephant class is recognized by VBA as a full-fledged class. As with any orther object variable, after you type the dot you see the drop-down list of its properties and methods.
Exercise 9b: Next,you will write code to set this new elephant’s properties. 6. Finish the line of code you started above by using an input box to set the elephant’s name property. theElephant.name =inputbox(“enter name:”) 7. Then set the elephant’s age property theElephant.age = inputbox(“inter age”) When these two lines run,input boxes appear to your biologist-users
Exercise 9b: Next,you will write a line of code that displays the values back to the user. 8. Add a line of code to display the new elephant’s name and age. In the message box, the elephant’s name will be on the top line. vbCrLf (carriage return line feed) will put the elephant’s age on the second line. Msgbox “name: “& theElephant.name & vbCrLf &_ “age: “& theElephant.age,_ Vbinformation,”add elephant” 9. At the end of the addEleplant procedure, just before the End Sud, add the following line of code to run the Truimpet method. TheElephant.Trumpet
Exercise 9b: Now you will test the AddEleplant button. 10. Close Visual Basic Editor. 11. On the Arcmap Standard toolbar, click AddElephant. 12. In the first input box,type jack for the name. Click Ok 13. in the second input box type 35 for the age. Click Ok. You see the new elephant’s data display. 14. Click Ok on the Add Elephant message box. After clicking ok, you hear the elephant trumpet. If you don’t hear the trumpet, check your computer’s volume, speakers, and sound card. 15. If you want to save your word, click the File menu in ArcMap and click Save As. Navigate to C:\ArcObjects\Chapter09. Rename the file my_ ex09b.mxb and click save. If you are continuing with the next chapter, leave ArcMap open. Otherwise close it.