Chapter 9 Objects and Classes
Copyright 2013 by Pearson Education, Inc. All Rights Reserved.
OO Programming Concepts
Object-oriented programming (OOP) involves
programming using objects. An object represents
an entity in the real world that can be distinctly
identified. For example, a student, a desk, a circle,
a button, and even a loan can all be viewed as
objects. An object has a unique identity, state, and
behaviors. The state of an object consists of a set of
data fields (also known as properties) with their
current values. The behavior of an object is defined
by a set of functions.
Copyright 2013 by Pearson Education, Inc. All Rights Reserved.
Objects
Class Name: Circle
A class template
Data Fields:
radius is _______
Functions:
getArea
Circle Object 1
Circle Object 2
Circle Object 3
Data Fields:
radius is 10
Data Fields:
radius is 25
Data Fields:
radius is 125
Three objects of
the Circle class
An object has both a state and behavior. The state
defines the object, and the behavior defines what
the object does.
Copyright 2013 by Pearson Education, Inc. All Rights Reserved.
Classes
Classes are constructs that define objects of the
same type. A class uses variables to define data
fields and functions to define behaviors.
Additionally, a class provides a special type of
functions, known as constructors, which are
invoked to construct objects from the class.
Copyright 2013 by Pearson Education, Inc. All Rights Reserved.
Classes
class Circle
{
public:
// The radius of this circle
double radius;
// Construct a circle object
Circle()
{
radius = 1;
}
Data field
Constructors
// Construct a circle object
Circle(double newRadius)
{
radius = newRadius;
}
// Return the area of this circle
double getArea()
{
return radius * radius * 3.14159;
}
};
Copyright 2013 by Pearson Education, Inc. All Rights Reserved.
Function
UML Class Diagram
Circle
UML Class Diagram
The + symbol means public
Class name
+radius: double
Data fields
+Circle()
Constructors and
Functions
+Circle(newRadius: double)
+getArea(): double
circle1: Circle
radius = 1.0
circle2: Circle
radius = 25
circle3: Circle
UML notation
for objects
radius = 125
Copyright 2013 by Pearson Education, Inc. All Rights Reserved.
A Simple Circle Class
Objective:
Demonstrate creating objects,
accessing data, and using functions.
TestCircle
Copyright 2013 by Pearson Education, Inc. All Rights Reserved.
Run
Example: Defining Classes and Creating
Objects
TV
channel: int
The current channel (1 to 120) of this TV.
volumeLevel: int
The current volume level (1 to 7) of this TV.
on: bool
Indicates whether this TV is on/off.
+TV()
Constructs a default TV object.
+turnOn(): void
Turns on this TV.
+turnOff(): void
Turns off this TV.
+setChannel(newChannel: int): void
Sets a new channel for this TV.
+setVolume(newVolumeLeve: int): void Sets a new volume level for this TV.
+channelUp(): void
Increases the channel number by 1.
+channelDown(): void
Decreases the channel number by 1.
+volumeUp(): void
Increases the volume level by 1.
+volumeDown(): void
Decreases the volume level by 1.
Note: Please see code
example on eLearning
TV
Copyright 2013 by Pearson Education, Inc. All Rights Reserved.
Run
8
Constructors
The constructor has exactly the same name as the defining class. Like
regular functions, constructors can be overloaded (i.e., multiple
constructors with the same name but different signatures), making it
easy to construct objects with different initial data values.
A class normally provides a constructor without arguments (e.g.,
Circle()). Such constructor is called a no-arg or no-argument
constructor.
A class may be declared without constructors. In this case, a no-arg
constructor with an empty body is implicitly declared in the class.
This constructor, called a default constructor, is provided
automatically only if no constructors are explicitly declared in the
class.
Copyright 2013 by Pearson Education, Inc. All Rights Reserved.
Constructors, cont.
A constructor with no parameters is referred to as a
no-arg constructor.
Constructors must have the same name as the
class itself.
Constructors do not have a return typenot
even void.
Constructors play the role of initializing
objects.
Copyright 2013 by Pearson Education, Inc. All Rights Reserved.
10
Object Names
In C++, you can assign a name when creating an
object. A constructor is invoked when an object is
created. The syntax to create an object using the
no-arg constructor is
ClassName objectName;
For example,
Circle circle1;
Copyright 2013 by Pearson Education, Inc. All Rights Reserved.
11
Constructing with Arguments
The syntax to declare an object using a constructor with
arguments is
ClassName objectName(arguments);
For example, the following declaration creates an object
named circle2 by invoking the Circle classs constructor
with a specified radius 5.5.
Circle circle2(5.5);
Copyright 2013 by Pearson Education, Inc. All Rights Reserved.
12
Access Operator
After an object is created, its data can be accessed
and its functions invoked using the dot operator (.),
also known as the object member access operator:
objectName.dataField references a data field in the
object.
objectName.function(arguments) invokes a function
on the object.
Copyright 2013 by Pearson Education, Inc. All Rights Reserved.
13
Naming Objects and Classes
When you declare a custom class, capitalize
the first letter of each word in a class name;
for example, the class names Circle,
Rectangle, and Desk. The class names in the
C++ library are named in lowercase. The
objects are named like variables.
Copyright 2013 by Pearson Education, Inc. All Rights Reserved.
14
Class is a Type
You can use primitive data types to
declare variables. You can also use class
names to declare object names. In this
sense, a class is also a data type.
Copyright 2013 by Pearson Education, Inc. All Rights Reserved.
15