450 likes | 633 Vues
Visual C++ Programming: Concepts and Projects. Chapter 13A: Object-Oriented Programming (Concepts). Objectives. In this chapter, you will: Design class definitions Implement data hiding and encapsulation Use accessor and mutator methods Implement an initializing constructor
E N D
Visual C++ Programming: Concepts and Projects Chapter 13A: Object-Oriented Programming (Concepts)
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++
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 Programming with Visual C++
Introduction (continued) Programming with Visual C++
Introduction (continued) Programming with Visual C++
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++
OOP Example (continued) Programming with Visual C++
OOP Example (continued) Programming with Visual C++
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++
The Frog Class Definition (continued) • A Frog class definition needs: (continued) • 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 Programming with Visual C++
The Frog Class Definition (continued) Programming with Visual C++
Instantiation and Use • Frog objects can be instantiated using gcnew Programming with Visual C++
Instantiation and Use (continued) Programming with Visual C++
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++
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++
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++
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++
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++
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++
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++
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++
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 Programming with Visual C++
Accessor and Mutator Methods (continued) • The definitions of public methods getX() and getY()are contained in the class definition Programming with Visual C++
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 Programming with Visual C++
Accessor and Mutator Methods (continued) • Mutator methods can be used to screen data before it is assigned to a privatedata member, as shown in the class definition of setX() Programming with Visual C++
Accessor and Mutator Methods (continued) Programming with Visual C++
Utility Methods • Utility methods are instance methods that perform operations other than those performed by constructors, destructors, accessors, and mutators (Example: verifyX()) Programming with Visual C++
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++
Complete Frog Class Definition • private data members • x, y, icon • private methods • Default constructor (Frog()) • Utility methods • verifyX() • verifyY() Programming with Visual C++
Complete Frog Class Definition (continued) • publicmethods • Initializing constructor (Frog(int, int)) • Accessor methods • getX() • getY() • showIcon() Programming with Visual C++
Complete Frog Class Definition (continued) • publicmethods • 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 Programming with Visual C++
Complete Frog Class Definition (continued) Programming with Visual C++
Complete Frog Class Definition (continued) Programming with Visual C++
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 START1, START2, START3 ,and START4store the starting y coordinate positions Programming with Visual C++
Client Code (continued) Programming with Visual C++
Client Code (continued) • Using the initializing constructor, each new Frog can be positioned in a different location Programming with Visual C++
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() Programming with Visual C++
Client Code (continued) Programming with Visual C++
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++
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++
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++
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++
Summary (continued) • Utility methods carry out operations that constructors, destructors, accessors, and mutators do not perform Programming with Visual C++