46
CHAPTER 13 Object Oriented Programming

CHAPTER 13 Object Oriented Programming. Objectives Design class definitions Implement data hiding and encapsulation Use accessor and mutator methods

Embed Size (px)

Citation preview

Page 1: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

CHAPTER 13

Object Oriented Programming

Page 2: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Objectives

Design class definitions Implement data hiding and

encapsulation Use accessor and mutator methods Implement an initializing constructor Use public, and private access modes Create and reference a two-dimensional

array

Page 3: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Introduction

An abstraction is an idea with varying amounts of definition

In computer science, abstractions are class definitions Examples of system-defined class

definitions: Button, TextBox, Label, Form Objects are created from class definitions

(abstractions) Objects are implementations of the

abstraction

Page 4: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Introduction (continued)

Page 5: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Introduction (continued)

System namespace(System)

Drawing class library(System::Drawing)

Math class library(System::Math)

Drawing::GraphicsDrawing::BrushDrawing::FontDrawing::Pen

.

.

.

Math::Sin()Math::Cos()Math::Sqrt()Math::PI

.

.

.

methods

constant

object class defs

Page 6: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Introduction (continued)

Page 7: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

OOP Example

Consider a program in which Frog objects are created and made to hop across the screen

The Frog class definition is an abstraction The Frogs seen on the interface are

objects (instances of the class) Objects exhibit all the properties and

methods defined by the class they are derived from

Page 8: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

OOP Example (continued)

Page 9: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

OOP Example (continued)

Page 10: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

The Frog Class Definition

A Frog class definition needs Class variables (the Frog icons) Instance variables

X and y coordinates of the Frog The assigned icon

Constructor

Page 11: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

The Frog Class Definition (continued) A Frog class definition needs

Instance methods Operations that Frog objects can perform Example: showIcon()

Returns the Frog’s assigned icon to the client program so that it can be displayed

Page 12: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

The Frog Class Definition (continued)

Page 13: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Instantiation and Use

Frog objects can be instantiated using gcnew

Page 14: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Instantiation and Use (continued)

Page 15: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Initializing Constructors

Constructors are used to instantiate objects

Initializing constructors use parameters to construct objects with specific properties that can be passed in as actual arguments

Page 16: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Initializing Constructors (continued) The code for an initializing constructor

(from Frog.h) Parameters xcoord and ycoord are

assigned to instance variables x and y

Page 17: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Initializing Constructors (continued) The default constructor assigns every Frog

object it makes the same x and y coordinates

Initializing constructors may be preferable to default constructors because the client can specify the location for each Frog object created

To prevent the client from using the default constructor, it should be placed in the private portion of the Frog class definition

Page 18: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods
Page 19: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Data Hiding

Data hiding is the practice of making data members inaccessible by designating them as private

Data members that are private can only be accessed by class methods and not by the client

Page 20: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Data Hiding (continued)

In this example, the client constructs a Frog with x and y locations -50, -75 and later assigns other negative coordinate values

This could lead to problems, since negative coordinates are off of the interface

Page 21: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Data Hiding (continued)

To make it impossible for the client to place invalid values into instance variables like x and y, these data members can be “hidden” by placing them in the private portion of the class definition Invalid assignments by the client are no longer

allowed Unfortunately, valid assignments are not allowed

either public methods are provided to the client to

allow it to change values stored in private data members

Page 22: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Data Hiding (continued)

Hidden data members are not visible to the client

The good news: Invalid assignments are no longer possible

The bad news Valid assignments are not allowed either

public methods are provided to the client to allow it to change values stored in private data members

Page 23: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Accessor and Mutator Methods (continued) Accessor and mutator methods are public methods that provide access to private data members

An accessor method is a public method that returns the value stored in a private data member

Page 24: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Accessor and Mutator Methods (continued) In this example, public methods getX()

and getY() are available to the client, allowing it to retrieve the data stored in private data members x and y

Page 25: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Accessor and Mutator Methods (continued) The definitions of public methods getX() and getY() are contained in the class definition

Page 26: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Accessor and Mutator Methods (continued) A mutator method is a public method

that changes the value stored in a private data member

In this example, setX() is a public mutator method used to change the private x coordinates of each of four Frog objects

Page 27: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Accessor and Mutator Methods (continued) Mutator methods can be used to screen

data before it is assigned to a private data member, as shown in the class definition of setX()

Page 28: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods
Page 29: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Utility Methods

Utility methods are instance methods that perform operations other than those performed by constructors, destructors, accessors, and mutators. (Example: verifyX() )

Page 30: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Utility Methods (continued)

A Frog class definition might want a public method that the client can call when they want a frog to hop

Page 31: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Complete Frog Class Definition private data members

x, y, icon private methods

Default constructor (Frog()) Utility methods

verifyX() verifyY()

Page 32: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Complete Frog Class Definition (continued) public methods

Initializing constructor (Frog(int, int)) Accessor methods

getX() getY() showIcon()

Page 33: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Complete Frog Class Definition (continued) public methods

Mutator methods setX() – used to assign a value to x setY() - used to assign a value to y setLeaping() used to assign the leaping icon setSitting() used to assign the sitting icon

Utility method hop() – used to add 25 to the x coordinate

Page 34: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Complete Frog Class Definition (continued)

Page 35: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Complete Frog Class Definition (continued)

Page 36: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods
Page 37: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Client Code

The client needs to instantiate four Frog objects and position them vertically along a starting line

Constant STARTX stores the starting x coordinate postion

Constants START1, START2, START3 and START4 store the starting y coordinate positions

Page 38: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods
Page 39: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Client Code (continued)

Using the initializing constructor, each new Frog can be positioned in a different location

Page 40: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Client Code (continued)

To draw a single Frog you first construct a Rectangle object Upper left corner x coordinate is Frog->getX()

Upper left corner y coordinate is Frog->getY()

Width and height are both 25 pixels The DrawIcon() method displays an

icon in a Rectangle The icon is Frog1->showIcon()

Page 41: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Client Code (continued)

Page 42: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Client Code (continued)

To reset the interface all frogs are repositioned back to their starting X location and all frog icons are set to the sitting frog icon

Page 43: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Client Code (continued)

A random number is used to select one of the four frogs. The chosen frog’s icon is set to the leaping icon

Page 44: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Summary

Class definitions are abstractions Objects are instances of the class Initializing constructors are useful if the

objects they construct need to have unique values assigned to their attributes

public data members and methods are visible to the client

private data members and methods are not visible to the client

Page 45: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Summary (continued)

Data hiding is used to restrict client access to data members

Accessor methods are public methods that can be used to retrieve a value stored in a private data member

Mutator methods are public methods that can be used to assign new values to a private data member

Page 46: CHAPTER 13 Object Oriented Programming. Objectives  Design class definitions  Implement data hiding and encapsulation  Use accessor and mutator methods

Summary (continued)

Utility methods are carry out operations that constructors, destructors, accessors and mutators do not perform