670 likes | 815 Views
Microsoft Visual Basic 2010: Reloaded Fourth Edition. Chapter Eight Sub and Function Procedures. Classes and Procedures Function and Sub Procedures Passing Variables by Value and by Reference Using Function and Sub Procedures in the Wage Calculator Application Optional Parameters
E N D
Microsoft Visual Basic 2010: ReloadedFourth Edition Chapter Eight Sub and Function Procedures
Classes and Procedures Function and Sub Procedures Passing Variables by Value and by Reference Using Function and Sub Procedures in the Wage Calculator Application Optional Parameters The Shipping Time Application Date Variables DateTimerPicker Control Timer Control Overview
Introduction • The best way to develop and maintain a large application is to construct it from smaller, more manageable pieces. • This technique is known as divideandconquer(also called componentization). • Manageable pieces include program components—known as procedures.
Classes and Procedures • The key to creating large applications is tobreak them into smaller pieces. • In object-oriented programming, these pieces consist primarily of classes, which can be further broken down into methods. • Programmers combine programmer-defined classes and methods with preexisting code inthe .NET Framework Class Library. • Using preexisting code saves time, effort and money. • The concept of reusingcode increases efficiency for application developers.
Classes and Procedures (Cont.) • Figure 13.2 explains several pre-existingVisual Basic methods. Figure 13.2|Some predefined Visual Basic methods.(Part 1 of 2.)
Classes and Procedures (Cont.) Figure 13.2|Some predefined Visual Basic methods.(Part 2 of 2.)
Functions and Sub Procedures • Procedure: a block of program code that performs a specific task • Function procedure: returns a value after performing its task • Sub procedure: does not return a value • Event procedure: • Sub procedure that is associated with a specific object and event • Automatically processed when the associated event occurs • Independent Sub procedure: • Collection of code that can be invoked from one or more places in an application • Not associated with an event • Processed only when called (invoked)
Calling a Sub Procedure Figure 8-2: How to call an independent Sub procedure
Including Parameters in a Sub Procedure • Parameter: stores data that is passed to the procedure when the procedure is invoked • When calling a procedure with parameters, you must pass: • The same number of arguments • The same type of arguments • The arguments in the same order as declared in the procedure • Can pass a variable, named constant, literal constant, or keyword as parameter
Passing Variables • Each variable has a value and a unique memory address • Variable can be passed to a procedure in two ways: • By value: you pass the variable’s value • By reference: you pass the variable’s address • Passing by value: the procedure receives only the value and cannot change the actual variable’s value • Passing by reference: the procedure receives the address and can make changes to the variable’s value
Passing Variables by Value • Use the keyword ByVal before the parameter in the procedure declaration • ByVal is the default method of passing variables • Procedure cannot change the actual variable’s value Figure 8-5: Sample run of the Pet Information application
Figure 8-6: Partial code for the Pet Information application
Passing Variables by Reference • Use the keyword ByRef before the parameter in the procedure declaration • Procedure receives the address of the variable and is able to change the variable’s value Figure 8-7: Sample run of the Gross Pay application
Figure 8-8: CalcGrossPay procedure and calcButton_click event procedure
Function Procedures • Functionprocedure (or Function): • Block of code that performs a specific task • Returns a value after completing its task • Visual Basic contains many built-in functions • You can create your own functions with or without parameters • A function is invoked by including its name with any arguments in a statement
Function Procedures (cont'd.) • Function procedure header: • Asdatatype clause indicates the type of the return value • Function procedure footer statement: • End Function • Returnkeyword: • Sets the value to be returned by the function • Ends the function
Function Procedures (cont'd.) Figure 8-18: How to invoke a Function procedure
The Circle Area Calculator Application Figure 8-19: Sample run of the Circle Area Calculator application
The Circle Area Calculator Application (cont’d.) Figure 8-20: Partial code for the Circle Area Calculator application
Creating a Function ProcedureThat Returns the Largest of Three Numbers TextBoxes used toinput three values Figure 13.11|Maximum application in Design view.
Creating a Function Procedure ThatReturns the Largest of Three Numbers (Cont.) • Double click the MaximumButton to create an event handler. • Note that Maximum has been underlined in blue, because Function procedure Maximum has not yet been defined (Fig. 13.12). Calling a procedurethat has not yet been defined is an error Figure 13.12|Invoking Function procedure Maximum.
Creating a Function Procedure ThatReturns the Largest of Three Numbers (Cont.) • Create the Function procedure Maximum • The maximum is determined by using the Maxmethod of .NET Framework Class Library class Math (Fig. 13.14). • The Return statement terminates executionof the procedure and returns the result of finalMaximum. Calling Math.Max to determine the maximum of two values Figure 13.14|Math.Max returns the larger of its two arguments.
Introducing the EnhancedWageCalculator Application • A payroll company calculates the gross earnings per week of employees. Employees’ weekly salaries are based on the number of hours they worked and their hourly wages. Create an application that accepts this information and calculates each employee’s total earnings. The application assumes a standard work week of 40 hours. The wages for 40 or fewer hours are calculated by multiplying the employee’s hourly wage by the number of hours worked. Any time worked over 40 hours in a week is considered “overtime” and earns time and a half. Salary for time and a half is calculated by multiplying the employee’s hourly wage by 1.5 and multiplying the result of that calculation by the number of overtime hours worked. The total overtime earned is added to the user’s gross earnings for the regular 40 hours of work to calculate the total earnings for that week.
The Enhanced WageCalculator Application Figure 13.1|WageCalculatorrunning. • Click the CalculateButton. The result ($475.00) is displayed in the Grossearnings:Label.
Creating a Sub Procedure within theWageCalculator Application • Double click the CalculateButton to generatean event handler (Fig. 13.16). Call to DisplayPay Figure 13.16|calculateButton_Click calls DisplayPay.
Creating a Sub Procedure withinthe WageCalculator Application (Cont.) DisplayPay calculates and displays the user’s gross earnings Figure 13.17|Sub procedure DisplayPay definition.
Creating a Function Procedure withinthe WageCalculator Application • Note that the return type of the procedure is Boolean (Fig. 13.18)—the value returned by the procedure must be a Boolean. CheckOvertime determines ifthe user has worked overtime Figure 13.18|Function procedure CheckOverTime definition.
Creating a Function Procedure within theWageCalculator Application (Cont.) • In Sub procedure DisplayPay, replace the statement on line 26 (Fig. 13.19). Call to procedureCheckOvertime Figure 13.19|DisplayPay calls Function procedure CheckOvertime.
Outline • Figure 13.20 presents the source codeof the application. (1 of 3 ) Call toSub procedure that calculates and displays wages
Outline (2 of 3 ) Sub procedure header specifies parameter names and types Call to Function procedure that determines if user has worked overtime
Outline (3 of 3 ) EndSub keywords indicate the end of Sub procedure definition Function procedure header specifies parameter names and types as well as a return type EndFunction keywords indicate the end of Function procedure definition
Optional Parameters • When a procedure is invoked repeatedly with the same argument value, you can specify that such a parameter is an Optionalparameter. • When the argument for an Optional parameter is omitted, the compiler rewrites the procedure call, inserting the default value. • There are three rules for using Optionalparameters: • Each Optional parameter must have a default value. • The default value must be a constant expression. • All parameters after an Optional parameter must also be Optional parameters.
Optional Parameters (Cont.) • Consider the FunctionBoxVolume: Function BoxVolume( Optional ByVal length As Integer = 1, _Optional ByVal width As Integer = 1, _ Optional ByVal height As Integer = 1 ) As IntegerReturn length * width * heightEnd Function' BoxVolume • Each parameter has a default value specified with an = and a literal value (1).
Optional Parameters (Cont.) • You can now invoke FunctionBoxVolume several different ways: BoxVolume() ' returns 1; default values used for length, width, heightBoxVolume(10) ' returns 10; default values used for width, heightBoxVolume(10, 20) ' returns 200; default value used forheightBoxVolume(10, 20, 30) ' returns 6000; no default values usedBoxVolume(, 20, 30) ' returns 600; default value used for lengthBoxVolume(10, , 30) ' returns 300; default value used for width • Comma placeholders are used when an omitted argument is not the last argument in the call.
Associating a Procedure with Different Objects and Events • Handles keyword: • Appears in event procedure header • Indicates the object and event associated with the procedure • Controls when the procedure is invoked • By default, the event procedure name matches the name of the associated object and event
Figure 8-15: Some of the Gadis Antiques application’s code from Figure 8-4
Associating a Procedure with Different Objects and Events (cont'd.) • Event procedure: • Name of event procedure can be changed • Can be associated with more than one object and event as long as each event has the same parameters • Add the additional object/events to the Handles clause • Sender parameter: contains the memory address of the object that raised the event • e parameter: contains additional information about the object that raised the event
Associating a Procedure with Different Objects and Events (cont'd.) Figure 8-16: ClearLabels procedure
ShippingTime Application • A seafood distributor has asked you to create an application that calculates the delivery time for fresh seafood shipped from Portland, Maine, to its distribution center in Las Vegas, Nevada. The distributor has arrangements with local airlines to guarantee that seafood ships on flights that leave either at noon or at midnight. However, the airport requires the distributor to drop off the seafood at the airport at least one hour before each flight. When the distributor specifies the drop-off time, the application should display the delivery time in Las Vegas. This application should take into account the three-hour time difference and thesix-hour flight time between the two cities. The application should allow the user to select drop-off times within the current day. The application should also include a running clock that displays the current time.
Test-Driving the ShippingTime Application • The default drop-off time (Fig. 14.1) is set to your computer’s current time when you execute the application. • The time displayed in the Current time is:Labelupdates to the current time once each second. DateTimePicker with up and down arrows GroupBoxes Figure 14.1|Shipping Time application.
Introducing the Shipping TimeApplication: Design Elements When the Form loads: Set range of possible drop-off times to any time in the current day Call sub procedure DisplayDeliveryTime to determine and display the shipment’s delivery time When the user changes the drop-off time: Call sub procedure DisplayDeliveryTime to determine and display the shipment’s delivery time After one second has elapsed: Update and display the current time When the DisplayDeliveryTime procedure gets called: Call function DepartureTime to determine the time the shipment’s flight departs
Introducing the Shipping TimeApplication: Design Elements (Cont.) Add three hours to determine the delivery time (takes into account 6 hours for time of flight minus 3 hours for the time difference) Display the delivery time When the DepartureTime procedure gets called: Select correct Case based on the hour the shipment was dropped off Case where the drop-off hour is between the values 0 and 10 Delivery set to depart on noon flight of current day Case where the drop off hour is 23 Delivery set to depart on noon flight of next day Case where none of the preceding Cases match Delivery set to depart on midnight flight of current day
Date Variables • The primitive type Date simplifies manipulation, storage and display of date (and time) information. • Date corresponds to the DateTime type in the .NET Framework Class Library. • You use the New keyword when creating a Date value. In the code, the statement Dim delivery AsDate = NewDate(2003, 1, 1, 0, 0, 0) • The New keyword calls the Date’s constructor. A constructor is a procedure that initializes an object when it’s created. Date constructor Date variable
Date Variables (Cont.) • Figure 14.2 explains the values used in Date’s constructor. Figure 14.2|Date constructor arguments.
Date Variables (Cont.) • Method overloading allows you to create multiple methods with the same name but different signatures. • This means different numbers and types of parameters, or with parameters ordered differently (by type). • When an overloaded method is called, the compiler selects the proper method by examining the number, types and order (by type) of the arguments.
Date Variables (Cont.) • After assigning a value to a Date variable, you can access its properties using the member-access (dot) operator, as follows: Dim year = delivery.Year ' retrieves Date delivery's yearDim month = delivery.Month ' retrieves Date delivery's monthDim day = delivery.Day ' retrieves Date delivery's dayDim hour = delivery.Hour ' retrieves Date delivery's hourDim minute = delivery.Minute ' retrieves Date delivery's minute Dim second = delivery.Second ' retrieves Date delivery's second
Date Variables (Cont.) • Instead of using arithmetic operators to add or subtract values in Date variables, you must call the correct method, using the member-access operator (Fig. 14.4). Figure 14.4|Date methods that perform various