chapter 12 l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Chapter 12 PowerPoint Presentation
Download Presentation
Chapter 12

Loading in 2 Seconds...

play fullscreen
1 / 76

Chapter 12 - PowerPoint PPT Presentation


  • 139 Views
  • Uploaded on

Chapter 12. Classes, Exceptions, Collections, and Scrollable Controls. Chapter 12 Introduction. Chapter 12 Topics. Classes Abstract Data Types Objects, Properties, Methods Exceptions Collections Object Browser Scrollable Controls. Section 12.1 Classes and Objects.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Chapter 12' - hieu


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
chapter 12

Chapter 12

Classes, Exceptions, Collections,

and Scrollable Controls

chapter 12 topics
Chapter 12 Topics
  • Classes
    • Abstract Data Types
    • Objects, Properties, Methods
  • Exceptions
  • Collections
  • Object Browser
  • Scrollable Controls
section 12 1 classes and objects

Section 12.1Classes and Objects

Classes Are Program Structures That Define Abstract Data Types and Are Used to Create Objects

abstract data types
Abstract Data Types
  • An abstract data type (ADT) is a data type created by a programmer
  • ADTs are important in computer science and object-oriented programming
  • An abstractionis a model of something that includes only its general characteristics
  • Dog is an abstraction
    • Defines a general type of animal but not a specific breed, color, or size
    • A dog is like a data type
    • A specific dog is an instance of the data type
classes
Classes
  • A classis a program structure that defines an abstract data type
    • Must create the class first
    • Then can create instances of the class
  • Class instances share common attributes
  • VB forms and controls are classes
    • Each control in the toolbox, is its own class
    • When you place a button on a form you’re creating an instance of the button class
    • An instance is also called an object
properties methods and events
Properties, Methods, and Events
  • Programs communicate with an object using the properties and methods of the class
  • Class properties example: Buttons have Location, Text, and Name properties
  • Class methods example: The Focus method functions identically for every single button
  • Class event procedures: Each button in a form has a different click event procedure
object oriented design
Object Oriented Design
  • The challenge is to design classes that effectively cooperate and communicate
  • Analyze program specifications to determine ADTs that best implement the specifications
  • Classes are fundamental building blocks
    • Typically represent nouns of some type
object oriented design example
Object Oriented Design Example
  • Nouns from the specification above usually become classes in the program design
  • Verbs such as calculate GPA and search become methods of those classes

Specifications:

We need to keep a list of students that lets us track the courses they have completed. Each student has a transcript that contains all information about his or her completed courses. At the end of each semester, we will calculate the grade point average of each student . At times, users will search for a particular course taken by a student.

ood class characteristics
OOD Class Characteristics

ClassAttributes (properties)Operations (methods)

Student LastName, FirstName, Display, Input

IdNumber

StudentList AllStudents, Count Add, Remove,

FindStudent

Course Semester, Name, Display, Input

Grade,Credits

Transcript CourseList, Count Display, Search,

CalcGradeAvg

interface and implementation
Interface and Implementation
  • Class interfaceis the portion of the class visible to the application programmer
  • Class implementationis the portion of the class hidden from client programs
    • Private member variables
    • Private properties
    • Private methods
  • Hiding of all data and procedures inside a class is referred to as encapsulation
section 12 2 creating a class

Section 12.2Creating a Class

To Create a Class in Visual Basic, You Create a Class Declaration

The Class Declaration Specifies the Member Variables, Properties, Methods, and Events That Belong to the Class

class declaration
Class Declaration
  • ClassName is the name of the class
  • Examples of MemberDeclarations are presented in the following slides
  • To create a new class:
    • Clicking Add New Item button on toolbar
    • Select Class from Add New Item dialog box
    • Provide a name for the class and click Add
    • Adds a new, empty class file (.vb) to project

Public Class ClassName

MemberDeclarations

End Class

member variables
Member Variables
  • A variable declared inside a class declaration
  • Syntax:
  • AccessSpecifier may be Public or Private
  • Example:

AccessSpecifer VariableName As DataType

Public Class Student

Public strLastName As String ‘Student last name

