Presentation is loading. Please wait.

Presentation is loading. Please wait.

Object-Oriented Application Development Using VB.NET 1 Chapter 7 Adding Responsibilities to Problem Domain Classes.

Similar presentations


Presentation on theme: "Object-Oriented Application Development Using VB.NET 1 Chapter 7 Adding Responsibilities to Problem Domain Classes."— Presentation transcript:

1 Object-Oriented Application Development Using VB.NET 1 Chapter 7 Adding Responsibilities to Problem Domain Classes

2 Object-Oriented Application Development Using VB.NET 2 Objectives In this chapter, you will: Write a new problem domain class definition Create custom methods Write class variables and methods Write overloaded methods Work with exceptions

3 Object-Oriented Application Development Using VB.NET 3 Writing a New Problem Domain Class Definition Slip class –Attributes slipId slipWidth slipLength –Custom method LeaseSlip

4 Object-Oriented Application Development Using VB.NET 4 Writing a New Problem Domain Class Definition Class definition of Slip –Class header Public Class Slip –Attribute definition statements Private slipId As Integer Private slipWidth As Integer Private slipLength As Integer

5 Object-Oriented Application Development Using VB.NET 5 Writing a New Problem Domain Class Definition Class definition of Slip (Continued) –Parameterized constructor Enables attributes to be automatically populated whenever an instance is created Public Sub New(ByVal aSlipId As Integer, _ ByVal aSlipWidth As Integer, ByVal aSlipLength As Integer) Argument data types must be assignment compatible with parameter data types

6 Object-Oriented Application Development Using VB.NET 6 Writing a New Problem Domain Class Definition Class definition of Slip (Continued) –Statements to populate the Slip attributes To avoid redundant code, setter methods are invoked instead of directly assigning the values 'invoke setter methods to populate attributes SetSlipId(aSlipId) SetSlipWidth(aSlipWidth) SetSlipLength(aSlipLength)

7 Object-Oriented Application Development Using VB.NET 7 Writing a New Problem Domain Class Definition Class definition of Slip (Continued) –TellAboutSelf method Invokes the three getters Concatenates the returned values Returns the result Public Function TellAboutSelf() As String Dim info As String info = "Slip: Id = " & GetSlipId() & ", Width = " & GetSlipWidth() _ & ", Length = " & GetSlipLength() Return info End Function

8 Object-Oriented Application Development Using VB.NET 8 Writing a New Problem Domain Class Definition Class definition of Slip (Continued) –TellAboutSelf method Polymorphic methods –Two methods with the same name, residing in different classes, that behave differently –Example: TellAboutSelf methods for Customer and Slip classes –Setter and getter methods

9 Object-Oriented Application Development Using VB.NET 9 Creating Custom Methods Custom methods –Process data Accessor methods –Store and retrieve attribute values LeaseSlip method –A custom method –Computes the lease fee for a slip Fees range from $800 to $1,500 depending on the slip’s width

10 Object-Oriented Application Development Using VB.NET 10 Creating Custom Methods LeaseSlip method –A Function procedure Will return a value: the lease fee amount –Has Public accessibility Can be invoked by any object –Return data type: Single Will compute and return the lease fee, a dollar amount –Method header: Public Function LeaseSlip() As Single

11 Object-Oriented Application Development Using VB.NET 11 Creating Custom Methods Select statement for computing lease fee: Dim fee As Single Select Case slipWidth Case 10 fee = 800 Case 12 fee = 900 Case 14 fee = 1100 Case 16 fee = 1500 Case Else fee = 0 End Select Return fee

12 Object-Oriented Application Development Using VB.NET 12 Writing Class Variables and Methods Instance variables and methods –Each instance has a copy Class variables and methods –Shared by all instances of the class –Each instance does not have its own copy –Declared using the keyword Shared

13 Object-Oriented Application Development Using VB.NET 13 Writing Class Variables and Methods Variable numberOfSlips can be used to track the total number of slips numberOfSlips variable –Initialized to 0 –Private accessibility Will be accessed only by methods within the Slip class Private Shared numberOfSlips As Integer = 0

14 Object-Oriented Application Development Using VB.NET 14 Writing Class Variables and Methods Code added to the Slip constructor for the numberOfSlips variable 'increment shared attribute numberOfSlips += 1 –Increments numberOfSlips each time a slip instance is created

