Visual C Programming Concepts and Projects Chapter 13

  • Slides: 45
Download presentation
Visual C++ Programming: Concepts and Projects Chapter 13 A: Object-Oriented Programming (Concepts)

Visual C++ Programming: Concepts and Projects Chapter 13 A: Object-Oriented Programming (Concepts)

Objectives In this chapter, you will: • Design class definitions • Implement data hiding

Objectives In this chapter, you will: • 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 Programming with Visual C++ 2

Introduction • An abstraction is an idea with varying amounts of definition • In

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, Text. Box, Label, Form • Objects are created from class definitions (abstractions) • Objects are implementations of the abstraction Programming with Visual C++ 3

Introduction (continued) Programming with Visual C++ 4

Introduction (continued) Programming with Visual C++ 4

Introduction (continued) Programming with Visual C++ 5

Introduction (continued) Programming with Visual C++ 5

OOP Example • Consider a program in which Frog objects are created and made

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 Programming with Visual C++ 6

OOP Example (continued) Programming with Visual C++ 7

OOP Example (continued) Programming with Visual C++ 7

OOP Example (continued) Programming with Visual C++ 8

OOP Example (continued) Programming with Visual C++ 8

The Frog Class Definition • A Frog class definition needs: – Class variables (the

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 Programming with Visual C++ 9

The Frog Class Definition (continued) • A Frog class definition needs: (continued) – Instance

The Frog Class Definition (continued) • A Frog class definition needs: (continued) – Instance methods • Operations that Frog objects can perform • Example: show. Icon() – Returns the Frog’s assigned icon to the client program so that it can be displayed Programming with Visual C++ 10

The Frog Class Definition (continued) Programming with Visual C++ 11

The Frog Class Definition (continued) Programming with Visual C++ 11

Instantiation and Use • Frog objects can be instantiated using gcnew Programming with Visual

Instantiation and Use • Frog objects can be instantiated using gcnew Programming with Visual C++ 12

Instantiation and Use (continued) Programming with Visual C++ 13

Instantiation and Use (continued) Programming with Visual C++ 13

Initializing Constructors • Constructors are used to instantiate objects • Initializing constructors use parameters

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 Programming with Visual C++ 14

Initializing Constructors (continued) • The code for an initializing constructor (from Frog. h) •

Initializing Constructors (continued) • The code for an initializing constructor (from Frog. h) • Parameters xcoord and ycoord are assigned to instance variables x and y Programming with Visual C++ 15

Initializing Constructors (continued) • The default constructor assigns every Frog object it makes the

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 Programming with Visual C++ 16

Programming with Visual C++ 17

Programming with Visual C++ 17

Data Hiding • Data hiding is the practice of making data members inaccessible by

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 Programming with Visual C++ 18

Data Hiding (continued) • In this example, the client constructs a Frog with x

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 Programming with Visual C++ 19

Data Hiding (continued) • To make it impossible for the client to place invalid

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 Programming with Visual C++ 20

Data Hiding (continued) • Hidden data members are not visible to the client •

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 Programming with Visual C++ 21

Accessor and Mutator Methods • Accessor and mutator methods are public methods that provide

Accessor and Mutator Methods • 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 Programming with Visual C++ 22

Accessor and Mutator Methods (continued) • In this example, public methods get. X() and

Accessor and Mutator Methods (continued) • In this example, public methods get. X() and get. Y() are available to the client, allowing it to retrieve the data stored in private data members x and y Programming with Visual C++ 23

Accessor and Mutator Methods (continued) • The definitions of public methods get. X() and

Accessor and Mutator Methods (continued) • The definitions of public methods get. X() and get. Y() are contained in the class definition Programming with Visual C++ 24

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

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, set. X() is a public mutator method used to change the private x coordinates of each of four Frog objects Programming with Visual C++ 25

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

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 set. X() Programming with Visual C++ 26

Accessor and Mutator Methods (continued) Programming with Visual C++ 27

Accessor and Mutator Methods (continued) Programming with Visual C++ 27

Utility Methods • Utility methods are instance methods that perform operations other than those

Utility Methods • Utility methods are instance methods that perform operations other than those performed by constructors, destructors, accessors, and mutators (Example: verify. X() ) Programming with Visual C++ 28

Utility Methods (continued) • A Frog class definition might want a public method that

Utility Methods (continued) • A Frog class definition might want a public method that the client can call when he or she wants a frog to hop Programming with Visual C++ 29

Complete Frog Class Definition • private data members – x, y, icon • private

Complete Frog Class Definition • private data members – x, y, icon • private methods – Default constructor (Frog()) – Utility methods • verify. X() • verify. Y() Programming with Visual C++ 30

Complete Frog Class Definition (continued) • public methods – Initializing constructor (Frog(int, int)) –

Complete Frog Class Definition (continued) • public methods – Initializing constructor (Frog(int, int)) – Accessor methods • get. X() • get. Y() • show. Icon() Programming with Visual C++ 31

Complete Frog Class Definition (continued) • public methods – Mutator methods • • set.

Complete Frog Class Definition (continued) • public methods – Mutator methods • • set. X(): used to assign a value to x set. Y(): used to assign a value to y set. Leaping(): used to assign the leaping icon set. Sitting(): used to assign the sitting icon – Utility method • hop(): used to add 25 to the x coordinate Programming with Visual C++ 32

Complete Frog Class Definition (continued) Programming with Visual C++ 33

Complete Frog Class Definition (continued) Programming with Visual C++ 33

Complete Frog Class Definition (continued) Programming with Visual C++ 34

Complete Frog Class Definition (continued) Programming with Visual C++ 34

Programming with Visual C++ 35

Programming with Visual C++ 35

Client Code • The client needs to instantiate four Frog objects and position them

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 position • Constants START 1, START 2, START 3 , and START 4 store the starting y coordinate positions Programming with Visual C++ 36

Client Code (continued) Programming with Visual C++ 37

Client Code (continued) Programming with Visual C++ 37

Client Code (continued) • Using the initializing constructor, each new Frog can be positioned

Client Code (continued) • Using the initializing constructor, each new Frog can be positioned in a different location Programming with Visual C++ 38

Client Code (continued) • To draw a single Frog, you first construct a Rectangle

Client Code (continued) • To draw a single Frog, you first construct a Rectangle object – Upper-left corner x coordinate is Frog->get. X() – Upper-left corner y coordinate is Frog->get. Y() – Width and height are both 25 pixels • The Draw. Icon() method displays an icon in a Rectangle – The icon is Frog 1 ->show. Icon() Programming with Visual C++ 39

Client Code (continued) Programming with Visual C++ 40

Client Code (continued) Programming with Visual C++ 40

Client Code (continued) • To reset the interface, all frogs are repositioned back to

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 Programming with Visual C++ 41

Client Code (continued) • A random number is used to select one of the

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 Programming with Visual C++ 42

Summary • Class definitions are abstractions • Objects are instances of the class •

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 Programming with Visual C++ 43

Summary (continued) • Data hiding is used to restrict client access to data members

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 Programming with Visual C++ 44

Summary (continued) • Utility methods carry out operations that constructors, destructors, accessors, and mutators

Summary (continued) • Utility methods carry out operations that constructors, destructors, accessors, and mutators do not perform Programming with Visual C++ 45