Public strFirstName As String ‘Student first name

Public strId As String ‘Student ID number

End Class

creating an instance of a class
Creating an Instance of a Class
  • A two step process creates a class object
  • Declare a variable whose type is the class
  • Create instance of class with New keyword and assign the instance to the variable
  • freshman defined here as an object variable
  • Can accomplish both steps in one statement

Dim freshman As Student

freshman = New Student()

Dim freshman As New Student()

accessing members
Accessing Members
  • Can work with Public member variables of a class object in code using this syntax:
  • For example:
    • If freshman references a Student class object
    • And Student class has member variables strFirstName, strLastName, and strID
    • Can store values in member variables with

object.memberVariable

freshman.strFirstName = "Joy"

freshman.strLastName = "Robinson"

freshman.strId = "23G794"

property procedure
Property Procedure
  • A property procedure is a function that behaves like a property
  • Controls access to property values
  • Procedure has two sections: Get and Set
    • Get code executes when value is retrieved
    • Set code executes when value is stored
  • Properties almost always declared Public to allow access from outside the class
  • Set code often provides data validation logic
property procedure syntax
Property Procedure Syntax

Public Property PropertyName() As DataType

Get

Statements

End Get

Set(ParameterDeclaration)

Statements

End Set

End Property

property procedure example
Property Procedure Example

Public Class Student

' Member variables

Private sngTestAvg As Single

Public Property TestAverage() As Single

Get

Return sngTestAvg

End Get

Set(ByVal value As Single)

If value >= 0.0 And value <= 100.0 Then

sngTestAvg = value

Else

MessageBox.Show( _

"Invalid test average.", "Error")

End If

End Set

End Property

End Class

setting and validating a property
Setting and Validating a Property
  • TestAverage property is set as shown:
  • Passes 82.3 into value parameter of Set
    • If in the range 0.0 to 100.0, value is stored
    • If outside the range, message box displayed instead of value being stored

Dim freshman as New Student()

freshman.TestAverage = 82.3

Set(ByVal value As Single)

If value >= 0.0 And value <= 100.0 Then

sngTestAvg = value

Else

MessageBox.Show( _

"Invalid test average.", "Error")

End If

End Set

read only properties
Read-Only Properties
  • Useful at times to make a property read-only
  • Allows access to property values but cannot change these values from outside the class
  • Use the ReadOnly keyword instead of Public
  • This causes the propertyName to be read-only -- not settable from outside of the class

ReadOnly Property PropertyName() As DataType

Get

Statements

End Get

End Property

read only property example
Read-Only Property Example
  • ' TestGrade property procedure
  • ReadOnly Property TestGrade() As Char
  • Get
  • If sngTestAverage >= 90
  • return "A"
  • Else If sngTestAverage >= 80
      • return "B"
      • Else If sngTestAverage >= 70
      • return "C"
      • Else If sngTestAverage >= 60
      • return "D"
      • Else
      • return "F"
  • End If
  • End Get
  • End Property
object removal garbage collection
Object Removal & Garbage Collection
  • Memory space is consumed when objects are instantiated
  • Objects no longer needed should be removed
  • Set object variable to Nothing so it no longer references the object
  • Variable is a candidate for garbage collection when it no longer references an object
  • The garbage collector runs periodically destroying objects no longer needed

freshman = Nothing

going out of scope
Going Out of Scope
  • An object variable instantiated within a procedure is local to that procedure
  • An object goes out of scope when
    • Referenced only by local variables and
    • The procedure ends
  • Object removed once it goes out of scope
  • An object instantiated in a procedure and assigned to a global variable is not removed
    • Reference remains when procedure ends
going out of scope example
Going Out of Scope, Example

Sub CreateStudent()

Dim sophomore As Student

sophomore = New Student()

sophomore.FirstName = "Travis"

sophomore.LastName = "Barnes"

sophomore.IdNumber = "17H495"

sophomore.TestAverage = 94.7

g_studentVar = sophomore

End Sub

With this statement, sophomore will not go out of scope.

Without this statement, it will go out of scope when the procedure ends. (g_studentVar is a module-level variable.)

