Chapter 12 OOP: Creating Object- Oriented Programs Copyright © 2011 by The McGraw-Hill Companies, Inc. All Rights Reserved. McGraw-Hill
Apr 01, 2015
Chapter 12
OOP:
Creating Object-Oriented Programs
Copyright © 2011 by The McGraw-Hill Companies, Inc. All Rights Reserved.McGraw-Hill
12-2
Objectives (1 of 2)
• Use object-oriented terminology correctly.
• Create a two-tier application that separates the user interface from the business logic.
• Differentiate between a class and an object.
• Create a class that has properties and methods.
• Declare object variables and use property procedures to set and retrieve properties of a class.
12-3
Objectives (2 of 2)
• Assign values to the properties with a constructor.
• Instantiate an object in a project using your class.
• Differentiate between shared members and instance members.
• Understand the purpose of the constructor and destructor methods.
• Inherit a new class from your own class.
• Use visual inheritance by deriving a form from another form.
12-4
Object-Oriented Programming (OOP)
• OOP is currently the most accepted style of programming.
• Java, C# and SmallTalk were designed to be OO (object oriented) from inception.
• VB and C++ have been modified to accommodate OOP.
• VB.NET 2003 was the first version of VB to be truly object oriented.
• As projects become more complex, using objects becomes increasingly important.
12-5
Objects
• VB allows the creation of new object types by creating a class.
•Classes may have properties, methods, and events.
• Objects are things such as buttons; buttons is a class, but exitButton is an instance of the class—the instance is the object.
• There may be many objects of a new class type.
12-6
"Cookie Analogy"
• Class = Cookie cutter
• Instantiate = Making a cookie using the cookie cutter
• Instance = Newly made cookie
• Properties of the Instance may have different values.• Icing property can be True or False.
• Flavor property could be Lemon or Chocolate
• Methods = Eat, Bake, or Crumble
• Events = Cookie crumbling and informing you
12-7
Object-Oriented Terminology
• Encapsulation
• Inheritance
• Polymorphism
• Reusable Classes
• Multitier Applications
12-8
Encapsulation
• Combination of characteristics of an object along with its behavior in "one package"
• Cannot make object do anything it does not already "know" how to do.
• Cannot make up new properties, methods, or events.
• Sometimes referred to as data hiding, an object can expose only those data elements and procedures that it wishes.
12-9
Inheritance (1 of 2)
• Ability to create a new class from an existing class
• Original class is called Base Class, Superclass, or Parent Class.
• Inherited class is called Subclass, Derived Class, or Child Class.
• For example, each form created is inherited from the existing Form class.
• Purpose of inheritance is reusability.
12-10
Inheritance (2 of 2)
• Examine first line of code for a form in the Editor.
Partial Public Class Form1Inherits System.Windows.Forms.Form
Inherited Class: Subclass, Derived Class, Child Class
Original Class: Base Class, Superclass, Parent Class
12-11
Inheritance Example
• Base Class
• Person
• Subclasses
• Employee
• Customer
• Student
The derived classes inherit from the base class.
12-12
Polymorphism
• Methods having identical names, but different implementations
• Radio button, check boxes, and list boxes all have a Select method—the Select method operates appropriately for its class.
• Overloading — Several argument lists for calling the method
• Example: MessageBox.Show method
• Overriding — Refers to a method that has the same name as its base class
• Method in subclass takes precedence.
12-13
Reusability
• Big advantage of OOP over traditional programming
• New classes created can be used in multiple projects.
• Each object created from the class can have its own properties.
12-14
Multitier Applications
• Classes are used to create multitier applications.
• Each of the functions of a multitier application can be coded in a separate component and stored and run on different machines.
• Goal is to create components that can be combined and replaced.
12-15
Three-tier Model
• Most popular implementation
12-16
Designing Your Own Class
• Analyze characteristics needed by new objects.
• Characteristics or properties are defined as variables.
• Define the properties as variables in the class module.
• Analyze behaviors needed by new objects.
• Behaviors are methods.
• Define the methods as sub procedures or functions.
12-17
Creating Properties in a Class
• Define variables inside the Class module by declaring them as Private — these store the value of the properties of the class.
• Do not make Public, since that would violate encapsulation (each object should be in charge of its own data).
12-18
Property Procedures
• Properties in a class are accessed with accessor methods in a property procedure.
• Name used for property procedure is the name of the property seen by the outside world.
• Set accessor method.• Uses Value keyword to refer to incoming value for
property
• Assigns a value to the property
• Get Statement uses the value keyword to refer to the incoming value of the property.
• Must assign a return value to the procedure name or use a Return Statement to return a value.
12-19
Property Procedure General Form
{Private | Protected } ClassVariable As DataType[Public] Property PropertyName( ) As DataType
GetReturn ClassVariable [|PropertyName =
ClassVariable]End Get
Set (ByVal Value As DataType)[statements, such As validation]ClassVariable = Value
End SetEnd Property
12-20
Read-Only Properties
• In some instances, a value for a property can be retrieved by an object but not changed.
• A property can be written to create a read-only property.
• Create a read-only property by using the ReadOnly modifier.
' The property procedure for a read-only property.ReadOnly Property TotalPay() As Decimal Get Return TotalPayDecimal End GetEnd Property
12-21
Write-Only Properties
• At times, a property can be assigned by an object, but not retrieved.
• Create a property block that contains only a Set to create a write-only property.
' Private module-level variable to hold the property value.Private PriceDecimal As DecimalPublic WriteOnly Property Price() As Decimal Set(ByVal value As Decimal) If value >= 0 Then PriceDecimal = value End If End SetEnd Property
12-22
Class Methods
• Create methods by coding public procedures within a class.
• Methods declared with the Private keyword are available only within the class.
• Methods declared with the Public keyword are available to external objects.
12-23
Constructors and Destructors
• Constructor
• Method that automatically executes when an object is instantiated
• Constructor must be public and is named New.
• Ideal location for an initialization tasks such as setting the initial values of variable and properties
• Destructor
• Method that automatically executes when an object is destroyed
• Rarely needed in .NET classes (automatic garbage collection)
12-24
Overloading the Constructor
• Overloading means that two methods have the same name but a different list of arguments (the signature).
• Create by giving the same name to multiple procedures in a class module, each with a different argument list.
12-25
Parameterized Constructor
• Constructor that requires arguments
• Allows arguments to be passed when creating an object
12-26
Creating a New Class — Steps
• Project, Add Class.• In Add New Item dialog box, choose Class.
• Name the Class.
• Define the Class properties.
• To allow access from outside the class, add property procedures.
• Code the methods.
12-27
Creating a New Object Using a Class (1 of 2)
• Similar to creating a new tool for the toolbox but not yet creating an instance of the class
• Two-step operations• Declare a variable for the new object.• Instantiate the object using the New keyword.
• In VB, it is ok to declare and instantiate an object at the same time.
Private TheBookSale As BookSaleTheBookSale = New BookSale( )OrDim TheBookSale As New Booksale( )
12-28
Creating a New ObjectUsing a Class ( 2 of 2)
• If object variable is needed in multiple procedures, declare the object at class level.
• Instantiate the object. • May need to include a New statement
• and a Try/Catch block for error handling (Try/Catch block must be inside a procedure.)
• The preferred technique is to include the New statement inside of a procedure at the time the object is needed.
• Pass values for the arguments at instantiation when using a parameterized constructor.
12-29
Instance Variables versus Shared Variables
• Instance variables or properties
• Separate memory location for each instance of the object
• Shared variables or properties
• Single variable that is available for ALL objects of a class
• Can be accessed without instantiating an object of the class
• When creating, use the Shared keyword to create.
• Shared properties can be set to read-only so that their values can be retrieved but not set directly.
12-30
Shared Members in MSDN Help
12-31
.NET Automatic Garbage Collection
• Feature of .NET Common Language Runtime (CLR) that cleans up unused components
• Periodically checks for unreferenced objects and releases all memory and system resources used by the objects
• Microsoft recommends depending on garbage collection to release resources rather than Finalize procedures.
12-32
Inheritance
• New class can:
• Be based on another class (base class)
• Inherit the properties and methods (but not constructors) of the base class, which can be
–One of the VB existing classes
–Your own class
• Use the Inherits statement following the class header and prior to any comments
12-33
Inheriting Properties and Methods
• Public and protected data members and methods of the base class are inherited in the derived class.
• Must write the method in the derived class if wanting to override the base-class method.
• Can declare elements with the Protected keyword which specifies that the element is accessible only within its own class or any class derived from that class.
12-34
Constructors in Inheritance
• There is one exception for a derived class inheriting all public and protected methods:
• A subclass cannot inherit constructors from the base class.
• Each class must have its own constructors .–Exception is if the only constructor needed is an empty
constructor — VB automatically creates an empty constructor for all classes.
12-35
Overriding Methods
• Methods with the same name and the same argument list as the base class
• Derived class (subclass) will use the new method rather than the method in the base class.
• To override a method• Declare the original method with the Overridable
keyword.
• Declare the new method with the Overrides keyword.
• The access modifier for the base-class procedure can be Private or Protected (not Public).
12-36
Accessing Properties
• Derived class can set and retrieve base class properties by using the property accessor methods.
• Call the base class constructor from the derived class constructor to use the property values from the base class.
• If the constructor requires arguments, the values can be passed when the constructor is called.
12-37
Creating a Base Class Strictly for Inheritance
• Classes can be created strictly for inheritance by two or more similar classes, and are never instantiated.
• For a base class that you intend to inherit from, include the MustInherit modifier on the class declaration.
• In each base class method that must be overridden, include the MustOverride modifier and no code in the base class method.
12-38
Inheriting Form Classes
• Many projects require several forms.
• Create a base form and inherit the visual interface to new forms.
• Base form inherits from System.Windows.Forms.Form.
• New form inherits from Base form.
12-39
Creating Inherited Form Class
• In the Project menu, Add Windows Form.
• Modify the Inherits Statement to inherit from base form using project name as the namespace.
• --OR--
• In the Project menu, Add Inherited Form.
• In dialog, select name of base form.
12-40
Base and Inherited Forms
12-41
Coding for Events of an Inherited Class
• Copy procedure from base class into derived class and make modifications.
• An alternate way is to use the inherited event handler in the derived class.
12-42
Managing Multiclass Projects
• VB projects are automatically assigned a namespace which defaults to the name of the project.
• Add an existing class to a project by copying the file into the project folder and then adding the file to the project using Project/Add Existing Item.
--OR--
• Right-click the project name in the Solution Explorer and select Add/Existing Item from the context menu.
12-43
Using the Object Browser
• Use it to view the names, properties, methods, events, and constants of VB objects, your own objects, and objects available from other applications.
• To Display
• Select View/Object Browser –OR--
• Object Browser toolbar button.
12-44
The Object Browser Window
12-45
Examining VB Classes (1 of 2)
Members ofSystem.Windows.Forms.MessageBox Class
12-46
Examining VB Classes (2 of 2)
Display theMessageBoxButtons Constants
12-47
Examining Your Own Classes
Chapter 12
OOP:
Creating Object-Oriented Programs
Copyright © 2011 by The McGraw-Hill Companies, Inc. All Rights Reserved.McGraw-Hill