15 Object-Oriented Application Development Using VB.NET 15 Writing Class Variables and Methods GetNumberOfSlips() method –Returns the contents of numberOfSlips –Written as a Function procedure Returns a value –Written as a shared method Not associated with any individual instance –Has Public accessibility Will be invoked by other classes

16 Object-Oriented Application Development Using VB.NET 16 GetNumberOfSlips() method 'shared (class) method Public Shared Function GetNumberOfSlips() As Integer Return numberOfSlips End Function

17 Object-Oriented Application Development Using VB.NET 17 Writing Overloaded Methods Method signature: Name and parameter list A class definition can contain several methods with the same name, as long as their parameter lists differ –VB.NET identifies a method by its signature, not only by its name Overloaded method: a method that has the same name as another method in the same class, but a different parameter list

18 Object-Oriented Application Development Using VB.NET 18 Overloading a Constructor Problem –Most slips at Bradshaw Marina are 12 feet wide and 25 feet long, but a few have different widths and lengths –Current Slip constructor requires three arguments: slipId, slipWidth, and slipLength

19 Object-Oriented Application Development Using VB.NET 19 Overloading a Constructor Solution –Write a second Slip constructor that has only a single parameter for slipId –Include statements to assign the default values of 12 and 25 to slipWidth and slipLength, respectively

20 Object-Oriented Application Development Using VB.NET 20 Overloading a Constructor Constants can be used for the default width and length values: 'constants Private Const DEFAULT_SLIP_WIDTH As Integer = 12 Private Const DEFAULT_SLIP_LENGTH As Integer = 25

21 Object-Oriented Application Development Using VB.NET 21 Overloading a Constructor Code for second constructor: '1-parameter constructor 'Overloads keyword not used with constructors Public Sub New(ByVal aSlipId As Integer) 'invoke 3-parameter constructor, passing default values Me.New(aSlipId, DEFAULT_SLIP_WIDTH, DEFAULT_SLIP_LENGTH) End Sub

22 Object-Oriented Application Development Using VB.NET 22 Overloading a Constructor VB.NET determines which constructor to invoke by the argument list –If the argument consists of three values Original constructor with three parameters is executed –If the argument consists of a single value New constructor with one parameter is invoked

23 Object-Oriented Application Development Using VB.NET 23 Overloading a Custom Method Problem –Bradshaw Marina permits a discounted lease fee under certain conditions Solution –A second version of the LeaseSlip method that accepts a value for the percentage discount Will overload the original LeaseSlip method

24 Object-Oriented Application Development Using VB.NET 24 Overloading a Custom Method Two LeaseSlip methods in Slip, each with a different signature –Original LeaseSlip has an empty parameter list –Second LeaseSlip has a parameter variable named aDiscountPercent

25 Object-Oriented Application Development Using VB.NET 25 Overloading a Custom Method Header for new method –Must contain the keyword Overloads Public Overloads Function LeaseSlip(ByVal aDiscountPercent As Single) _ As Single

26 Object-Oriented Application Development Using VB.NET 26 Overloading a Custom Method New method: 'overloaded custom method LeaseSlip if discount requested Public Overloads Function LeaseSlip(ByVal aDiscountPercent As Single) _ As Single 'invoke LeaseSlip() to get fee Dim fee As Single = Me.LeaseSlip() 'calculate and return discount fee Dim discountFee As Single = fee * (100 - aDiscountPercent) / 100 Return discountFee End Function

27 Object-Oriented Application Development Using VB.NET 27 Overloading a Custom Method VB.NET will execute the appropriate method depending on the argument list –If no argument is passed Original LeaseSlip method is invoked –If an argument is coded Overridden method is executed

28 Object-Oriented Application Development Using VB.NET 28 Working with Exceptions An exception –Used to notify the programmer of errors, problems, and other unusual conditions that may occur while the system is running –An instance of the Exception class or one of its subclasses

29 Object-Oriented Application Development Using VB.NET 29 Working with Exceptions VB.NET uses five keywords to deal with exceptions –Try Used by the client –Catch Used by the client –Finally Used by the client –End Try Used by the client –Throw Used by the server

30 Object-Oriented Application Development Using VB.NET 30 Working with Exceptions