comparing object variables
Comparing Object Variables
  • Multiple variables can reference the same object
  • Can test if two variables refer to same object
    • Must use the Is operator
    • The = operator cannot be used to test for this

Dim collegeStudent As Student

Dim transferStudent As Student

collegeStudent = New Student()

transferStudent = collegeStudent

If collegeStudent Is transferStudent Then

' Perform some action

End If

isnot nothing object comparisons
IsNot & Nothing Object Comparisons
  • Use the IsNot operator to determine that two variables do not reference the same object
  • Use the special value Nothing to determine if a variable has no object reference

If collegeStudent IsNot transferStudent Then

' Perform some action

End If

If collegeStudent Is Nothing Then

' Perform some action

End If

creating an array of objects
Creating an Array of Objects
  • Can create an entire array of object variables
    • Declare an array whose type is a class
    • Instantiate an object for each element

' Declare the array

Dim mathStudents(9) As Student

Dim i As Integer

For i = 0 To 9

' Assign each element to an object

mathStudents(i) = New Student()

Next i

objects as procedure arguments
Objects As Procedure Arguments
  • Can use object variables as arguments to a sub or function
    • Example: student object s as an argument
  • Pass object variable with the procedure call

Sub DisplayStudentGrade(ByVal s As Student)

' Displays a student’s grade.

MessageBox.Show("The grade for " & _

s.FirstName & " " & s.LastName & _

" is " & s.TestGrade.ToString)

End Sub

DisplayStudentGrade(freshman)

objects passed byval and byref
Objects Passed ByVal and ByRef
  • If argument is declared using ByRef
    • Values of object properties may be changed
    • The original object variable may be assigned to a different object
  • If argument is declared using ByVal
    • Values of object properties may be changed
    • The original object variable may not be assigned to a different object
functions can return objects
Functions Can Return Objects
  • Example below instantiates a student object
  • Prompts for and sets its property values
  • Then returns the instantiated object

Dim freshman As Student = GetStudent()

Function GetStudent() As Student

Dim s As New Student()

s.FirstName = InputBox("Enter the first name.")

s.LastName = InputBox("Enter the last name.")

s.IdNumber = InputBox("Enter the ID number.")

s.TestAverage = InputBox("Enter the test average.")

Return s

End Function

class methods
Class Methods
  • In addition to properties, a class may also contain sub and function procedures
  • Methods are procedures defined in a class
  • Typically operate on data stored in the class
  • The following slide shows a Clear method for the Student class
    • Method called with freshman.Clear()
    • Method clears member data in the Student class object referenced by freshman
clear method for student class
Clear Method for Student Class

Public Class Student

' Member variables

Private strLastName As String 'Holds last name

Private strFirstName As String 'Holds first name

Private strId As String 'Holds ID number

Private sngTestAverage As Single 'Holds test avg

(...Property procedures omitted...)

' Clear method

Public Sub Clear()

strFirstName = String.Empty

strLastName = String.Empty

strId = String.Empty

sngTestAverage = 0.0

End Sub

End Class

constructors
Constructors
  • A constructoris a method called automatically when an instance of the class is created
  • Think of constructors as initialization routines
  • Useful for initializing member variables or performing other startup operations
  • To create a constructor, simply create a Sub procedure named New within the class
  • Next slide shows a Student class constructor
    • The statement freshman = New Student()
    • Creates an instance of the Student class
    • Executes constructor to initialize properties of the Student object referenced by freshman
constructor example
Constructor Example

Public Class Student

' Member variables

Private strLastName As String 'Holds last name

Private strFirstName As String 'Holds first name

Private strId As String 'Holds ID number

Private sngTestAverage As Single 'Holds test avg

' Constructor

Public Sub New()

strFirstName = "(unknown)"

strLastName = "(unknown)"

strId = "(unknown)"

testAvg = 0.0

End Sub

(The rest of this class is omitted.)

End Class

create a class
Create a Class
  • Tutorial 12-1 demonstrates code needed to set up for the Student class
section 12 3 collections

Section 12.3Collections

A Collection Holds a Group of Items

