Chapter 10: Writing Class Definitions Visual Basic.NET Programming: From Problem Analysis to Program...

Preview:

Citation preview

Chapter 10: Writing Class Definitions

Visual Basic .NET Programming:

From Problem Analysis to Program Design

Visual Basic .NET Programming: From Problem Analysis to Program Design 2

Objectives

• Examine the three-tier design model

• Write a class definition

• Design and write overloaded constructors

• Create polymorphic methods

• Write properties

• Create shared attributes and methods

Visual Basic .NET Programming: From Problem Analysis to Program Design 3

Examining the Three-Tier Design Model

• Three-tier design

– Places objects in OO system into three categories of classes:

• Problem domain

• GUI

• Data access

– Developers define categories of classes when designing and building system

Visual Basic .NET Programming: From Problem Analysis to Program Design 4

Visual Basic .NET Programming: From Problem Analysis to Program Design 5

Writing a Class Definition

• Class definition

– VB .NET code representing a class

• Attributes

– Variables populated with data describing object

• Methods

– Model object’s behavior

Visual Basic .NET Programming: From Problem Analysis to Program Design 6

Drawing a Class Diagram

• Class diagram

– UML diagram

– Represents class

– Rectangular shape

– Contains:

• Class name

• Attributes

• Methods

Visual Basic .NET Programming: From Problem Analysis to Program Design 7

Visual Basic .NET Programming: From Problem Analysis to Program Design 8

Class Definition Syntax

• Class header

• Attribute definitions

• Method code

• End Class keyword

Visual Basic .NET Programming: From Problem Analysis to Program Design 9

Visual Basic .NET Programming: From Problem Analysis to Program Design 10

Defining Attributes

• Define attributes by declaring variables

• Similar to variable declaration

– Replace Dim keyword with access keyword:

• Public

• Private

– Example:

• Public name As String

Visual Basic .NET Programming: From Problem Analysis to Program Design 11

Example 10-1: Class Definition for Customer

1. Public Class Customer

2. Public name As String

3. Public address As String

4. Public phoneNo As String

5. End Class

Visual Basic .NET Programming: From Problem Analysis to Program Design 12

Naming Conventions

• Class names

– Begin with capital letter

– Examples:

• Customer

• Student

Visual Basic .NET Programming: From Problem Analysis to Program Design 13

Naming Conventions (continued)

• Attribute names

– Begin with lowercase character

– Subsequent words in start with capital letter

– Examples:

• address

• phoneNo

Visual Basic .NET Programming: From Problem Analysis to Program Design 14

Naming Conventions (continued)

• Method names – Begin with capital letter

– Subsequent words also start with capital letter

– Usually contain imperative verb describing what method does followed by noun

– Examples:• GetPhoneNo

• SetAddress

• ComputeLease

Visual Basic .NET Programming: From Problem Analysis to Program Design 15

Instantiating a Class

• Create instances of class

– Each instance represents specific occurrence of class

• Use New keyword:

– aCustomer = New Customer

Visual Basic .NET Programming: From Problem Analysis to Program Design 16

Example 10-2: Client Module to Instantiate Customer

(excerpt)4. Sub Main()

5. Dim aCustomer As Customer

6. ' create a Customer instance

7. aCustomer = New Customer

8. ' populate the attributes

9. aCustomer.name = “Eleanor”

10. aCustomer.address = “Atlanta”

11. aCustomer.phoneNo = “123-4567”

Visual Basic .NET Programming: From Problem Analysis to Program Design 17

Visual Basic .NET Programming: From Problem Analysis to Program Design 18

Visual Basic .NET Programming: From Problem Analysis to Program Design 19

Writing Accessor Methods

• Encapsulation

– Requires that internal data and structure of class be hidden from outside objects

– Requires that class have methods providing access to attributes

• Attributes should be Private

Visual Basic .NET Programming: From Problem Analysis to Program Design 20

Writing Accessor Methods (continued)

• Accessor methods– Provide access to attributes

– Often called standard methods

– Not shown on class diagram• Assumed to exist

• Custom methods– Perform functions for class

– Shown on class diagram

Visual Basic .NET Programming: From Problem Analysis to Program Design 21

Writing Accessor Methods (continued)

• Accessor method types:– Get

• Also called Getter

• Named Get + attribute name

• Function procedure

– Set• Also called Setter

• Named Set + attribute name

• Sub procedure

Visual Basic .NET Programming: From Problem Analysis to Program Design 22

Visual Basic .NET Programming: From Problem Analysis to Program Design 23

Example 10-3: Customer Class Definition with Accessor

Methods (excerpt)7. 'get accessor methods

8. Public Function GetName() As String

9. Return name

10. End Function

'set accessor methods

21. Public Sub SetName(ByVal aName As String)

22. name = aName

23. End Sub

Visual Basic .NET Programming: From Problem Analysis to Program Design 24