31 Object-Oriented Application Development Using VB.NET 31 Data Validation for slipId slipId value should be within the range of 1 through 50 SetSlipId method –Data validation logic used to verify that slipId values are in the range of 1 through 50 –Create and throw an exception instance if a value is outside the valid range

32 Object-Oriented Application Development Using VB.NET 32 Data Validation for slipId Constant MAXIMUM_NUMBER_OF_SLIPS –Simplifies future maintenance: should Bradshaw Marina decide to have docks with more than 50 slips Private Const MAXIMUM_NUMBER_OF_SLIPS As Integer = 50

33 Object-Oriented Application Development Using VB.NET 33 Data Validation for slipId If statement –Determines if aSlipId is within valid range –If a value is outside acceptable range An instance of Exception class is created and thrown

34 Object-Oriented Application Development Using VB.NET 34 Data Validation for slipId Public Sub SetSlipId(ByVal aSlipId As Integer) 'reject slipId if maximum If aSlipId MAXIMUM_NUMBER_OF_SLIPS Then Throw New Exception("Slip Id not between 1 and " _ & MAXIMUM_NUMBER_OF_SLIPS) Else slipId = aSlipId End If End Sub

35 Object-Oriented Application Development Using VB.NET 35 Data Validation for slipWidth Code must be added to the SetSlipWidth method to verify that the width parameter is a valid width value: 10, 12, 14, or 16 VALID_SLIP_WIDTHS –An integer array –Stores valid width values Private Shared ReadOnly VALID_SLIP_WIDTHS As Integer() = {10, 12, 14, 16}

36 Object-Oriented Application Development Using VB.NET 36 Data Validation for slipWidth Validation logic –Will iterate the array, seeking a match between the parameter value received (aSlipWidth) and an array value –If a matching value is found Parameter is valid –If the end of the array is reached without finding a matching value Parameter contains an invalid value An exception is created and thrown

37 Object-Oriented Application Development Using VB.NET 37 Data Validation for slipWidth Validation logic: Dim validWidth As Boolean = False 'search for a valid width Dim i As Integer For i = 0 To VALID_SLIP_WIDTHS.Length - 1 If aSlipWidth = VALID_SLIP_WIDTHS(i) Then validWidth = True Next i

38 Object-Oriented Application Development Using VB.NET 38 Data Validation for slipWidth If statement to test validWidth –If true Width attribute is populated with parameter value –If not true An instance of Exception is created and thrown 'if a valid width found, set value If validWidth Then slipWidth = aSlipWidth Else 'else throw exception Throw New Exception("Invalid Slip Width") End If

39 Object-Oriented Application Development Using VB.NET 39 Catching Exceptions If a method that might throw an exception is invoked, the invoking code must be prepared to catch the exception –.NET CLR will terminate processing if an exception is thrown and not caught Try block structure –Keyword Try –Code containing invoking statement or statements –Keyword End Try

40 Object-Oriented Application Development Using VB.NET 40 Catching Exceptions Catch block –Receives and deals with an exception –Must specify a parameter variable to receive a reference to the exception instance Dim aSlip As Slip Try 'force an exception with invalid slipID (150) aSlip = New Slip(150, 10, 25) Console.WriteLine(aSlip.TellAboutSelf()) Catch theException As Exception Console.WriteLine("An exception was caught: " & _ theException.ToString()) End Try

41 Object-Oriented Application Development Using VB.NET 41 Catching Exceptions Finally block –Used to add statements that are to be executed whether or not an exception was caught Finally Console.WriteLine("Finally block always executes")

42 Object-Oriented Application Development Using VB.NET 42 Summary Custom methods: methods which process data Class variables and methods are associated with the class instead of individual instances A new instance is given a copy of all instance variables and access to instance methods A new instance does not get a copy of class variables and methods A method signature consists of the method name and its parameter list VB.NET identifies a method by its signature

43 Object-Oriented Application Development Using VB.NET 43 Summary An overloaded method has the same name as another method in the same class, but a different signature Exceptions notify the programmer of errors, problems, and other unusual conditions that may occur while the system is running Keywords dealing with exceptions: Try, Catch, Finally, End Try, and Throw CLR terminates processing if an exception is thrown and not caught


Download ppt "Object-Oriented Application Development Using VB.NET 1 Chapter 7 Adding Responsibilities to Problem Domain Classes."

Similar presentations


Ads by Google