CSC2212 Lab Six ClassObject
CSC2212 Lab Six ClassObject
C++ Programming
Lab Six
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Abstract Data Types
Programmer-created data types that specify
legal values that can be stored
operations that can be done on the values
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-3
Abstraction and Data Types
Abstraction: a definition that captures general
characteristics without details
Example: An abstract triangle is a 3-sided polygon.
A specific triangle may be scalene, isosceles, or
equilateral
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-4
Object-Oriented Programming
Procedural Programming uses variables to
store data, and focuses on the processes/
functions that occur in a program.
Data and functions are separate and distinct.
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-5
Object-Oriented Programming (cont.)
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-6
Object Example
Square
Member variables (attributes)
int side;
Member functions
void setSide(int s)
{ side = s; }
int getSide()
{ return side; }
Square objects data item: side
Square objects functions: setSide - set the size of the side of the square,
getSide - return the size of the side of the square
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-7
Introduction to Classes
Class: a programmer-defined data type used
to define objects
Example:
string fName, lName;
creates two objects of the string class
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-8
Introduction to Classes
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-9
Access Specifiers
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-10
Class Example
class Square
{
private:
Access
specifiers int side;
public:
void setSide(int s)
{ side = s; }
int getSide()
{ return side; }
};
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-11
More on Access Specifiers
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-12
Creating and Using Objects
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-13
Defining Member Functions
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-14
Defining Member Functions Inside
the Class Declaration
Member functions defined inside the class
declaration are called inline functions
Only very short functions, like the one below,
should be inline functions
int getSide(){
return side; }
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-15
Inline Member Function (Example)
class Square
{
private:
int side;
public:
inline
void setSide(int s)
functions { side = s; }
int getSide()
{ return side; }
};
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-16
Defining Member Functions After the
Class Declaration
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-18
Constructor (examples)
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-19
Overloading Constructors
A class can have more than one
constructor
Example: Square();
Square(int);
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-20
The Default Constructor
Constructors can have any number of
parameters, including none
A default constructor is one that takes no
arguments either due to
No parameters or
All parameters have default values
If a class has any programmer-defined
constructors, it must have a programmer-
defined default constructor
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-21
Default Constructor Example
class Square
{
private: Has no
int side; parameters
public:
Square(){ // default
side = 1; } // constructor
// Other member
// functions go here
};
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-22
Another Default Constructor (example 2)
class Square
{
private: Has parameter
int side; but it has a
default value
public:
Square(int s = 1) // default
{ side = s; } // constructor
// Other member
// functions go here
};
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-23
Invoking a Constructor
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-24
Destructors
Is a public member function automatically
called when an object is destroyed
The destructor name is ~className, e.g.,
~Square
It has no return type
It takes no arguments
Only 1 destructor is allowed per class
(i.e., it cannot be overloaded)
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-25
Private Member Functions
A private member function can
only be called by another member
function of the same class
It is used for internal processing by
the class, not for use outside of the
class
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-26
NOTE
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-27
EXERCISE
Write a simple class to represent a circle, with
three functions: one to set radius, another one
to compute area, another one for computing
circumference.
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1-28
Inside vs. Outside the Class
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-29
Structures
Structure: Programmer-defined data type that
allows multiple variables to be grouped together
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-30
Example struct Declaration
struct Student{
structure name
int studentID;
string name; structure members
short year;
double gpa;
}; Notice the
required
;
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-31
struct declaration Notes
struct names commonly begin with an
uppercase letter
The structure name is also called the tag
Multiple fields of same type can be in a
comma-separated list
string name,
address;
Fields in a structure are all public by default
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-32
Defining Structure Variables
gpa
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-33
Accessing Structure Members
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-34
Displaying struct Members
To display the contents of a struct variable,
you must display each field separately, using
the dot operator.
Wrong:
cout << s1; // wont work!
Correct:
cout << s1.studentID << endl;
cout << s1.name << endl;
cout << s1.year << endl;
cout << s1.gpa;
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-35
Comparing struct Members
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-36
NOTE
It is not allowed to initialize members in the
structure declaration, because no memory has
been allocated yet
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-38
Initialization List Example
Structure Declaration
Structure Variable
struct Dimensions box
{ int length, length 12
width, width
height; 6
}; height 3
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-40
Problems with Initialization List
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-41
Using a Constructor to Initialize
Structure Members
Similar to a constructor for a class:
name is the same as the name of the struct
no return type
used to initialize data members
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-42
A Structure with a Constructor
struct Dimensions
{
int length,
width,
height;
// Constructor
Dimensions(int L, int W, int H){
length = L;
width = W;
height = H;
}
};
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 7-43
EXERCISE
Write a simple program that use
structure to store school information.
Copyright 2014, 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1-44