It Automatically Expands and Shrinks in Size to Accommodate the Items Added to It, and Allows Items to Be Stored With Associated Key Values, Which May Be Used in Searches

collections
Collections
  • A collectionis similar to an array
  • A single unit that contains several items
  • Can access items in a collection by numeric index
  • A collection’s indices begin at one, not zero
  • Collections automatically expand and shrink as items are added and removed
  • The items stored in a collection do not have to be of the same type
a collection is a class
A Collection is a Class
  • New collections are instantiations of the Collection Class
  • The Collection Class provides various methods and properties for use with individual collections
  • Dim customers As Collection
  • customers = New Collection()
    • ' Or alternatively
  • Dim customers As New Collection()
adding items to a collection
Adding Items to a Collection
  • Add is a method of the Collection class
  • Object is the collection that Item is added to
  • Item can be an object, variable, or value
  • Key is a unique value optionally used to identify a member of the collection
  • Before or After is used to specify where a new item should be placed in the collection
  • Default is to insert at the end of the collection

Object.Add(Item [, Key] [, Before] [,After])

uses of before and after
Uses of Before and After
  • Add custData with key "Smith" before the item with key "Thomas“
  • Add custData with key "Smith" after the item with key "Reece“
  • Add custData after 3rd item in collection

customers.Add(custData, "Smith", "Thomas")

customers.Add(custData, "Smith",, "Reece")

customers.Add(custData,,,3)

add method exceptions
Add Method Exceptions
  • An exception can occur when adding to a collection so Try-Catch should be used
    • Cannot add member with same key as another member of the collection
    • If a key or index is specified for a Before or After, the value must exist

Try

customers.Add(custData, "Smith")

Catch ex as ArgumentException

MessageBox.Show(ex.Message)

End Try

accessing item by their indices
Accessing Item by Their Indices
  • Can access an item in a collection using an index value
  • Index value can be used in two ways:
    • Using the collection’s Item method
    • Or specify the index as is done with an array
  • Get value at index 3 of names collection by:

names.Item(3) –or- names(3)

Object.Item(Index)

Object(Index)

indexoutofrange exception
IndexOutOfRange Exception
  • If an invalid index is encountered, an index out of range exception will occur
  • Should use Try-Catch to trap such messages

Dim custData as Customer

Try

custData = Ctype(customers.Item(5), Customer)

Catch ex as IndexOutOfRangeException

MessageBox.Show(ex.Message)

End Try

the count property
The Count Property
  • The Count property of a collection gives the number of current items in the collection

Dim intX As Integer

For intX = 1 To names.Count

lstNames.Items.Add(names(intX).ToString())

Next intX

storing objects in a collection
Storing Objects in a Collection
  • Storing an object, without a key
  • Storing an object, with a key

Dim studentCollection As New Collection()

studentCollection.Add(studentData)

studentCollection.Add(studentData, _

studentData.IdNumber)

searching for an item by key value
Searching for an Item by Key Value
  • Item method can be used to retrieve an item with a specific index
  • If Expression is a string, it is used as a key to search for the matching member
  • If Expression is numeric, it is used as an index value for the item
  • If no item is found (via key or index), an exception occurs

Object.Item(Expression)

retrieving item examples
Retrieving Item Examples
  • Find studentCollection item with key 49812
    • If Option Strict on, must cast result to Student
  • Retrieve all members by index and display LastName property in a message box

Dim s as Student

s = Ctype(studentCollection.Item(“49812”), Student)

Dim i as Integer

Dim s as Student

For I = 1 to studentCollection.Count

s = Ctype(studentCollection.Item(i), Student)

MessageBox.Show(s.LastName)

Next i

using references versus copies
Using References Versus Copies
  • When an Item in a collection is a fundamental VB data type, only a copy is retrieved
    • This code does not change the item at index 1
  • The Item in this collection is an object so:
    • A reference is returned instead of a copy
    • LastName of object in collection is changed

Dim n as Integer

n = CType(numbers(1), Integer)

n = 0

Dim s as Student

s = CType(studentCollection.Item("49812"), Student)