Writing a Parameterized Constructor

• Constructor – Special method

– Automatically invoked whenever you create an instance of class using keyword New

– Always named New

– Written as Sub procedure • Cannot return value

• VB .NET creates default constructor – Invoked when you instantiate class

Visual Basic .NET Programming: From Problem Analysis to Program Design 25

Writing a Parameterized Constructor (continued)

• Parameterized constructor

– Can contain parameter list

– Arguments populate instance attributes

Visual Basic .NET Programming: From Problem Analysis to Program Design 26

Example 10-5: Customer ClassDefinition with Parameterized

Constructor (excerpt)

5. ' parameterized constructor

6. Public Sub New(ByVal aName As String, ByVal anAddress As String, ByVal aPhoneNo As String)

7. SetName(aName)

8. SetAddress(anAddress)

9. SetPhoneNo(aPhoneNo)

10. End Sub

Visual Basic .NET Programming: From Problem Analysis to Program Design 27

Example 10-6: Client invokingParameterized Constructor in

Customer (excerpt)

5. Dim aCustomer As Customer

6. ' instantiate Customer

7. aCustomer = New Customer(“Eleanor”, “Atlanta”, “123-4567”)

Visual Basic .NET Programming: From Problem Analysis to Program Design 28

Example 10-7: Creating Multiple Customer Instances

(excerpt)5. Dim customer1, customer2, customer3 As

Customer

6. ' create 3 instances of Customer

7. customer1 = New Customer(“Eleanor”, “Atlanta”, “123-4567”)

8. customer2 = New Customer(“Emily”, “St. Louis”, “467-1234”)

Visual Basic .NET Programming: From Problem Analysis to Program Design 29

Visual Basic .NET Programming: From Problem Analysis to Program Design 30

Designing and Writing Overloaded Constructors

• Procedure signature:

– Name

– Parameter list

– Used to identify procedure

• Can overload constructor

– Must use different parameter list

– Can use Me keyword to call another constructor

Visual Basic .NET Programming: From Problem Analysis to Program Design 31

Creating Polymorphic Methods

• Polymorphism

– Means “many forms”

– Different methods in different classes with same signature do different things

Visual Basic .NET Programming: From Problem Analysis to Program Design 32

Visual Basic .NET Programming: From Problem Analysis to Program Design 33

Writing Properties

• Property

– Similar to accessor methods

– Appears as public attribute to client objects

– Retrieve contents of property as if it were a variable

– Begins with header

– Ends with End Property

Visual Basic .NET Programming: From Problem Analysis to Program Design 34

Example 10-16: Customer Class Definition with Properties (excerpt)

11. ' property named CustomerName

12. Public Property CustomerName() As String

13. Get

14. Return name

15. End Get

Visual Basic .NET Programming: From Problem Analysis to Program Design 35

Example 10-16: Customer Class Definition with

Properties (continued)

16. Set(ByVal aName As String)

17. name = aName

18. End Set

19. End Property

Visual Basic .NET Programming: From Problem Analysis to Program Design 36

Creating Shared Attributes and Methods

• Attributes and methods can be shared by all instances of class

• Called class methods and attributes

• Non-shared methods and attributes:

– Called instance methods and attributes

Visual Basic .NET Programming: From Problem Analysis to Program Design 37

Example 10-18: Class Definition for Circle with

Shared Attribute and Method (excerpt)

4. ' shared attribute

5. Private Shared PI As Double = 3.14159

21. ' shared method

22. Public Shared Function GetPI() As Double

23. Return PI

24. End Function

Visual Basic .NET Programming: From Problem Analysis to Program Design 38

Programming Example: Electricity Billing

• Redesign of Electricity Billing Programming Example at end of Chapter 9

– Includes class named ElectricBill to represent electricity bills

Visual Basic .NET Programming: From Problem Analysis to Program Design 39

Programming Example: Electricity Billing (continued)

• Invokes Client methods to:– Compute:

• Electricity charge

• Sales tax

– Display:• Electricity consumed

• Electricity charge

• Sales tax

• Total bill

Visual Basic .NET Programming: From Problem Analysis to Program Design 40

Visual Basic .NET Programming: From Problem Analysis to Program Design 41

Summary

• Three-tier design places objects into three categories of classes:

– Problem domain

– Graphical user interface (GUI)

– Data access

• Draw class diagram to model classes

• Create instances of class using keyword New

Visual Basic .NET Programming: From Problem Analysis to Program Design 42

Summary (continued)

• Accessor methods

– Methods that provide access to attributes

– Get

– Set

• Constructor

– Invoked whenever you create an instance of class using keyword New

Visual Basic .NET Programming: From Problem Analysis to Program Design 43

Summary (continued)• Polymorphism

– Different methods in different classes with same signature that do different things

• Property

– Similar to accessor method

– Appears as a public attribute

• Shared attributes and methods

– Shared among all class instances

Recommended