classes and class libraries examples and hints november 9, 2010 1

26
Classes and Class Libraries Examples and Hints November 9, 2010 1

Upload: emily-mckinney

Post on 11-Jan-2016

216 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Classes and Class Libraries Examples and Hints November 9, 2010 1

1

Classes and Class LibrariesExamples and Hints

November 9, 2010

Page 2: Classes and Class Libraries Examples and Hints November 9, 2010 1

2

Complex Number Class

• A CLASSic example of a Class.• Demonstrates a good use of ToString.• Demonstrates operator overloading.

Page 3: Classes and Class Libraries Examples and Hints November 9, 2010 1

3

Operator overloading

• Allows you to define common operators for your custom classes.– What does it mean for two objects of your class to

be equal?– How do you add two objects? Multiply?– How do you convert an object of your class to

another type?

Page 4: Classes and Class Libraries Examples and Hints November 9, 2010 1

4

Show the Program

Page 5: Classes and Class Libraries Examples and Hints November 9, 2010 1

5

Class Complex: The Basics

• I got this code from the Stevens book.• Note that Stevens cheats—he uses Public variables instead of properties for Re and Im.• Public variables work just like our standard Public properties, but they do not allow for adding validation code. • If you anticipate ever adding on to your class, you should use Public properties with with Private variables, like you did in assignment 3.

Page 6: Classes and Class Libraries Examples and Hints November 9, 2010 1

6

ToString• Complex numbers are generally written as

a + biwhere a is the real part and b the imaginary part.

• The Complex class incorporates this format into its ToString function:

Page 7: Classes and Class Libraries Examples and Hints November 9, 2010 1

7

Operator Overloads

• You can add operator functions to your classes, such as Equals, Plus, Minus, Times, etc.

• However, VB allows you to define what the standard operator symbols (=, +, -, *, etc.) mean for your class.

• This makes your code easier to read AND write.

Page 8: Classes and Class Libraries Examples and Hints November 9, 2010 1

8

Equals

• Being able to test equality is frequently important.• In your custom classes, you can define what “=“ means.• Note that if you define “=“, you must also define “<>”.• Note also that “>” and “<“ are not defined, since they are not well defined

for complex numbers.• All operator overloads must be declared Public Shared.• “Shared” means that the operator belongs to the class as a whole, not to

individual objects.• The equals that is being overloaded here is the comparison equals, the one

that comes after “If”, not the assignment equals.• Remember that for objects, the assignment equals works on references

(addresses), not the objects themselves.

Page 9: Classes and Class Libraries Examples and Hints November 9, 2010 1

9

Do the Math

Page 10: Classes and Class Libraries Examples and Hints November 9, 2010 1

10

Conversions• VB allows you to define conversions from your

class by overloading CType.• The code below effectively defines CDbl for

the Complex class as being the absolute value:

Page 11: Classes and Class Libraries Examples and Hints November 9, 2010 1

11

Absolute Value as ReadOnly Property• Personally, I would rather see absolute value

implemented as a property, not a conversion.• The property is ReadOnly since it is not something that

you could assign directly; it depends on the real and imaginary parts of the number.

• For example, the complex numbers 1, i, -1, and –i all have the same absolute value.

Page 12: Classes and Class Libraries Examples and Hints November 9, 2010 1

12

Building on the Complex class• Can you think of other properties, functions,

operators, constructors, conversions, etc. that could be added to the Complex class?

• Some classes that might be similar to Complex?– Vector– Matrix– Field (electric, gravitational)

Page 13: Classes and Class Libraries Examples and Hints November 9, 2010 1

13

Wrapper Classes• VB’s .NET framework contains lots of wrapper classes.• A wrapper class encapsulates some difficult or tedious

code which performs something useful into a simple interface.

• For example, it would take a lot of code to write your own web browser into your program.

• Fortunately, Microsoft has provided the WebBrowser control (in the ToolBox).

• With the WebBrowser control (a class, of course), you get pretty much all of Internet Explorer’s functionality with just a few lines of code.

Page 14: Classes and Class Libraries Examples and Hints November 9, 2010 1

14

WebBrowser Control• The VB Toolbox offers a WebBrowser control.• This is basically a customizable version of

Internet Explorer that you can build into your programs.