s.LastName = "Griffin"

for each loop with a collection
For Each Loop with a Collection
  • Can use a For Each loop to read members of a collection
    • Eliminates the counter variable required to use a For…Next
    • Also no need to compare to Count property

Dim s As Student

For Each s In studentCollection

MessageBox.Show(s.LastName)

Next s

removing members of a collection
Removing Members of a Collection
  • Remove is a method of the Collection class
  • Object is collection Member removed from
  • Expression can be
    • Numeric and interpreted as an index
    • Or a string and interpreted as a key value
    • Exception thrown if Expression not found

Object.Remove(Expression)

removing member examples
Removing Member Examples
  • Verify “49812” is a key value in collection, then remove member with this key value
  • Verify index location 7 exists in collection, then remove member at this index location

If studentCollection.Contains(“49812”) Then

studentCollection.Remove("49812")

End If

Dim intIndex As Integer = 7

If intIndex > 0 _

and intIndex <=studentCollection.Count Then

studentCollection.Remove(intIndex)

End If

working with collections
Working with Collections
  • Since a collection is an instance of a class
    • Procedures accept collections as arguments
    • Functions can return a collection
    • Follow same guidelines as any class object
  • Parallel collections work like parallel arrays
    • Can use index to relate parallel collections just as we did with arrays
    • Or can use key values to relate collections
section 12 4 the student collection application

Section 12.4The Student Collection Application

Create an Application that Uses a Collection of Student Objects

section 12 5 the object browser

Section 12.5The Object Browser

The Object Browser Is a Dialog Box That Allows You to Browse All Classes and Components That Are Available to Your Project

working with collections56
Working with Collections
  • A dialog box with information about objects
  • Allows you to examine
    • Information about forms in your project
    • Classes you’ve created
    • Other components used by VB in your project
  • Tutorial 12-3 uses the Object Browser to examine the Student Collection project
section 12 6 scroll bars and track bars

Section 12.6Scroll Bars and Track Bars

The HScrollBar, VScrollBar, and TrackBar Controls Provide a Graphical Way to Adjust a Number Within a Range of Values

visual appearance and usage
Visual Appearance and Usage
  • The HScrollBar and VScrollBar look like normal scroll bars
  • The TrackBar has an arrow pointer as the slider and has tick marks along its length
  • Scrollable controls hold integers in their Value property
    • Position of slider corresponds to Value
    • Move scroll bar to increase or decrease Value
    • Right increases, left decreases horizontal bar
    • Up increases, down decreases vertical bar
scrollable control properties
Scrollable Control Properties
  • Minimum – the bar’s lowest possible value
  • Maximum – the bar's highest possible value
  • Value – the bar's value at the current position
  • LargeChange – change in the Value property with a mouse click on/near the slider
  • SmallChange – change in the Value property for amouse click on an arrow at the end
  • TickFrequency - for TrackBar only, the number of units between tick marks
    • With min=0 and max=1000, if Tick Frequency is 100, 10 tick marks are shown on the bar
coding for scrollable controls
Coding for Scrollable Controls
  • Any change to the position of a scroll bar generates a Scroll event
    • Allows program to react to a shift in scroll bar
  • Standard prefixes for these controls
    • Horizontal scroll bar is hsb
    • Vertical scroll bar is vsb
    • TrackBar is tb
  • Tutorial 12-4 demonstrates how to set up Scroll events and use of these controls
section 12 7 introduction to inhertance

Section 12.7Introduction to Inhertance

Inheritance Allows a New Class to be Based on an Existing Class

The New Class Inherits the Accessible Member Variables, Methods, and Properties of the Class on Which It Is Based

why inheritance
Why Inheritance?
  • Inheritanceallows new classes to derive their characteristics from existing classes
  • The Student class may have several types of students such as
    • GraduateStudent
    • ExchangeStudent
    • StudentEmployee
  • These can become new classes and share all the characteristics of the Student class
  • Each new class would then add specialized characteristics that differentiate them
base and derived classes
Base and Derived Classes
  • The Base Class is a class that other classes may be based on
  • A Derived Class is based on the base class and inherits characteristics from it
  • Can think of the base class as a parent and the derived class as a child
the vehicle class base class
The Vehicle Class (Base Class)
  • Consider a Vehicle class with the following:
    • Private variable for number of passengers
    • Private variable for miles per gallon
    • Public property for number of passengers(Passengers)
    • Public property for miles per gallon(MilesPerGallon)
  • This class holds general data about a vehicle
  • Can create more specialized classes from the Vehicle class
the truck class derived class
The Truck Class (Derived Class)
  • Declared as:
  • Truck class derived from Vehicle class
    • Inherits all non-private methods, properties, and variables of Vehicle class
  • Truck class defines two properties of its own
    • MaxCargoWeight – holds top cargo weight
    • FourWheelDrive – indicates if truck is 4WD

Public Class Truck

Inherits Vehicle

' Other new properties

' Additional methods

End Class

instantiating the truck class
Instantiating the Truck Class
  • Instantiated as:
  • Values stored in MaxCargoWeight and FourWheelDrive properties
    • Properties declared explicitly by Truck class
  • Values also stored in MilesPerGallon and Passengers properties
    • Properties inherited from Vehicle class

Dim pickUp as New Truck()

pickUp.Passengers = 2

pickUp.MilesPerGallon = 18

pickUp.MaxCargoWeight = 2000

Pickup.FourWheelDrive = True

overriding properties and methods
Overriding Properties and Methods
  • Sometimes a base class property procedure or method does not work for a derived class
    • Can override base class method or property
    • Must write the method or property as desired in the derived class using same name
  • When an object of the derived class accesses the property or calls the method
    • VB uses overridden version in derived class
    • Version in base class is not used
property override example
Property Override Example
  • Vehicle class has no restriction on number of passengers
  • But may wish to restrict the Truck class to two passengers at most
  • Can override Vehicle class Passengers property by:
    • Coding Passengers property in derived class
    • Specify Overridable in base class property
    • Specify Overrides in derived class property
overridable base class property
Overridable Base Class Property
  • Overridable keyword added to base class property procedure

Public Overridable Property Passengers() As Integer

Get

Return intPassengers

End Get

Set(ByVal value As Integer)

intPassengers = value

End Set

End Property

overridden derived class property
Overridden Derived Class Property
  • Overrides keyword and new logic added to derived class property procedure

Public Overrides Property Passengers() As Integer

Get

Return MyBase.Passengers

End Get

Set(ByVal value As Integer)

If value >= 1 And value <= 2 Then

MyBase.Passengers = value

Else

MessageBox.Show("Passengers must be 1 or 2", _

"Error")

End If

End Set

End Property

overriding methods
Overriding Methods
  • Overriding a method is similar to a property
  • Specify Overridable and Overrides keywords
  • An overridable base class method
  • An overriding derived class method

Public Overridable Sub ProcedureName()

Public Overridable Function ProcedureName() As DataType

Public Overrides Sub ProcedureName()

Public Overrides Function ProcedureName() As DataType

overriding the tostring method
Overriding the ToString Method
  • Every programmer created class is derived from a built-in class named Object
  • Object class has a method named ToString which returns a fully-qualified class name
  • Method can be overridden to return a string representation of data stored in an object
tostring override example
ToString Override Example
  • Object class ToString method is Overridable
  • Vehicle class might override the ToString method as shown below

' Overriden ToString method

Public Overrides Function ToString() As String

' Return a string representation

' of a vehicle.

Dim str As String

str = "Passengers: " & numPassengers.ToString & _

" MPG: " & mpg.ToString

Return str

End Function

base derived class constructors
Base & Derived Class Constructors
  • A constructor (named New) may be defined for both the base class and a derived class
  • When a new object of the derived class is created, both constructors are executed
    • The constructor of the base class will be called first
    • Then the constructor of the derived class will be called
protected members
Protected Members
  • In addition to Private and Public, the access specifier may be Protected
    • Protected base class members are treated as public to classes derived from this base
    • Protected base class members are treated as private to classes not derived from this base
  • Tutorial 12-5 provides an opportunity to work with base and derived classes