• Possible uses:– Display pictures from the web (as an alternative to

the PictureBox control)– Display help files– Allow users of your program to link to specific web

pages, while preventing access to other pages (or general browsing)

Page 15: Classes and Class Libraries Examples and Hints November 9, 2010 1

15

WebBrowser Demo• Open the “HTML Lecture” VB project.• Click on WebBrowser Demo.• This form will appear:

Page 16: Classes and Class Libraries Examples and Hints November 9, 2010 1

16

The WebBrowser Form• frmBrowser contains a

SplitContainer control.• In the top half is a

WebBrowser control.• In the bottom is a

TextBox.• When the WebBrowser

navigates to a new web page, the TextBox displays the HTML code for that page.

Page 17: Classes and Class Libraries Examples and Hints November 9, 2010 1

17

Open New Browser Code

Page 18: Classes and Class Libraries Examples and Hints November 9, 2010 1

18

Go To Google Code

Page 19: Classes and Class Libraries Examples and Hints November 9, 2010 1

19

Navigation Code• The WebBrowser control’s “AllowNavigation” property determines

if the user can use the browser as a true web browser or not.• If set to False, they will not be able to connect to linked pages by

clicking on hyperlinks.• Set AllowNavigation to False if you want to restrict the user to web

pages related to your program.

Page 20: Classes and Class Libraries Examples and Hints November 9, 2010 1

20

Getting the HTML source code

• If you want to retrieve the source code (usually HTML or XML) from a web page, use the WebBrowser’s DocumentText property.

• The above code demonstrates this.• The code is placed in the WebBrowser’s Navigated event;

that is, it waits until the new page is completely loaded.• Once you have retrieved the DocumentText, you can

search for keywords or values, such as a stock price or sports score, using the various String functions.

Page 21: Classes and Class Libraries Examples and Hints November 9, 2010 1

21

DbConn: Another Wrapper Class• Most VB textbooks show you how to connect to a

database and retrieve data, typically using code like this:

Page 22: Classes and Class Libraries Examples and Hints November 9, 2010 1

22

DbConn• This code is tedious, difficult to understand or

remember.• As written, it works only with Access 2007

databases (Microsoft.ACE.OLEDB.12.0).• The function encapsulates the code to some

degree, but we can get greater functionality and flexibility by incorporating it into a class.

• I did this about three years ago, both for my work at UMTRI and for this course.

Page 23: Classes and Class Libraries Examples and Hints November 9, 2010 1

23

DbConn: Public Interface

• Public Sub New(ByVal FileName As String)• Public Sub New(ByVal ServerName As String, ByVal

DatabaseName As String)– These two constructors identify the database to be

connected to, and test the connection. If the database cannot be located or it can’t be open, the constructor raises an exception.

– The first constructor (one parameter) is for Access databases;

– The second (overloaded) constructor (two parameters) is for SQL Server databases.

Page 24: Classes and Class Libraries Examples and Hints November 9, 2010 1

24

OpenDatabaseConnection, CloseDatabaseConnection

• Public Sub OpenDatabaseConnection()• Public Sub CloseDatabaseConnection()

– There are time and availability costs to opening a database and leaving it open.

– In general, if you need to run a lot of queries in a row, you should open the connection once, run all the queries, and then close the connection.

– I didn’t show you these subs for assignment 2, but you may want to use them if you find your data-connected program running slowly.

– Both GetDataTable and ExecuteSQL leave the connection in the condition that they found it (which defaults to closed).

Page 25: Classes and Class Libraries Examples and Hints November 9, 2010 1

25

Running the Queries

– You know how to use the remaining parts of DbConn’s user interface:

• Public Function GetDataTable(ByVal sql As String) As DataTable

• Public Sub ExecuteSQL(ByVal sql As String)

Page 26: Classes and Class Libraries Examples and Hints November 9, 2010 1

26

Connection Encapsulated• Together, the public interface of DbConn encapsulates all

of the complex code we saw earlier.• That interface is,again:

– Public Sub New(ByVal FileName As String)– Public Sub New(ByVal ServerName As String, ByVal FileName

As String)– Public Sub OpenDatabaseConnection()– Public Sub CloseDatabaseConnection()– Public Function GetDataTable(ByVal sql As String) As DataTable– Public Sub ExecuteSQL(ByVal sql As String)