```Programming in C++
 The
Turbo C++ Environment
 C++ Program Structure
 Modular Programming with Functions
 C++ Control Structures
 Classes
1
Turbo C++ Environment
 Windows
based product
 Integrated Development Environment (IDE)
–
–
–
–
editor
compiler
debugger
2
Structure of a C++ Program
preprocessor directives
{
declare statements
statements
}
3
Using the Turbo C++ IDE
 tool
bars
 editor
4
Using the Turbo C++ IDE (2)
 compiling
 executing
5
Developing Programs
 Understand
the problem
 Design a solution to the problem
–
including test cases and the solutions to the test
cases
 Implement
–
and document
Translate the solution to a programming
language
6
Developing Programs (2)
 Verify
–
Test and debug the solution
»
using test cases from design phase
 Maintain
7
Problem Solving (1)
consider a trapezoid -- 4 sided figure in which
two sides are ||, the area is 1/2 the product of
the height and the sum of the lengths of the
two bases.
b1
h
b2
Area = (b1 + b2)h/2
8
Problem Solving -- Trapezoid
Pseudocode
input b1
input b2
input height
bases = b1 + b2
area = bases * h /2
output area
9
Problem Solving (2)
consider finding the area and circumference of
a circle
pi = 3.14159
circumference = 2 * pi * radius
10
Problem Solving -- Circle
Functions Pseudocode
pi = 3.14159
circum = 2 * pi * radius
output area
output circum
11
Problem Solving (3)
consider converting temperatures from
Centigrade to Fahrenheit (or vice versa)
where
c = 5/9(f-32)
f = 9/5c + 32
12
Problem Solving --Temperature
Conversion Pseudocode
input temp
input scale
if scale = = ‘f’
newtemp = 5/9 (temp-32)
else
newtemp = 9/5 temp + 32
output newtemp
13
Problem Solving (4)
consider sales commissions based upon the
number of sales made during the time
period
\$8 per sale for < 15 sales
\$12 per sale = 15 sales
\$16 per sale > 15
14
Problem Solving -- Commission
Pseudocode
quota = 15
input number_sales
if number_sales < quota
rate = 8
else if number_sales == quota
rate = 12
else rate = 16
com = rate * number_sales
output com
15
Problem Solving -- Commission
Pseudocode Multiple Salespeople
quota = 15
input number_salespeople
16
Problem Solving -- Pseudocode
Multiple Salespeople (2)
loop number_salespeople times
input number_sales
if number_sales < quota
rate = 8
else if number_sales == quota
rate = 12
else rate = 16
com = rate * number_sales
output com
17
Exercise -- GO
Develop a series of problems for the students
to do using each of the statement types
18
Introduction to the C++
Language
 keywords
–
C++ is case-sensitive
 identifiers
–
can not be keywords
–
–
enclosed in
/* */ multi-line
// single line
19
Preprocessor Statements
< > -- system library
#include <iostream.h>
“ “ -- personal library
#include “apstring.h”
20
Data Types and Declarations
 declare
–
–
statement
allocates memory and assigns “name”
data type name [= initial value];
 int
-- 2 bytes
 float -- 4 bytes
 double -- 8 bytes
 char -- enclosed in ‘ ‘
21
User Defined Data Types
 class
-- mechanism to establish new data
types
 ap classes
–
string
»
–
apstring.h apstring.ccp
bool
»
bool.h
22
Example Declare Statements
int a;
 int a,b,c;
 float x,
y;
 double average = 0.0;

 bool another;
 bool more = false;
 apstring name;
 apstring
class = “C++”;

23
Input and Output Statements
#include <iostream.h>
cout -- output
<< insertion character
cin -- input
>> extraction character
24
Using APSTRING Class
 #include
–
entire path
 create
–
–
“apstring.h”
project
place apstring and program in project
you will need a different project for each
program
25
Input and Output Statements (2)
 COUT
–
–
–
-- control codes
way of inserting placement control
\n -- new line
\t -- tab
 iomanip.h
–
contains more formatting methods
26
Arithmetic in C++
 operator
precedence
()
*, /, % (left to right)
+, (left to right)
 integer
–
–
–
arithmetic
operations involving integers yielding integer
results
truncation on integer division
% -- modulo operator
27
Arithmetic in C++ (2)
 mixed
–
–
mode arithmetic
operands of different data types
hierarchy double/float/int
»
»
highest mode is used
determined on a operation by operation basis
28
Assignment Statements
 assignment
–
operator =
operator precedence and mixed mode
arithmetic hold
 combination
operators
+=, -=, *=, /=, %=
 variable
= expression;
29
Increment and Decrement
Statements
 special
operators which add or subtract one
from a variable
–
more efficient (generates inc, dec)
 a++;
==> a = a+1;
 a--; ==> a = a -1;
 postfix (a++;) (a--;)
–
done after the expression is evaluated
 prefix
–
(++a;) (--a;)
done prior to evaluating the expression
30
Type Casting
 changes
the evaluation data type of the
expression
–
does not change the data type of the variable
 (data
–
–
–
type)
(int)
(float)
(apstring)
31
Programming Problems
 convert
distance in miles to distance in
kilometers and meters
–
1 mile = 1.61 km, 1 km = 1000 meter
 convert
–
a temperature in Celsius to Kelvin
-273.15oC = 0oK
 convert
a temperature in Fahrenheit to
Kelvin
–
-459.67oF = 0oK
32
Mathematical Functions (math.h)
 code
reuse
 sqrt, pow, exp, log, log10
 abs, ceil, floor
 trigonometric functions
33
Programming Problems
 determine
the volume of a sphere with an
–
volume = (4 * pi * radius3)/3
 determine
the area of a triangle when given
length of two sides and the included angle
in degrees
–
–
degrees = 180 * radians / pi
area = side1 * side2 * sin (radians) / 2
34
Programming Problems (2)
 determine
the distance from a point on the
Cartesian plane to the origin
–
distance = sqrt (x2 + y2)
35
Exercise -- GO
Implement the sequential problems developed
in the first exercise
36
Modular Programming with
Functions
 designed
in small segments
 each segment implemented as a function
–
sqrt, pow, sin
 self
–
–
contained
requires input through parameters
sends output through name
 Abstraction
–
know what the function does and what it needs
37
Modular Programming with
Functions (2)
 allows
for reuse
 eliminates redundancy
 allows for team development
 simplifies logic
38
Form of a Function
[return data type] Function name (parameter list)
{
[declarations]
statements
[return ]
}
39
Types of Functions
 no
–
input, no return value
void
 input
but no return value
 both input and output
 no input but returns a value
40
Example -- Circle Functions
 calculate
the area and circumference of a
–
–
–
–
calculate area
calculate circumference
output results
 invoke
–
the functions
use name and parameters in an expression
 functions
be used
must be defined before they can
41
Example -- Pythagorean Triples
 Pythagorean Triple
are the three sides of a
right triangle a,b,c
–
a2 + b2 = c2
 given
m and n, such that m>n we can
generate the triples
–
–
–
a = m2 - n2
b= 2mn
c = m2 + n2
42
Call by Value
 on
invocation the value of the actual
parameter is copied into the formal
parameter
 when the function terminates the value IS
NOT copied back to the actual parameter
 can not change the value of a parameter
within the function
43
Example Call by Value
#include <iostream.h>
int test (int n)
{
int i = 5;
n +=i;
return (n);
}
void main (void)
{
int n=1, i;
i = test (n);
cout << i << “ = “
<< n << endl;
}
44
Example Call by Value (2)
main
test
1
n
16
6
i
5
n
i
45
Functions -- Pass by Reference
 returns
0 or 1 value through name
 need to return more than 1
–
swap the values of two variables
 change
–
the values of parameters
bank deposit or check
 pass
the “name” of the parameter rather
than its value so that the function uses the
same memory location as the actual
parameter
46
Reversing Order -- Swap
if (num1 < num2)
{
temp = num1;
num1 = num2;
num2 = num1;
}
47
Reference Parameters
 Parameter
which shares the memory of the
actual parameter rather than declare new
memory and copy the actual’s value into it
 Parameter declaration
int & x;
– x is an alias for the actual integer parameter
double & y
– y is an alias for the actual double parameter
48
Function Swap
void swap (int & num1, int & num2)
{
int temp;
temp = num1;
num1 = num2;
num2 = temp;
}
if a > b
swap (a,b); to invoke the function
49
Call by Value vs Reference
 Use
–
–
–
all input
when need to return more than 1 value
always have return type void
 Use
–
–
reference vs return type
value
all other cases
no side effects
50
Exercise
 modify
circle.cpp to use reference where
appropriate
 modify pyth.cpp to have compute_sides
51
Programming Problem -Functions
 program
to convert Fahrenheit to Celsius,
Fahrenheit to Kelvin
–
–
input the temperature in Fahrenheit
use functions
»
»
»
»
input Fahrenheit temperature
convert to Celsius
convert to Kelvin
output the results
52
Programming Problem -Functions
 Translate
US prices from pennies per pound
to Canadian prices dollars per kilogram
–
–
1 pound = .4536 kilograms
1 dollar US = 1.26 dollars Canadian
 Input
5 words, echoing each as it is input
and display the average length (number of
characters) per word
53
Exercise -- GO
Implement all previous programs using
modular design and reference and value
parameters as appropriate
54
Function Prototypes
a
function must be declared before it can be
used
 placed functions at top of program
 create prototype (declaration of interface),
place it at the top and the functions’
implementation can be placed after the main
function
 [return value] function name (parameter
list);
55
 function
–
–
different interfaces
compiler can determine which to execute
 operators
56
Selection Structures
 execute
a group of statements based upon a
condition being true or false
 if (condition)
statement;
 if
(condition)
{ statement(s);
}
 conditions
-- relational operators
<, >, <=, >=, = =, !=
57
Simple Selection Examples
 if
(hours > 40)
cout << “overtime!\n”;
 if
(cost > 30000)
{
tax = (cost - 30000) * tax_rate;
cout << “\n for a car costing “ << cost <<
“a luxury tax of “ << tax << “ is due ”;
}
58
Selection -- IF ELSE
 if
(condition)
statement;
else
statement;
 if
(condition)
{ statements;
}
else
{statements;
}
59
If ELSE -- Examples
 if
(x>y)
max = x;
else
max = y;
60
If ELSE -- Examples (2)
 if
(hours <= 40)
gross_pay = wage * hours;
else
{
overtime_hours = hours -40;
overtime_pay = wage * overtime_hours * 1.5;
gross_pay = wage * 40 + overtime_pay;
}
61
Programming Example
 find
the reciprocal of an integer
 undefined for 0
–
attempt to divide by 0 will cause program
termination
 recip.cpp
62
Programming Exercise
 Modify
the program which finds the roots
of the quadratic equation so that it will not
error terminate
–
63
Logical Operators
 combine
two or more relational operators to
create complex relations
 AND -- &&
 OR -- ||
 NOT -- !
 precedence && before ||
64
Conditional Operators -Examples
 if
(temp_type = = ‘F’ || temp_type = = ‘f’)
{
kelvin = convert_kelvin (temp);
}
 If
(num > 0 && num < 10)
{
cout << “single digit number\n”;
}
65
Short Circuiting
 efficient
evaluation of Boolean expression
 AND
–
the first relational expression which evaluates
false terminates the evaluation-- result false
 OR
–
the first relational expression which evaluates
as true terminates the evaluation -- result true
66
Short Circuiting (2)
 determine
if a number is divisible by
another number
 if the second number is 0 -- error
termination
if (a != 0 && b % a == 0)
if a = 0 the second expression is not
evaluated
67
Programming Example
 determining
leap years
 leap years occur every 4 years, if the year is
divisible by 4
–
only valid for non-centennial years
 centennial
year (divisible by 100) which is
divisible by 400
68
BREAK statement
 allows
program to leave a control structure
 form -- break;
69
Multiple Selection -- Switch
 test
the value of a single integer type and
perform different blocks of statements
based upon the value
70
Multiple Selection -- Switch
Form
switch (expression)
{ case value 1:
statement(s);
break;
case value 2:
statement (s);
break; ....
[default:
statement(s);
break;]}
71
Example Switch Statement
determine if a value is -1, 0, or 1-4
cin >> value;
switch (value)
{
case -1:
cout << “value = -1\n”;
break;
case 0:
cout << “value = 0\n”;
break;
72
Example Switch Statement Con’t
case 1:
case 2:
case 3:
case 4:
cout << “value in range 1-4\n”;
break;
default:
cout << “value is < -1 or > 4\n”;
}
73
Example Programming Problem
 color
compliments
 clswitch.cpp
74
Programming Problem
 complete
temperature conversion program
 accepts as input a temperature and a type
and converts it to the other two temperature
types
 prints an error message if unknown type
 accepts both upper and lower case input
75
Exercise -- GO
Implement the selection statement problem
solving problems
76
Repetition Statements
 ability
to repeatedly execute blocks of
statements
 two types of loops
–
count controlled
»
–
executed a set number of times
event driven
»
»
executed until a certain event occurs
pre-test and post-test loops
77
While Loop
 form
while (condition)
{
statement(s);
}
 event
driven loop
78
While Loop (2)
 pre-test
–
(0) loop
test the condition
»
»
»
if true execute the loop
if false exit loop
loop can be executed 0 times
79
Example While Loop
i = 5;
while (i > 0)
{ cout << i << endl;
i--;
}
80
Programming Example
 taking
averages
 enter values to be averaged until sentinel is
entered (0)
–
event which terminates loop
 ave.cpp
81
Controlling Input
0
–
–
is in the set to be averaged
must use some key defined value to signal end
of input
CRTL Z
 get()
–
–
–
cin.get()
accepts a single value as input
prompt for CRTL (^) Z
82
Do While Loop
 event
driven loop
 always executes at least once (1 loop)
 post test loop
 form
do{
statement(s);
}while (condition);
83
Do While Loop (2)
 executes
the loop
 tests the condition
–
–
if true executes the loop again
if false exits the loop
84
Do While Example
the numbers from 1 to 5
sum = 0;
i = 1;
do{
sum += i;
i ++;
}while (i <= 5);
85
Programming Example
 display
square of input value
 user prompt to continue
 squares.cpp
86
Programming Example -- Circle
Functions
 robust
–
user friendly/user forgiving
 Area
–
–
–
programming
and Circumference of circle
present error message and re-prompt for input
until it is valid
circleif.cpp
87
Programming Exercise -Pythagorean Triples
 robust
–
example
m > n and both > 0
 give
meaningful error message
88
For Loop
 counted
loop -- set number of times
 iterates through a set of values
for (initial expression;
condition;
loop expression)
{ statement(s);
}
89
For Loop (2)
 initial
expression -- starting point, executed
once before the loop begins
 condition -- evaluated each time through the
loop (pre test)
–
–
exit -- false
execute -- true
 loop
expression -- statement(s) executed at
the bottom of the loop
90
Example For Loop - I
 Countdown
for (i = 1; i<=5; ++i)
{
cout << i << endl;
}
91
Example For Loop - II
 sum
numbers 1-5
for (sum = 0, i = 1; i <= 5; ++i)
{
sum += i;
}
92
Programming Examples
 Factorials
–
–
fact.cpp
change fact to be integer (see what happens)
 temperature
–
temps.cpp
 generating
–
conversions
random numbers
random.cpp
93
Boolean Variables
 Turbo
–
–
bool.h -- apclass
0 false, 1 true
 bool
–
–
C++ does not have Boolean
flag
if flag (if 0 false, non 0 true)
while !flag
 flags.cpp
94
Programming Exercise
 maintain
check book balance
 modular
 \$15
–
display message
 final
balance on exit
95
Nesting Control Structures
 both
selection and repetition statements can
be nested for complex execution
 if else if
–
else matches closest un-elsed if
 all
looping structures can be nested
regardless of type
96
Example If else if -- Sales Quotas
if (num_sales < quota)
rate = low_rate;
else if (num_sales = quota)
rate= ave_rate;
else rate = high_rate;
97
Example Nested Loops
cout << “enter the number to sum to, 0 to
end”;
cin >> num;
while (num != 0)
{ for (sum=0, i=1; i<=num;++i)
sum += num;
cout << “the sum of the numbers 1 - ....
cout << “enter the number to sum to ...
cin >> num);} /*end while*/
98
Nesting Control Structures
Programming Examples
 counting
–
aven.cpp
 printing
–
multiplication tables
table.cpp
 circle
–
functions
circleof.cpp
99
Programming Exercise
 Modify
the average program so that more
than 1 set of averages can be determined
 Modify the Pythagorean triples so that an
unlimited number of triples can be
generated
 Modify finding roots of a quadratic equation
so that all root types are determined
100
Enumeration Types
 user
–
–
defined data type
enum statement
define the domain
 enum
–
–
bool {false, true};
bool -- name of data type
false, true -- domain
 integers
–
false = 0, true =1
101
Lines in Cartesian Plane
 perpendicular,
parallel or intersecting
 slope
 enumeration
–
–
type can be used
parameters
return types
 lines.cpp
102
Exercise -- GO
Implement any remaining problem solving
programs.
Be sure have a complete set identifying all
structures including enumeration types.
103
Composite Data Structures
 construct
that can access more than one data
item through a single name
 Array -- homogenous data type
 Structure -- heterogeneous data type
104
Arrays\Vectors
 collection
of data components
 all of same data type
 are contiguous
 accessed
–
–
entire array (name)
individual component (subscript)
105
Declaring Arrays
 int
–
x[5]
declares a 5 element array of integers
»
x[0], x[1], x[2], x[3], x[4]
 int
x[2][5] -- two dimensional array
 int x [2] [5] [5] -- three dimensional array
 size must be declared at compile time
–
–
can not int size, int x[size]
can
»
»
#define max_size 100
int x[max_size]
106
Referencing Arrays
 elements
–
float ave_temp [12]
»
»
»
 no
–
ave_temp [0] -- Jan
ave_temp [11] -- Dec
ave_temp [i+2]
arrays bounds checking
“fast” code
107
Initializing Arrays
 int
x[5] = {12,-2,33,21,31};
 int height [10] = {60,70,68,72,68};
–
rest 0
 float
–
g[] = {3.2,5.7};
size is set to 2
a
250 element array all to 1
int x[250];
for (i =0; i<=249; i++)
x[i] = 1;
108
Using Arrays
 data
–
must be passed more than once
array1.cpp
 implement
–
array2.cpp
 data
–
vectors or matrices
comes in haphazard order
string example
109
Passing Arrays to Functions
 pass
–
treated as any single variable of that type
»
 pass
–
–
an element
pass by value
the entire array
use the name without any subscripting
pass by reference
»
»
pass the address and the actual memory locations of
the actual array are used by the function
any change made to the elements of the array by the
function WILL be noted in the main program
110
Programming Problem
 Input
a set of exam scores for a class
– calculate and display
» average
» those grades which were above the average
– have number of grades entered determined by
the # of values input rather than prompt for
class size
111
Programming Problem
 Using
an enumeration type for months of
the year
– calculate the average rainfall
– display those months with < average rainfall
amounts
112
Structures
 Heterogeneous
–
–
data type
logically related set of items which can be
accessed either on an individual item basis or
all at once through structure’s name
fields can be of any data type (different ones),
user defined as well
113
Example Structure
{ apstring name;
int midterm;
int final;
float assigns;
float sem_ave;
114
Operations on Structures
 Assignment
–
–
entire structures done by common elements, in
order
single element -- data type
 Initialization
–
on declare
»
»
FRACTION num1 = {1,2};
115
Structures and Functions
 An
element is passed to a structure in the
same way any simple variable is passed
–
–
by value (default) or by reference (forced)
student.cpp
 An
–
–
entire structure is passed
by value (default)
by reference (force) employee.cpp
 A function
can return a structure variable
116
“Arrays” and Structures
 Structures
–
–
apstring name
apvector<int> exams(3)
 vectors
–
can contain vectors, apstring
of structures
»
»
»
60 students in class
class[0].name
class[0].final
class[59].name
class[59].final
117
Hierarchical Structures
 Structures
can contain structures
typedef struct
{char last [15];
char first [15];
char middle;} NAME;
typedef struct
{NAME stu_name;
…} STUDENT;
118
Arrays\Vectors
 collection
of data components
 all of same data type
 are contiguous
 accessed
–
–
entire array (name)
individual component (subscript)
119
Declaring Vectors
 #include
“a:apvector.h”
 apvector<int> v1(10);
–
–
declares a 10 element integer vector
v1[0], v1[1], v1[2]….v1[9]
 apvector<int>
–
–
–
v2(10,0);
declares a 10 element integer vector
all elements are initialized to 0
v2[0]=0, v2[1]=0…..v2[9]=0
120
Declaring Vectors (2)
 apvector<apstring>
–
–
(25);
declares a vector of 25 strings
each is “empty” string
 can
be user defined data types
121
Accessing Elements
 v1[1]
–
second element of the vector
 v1[9]
–
last element of the vector
 v1[1]
+= 2;
 high = v1[3];
122
Assignment -- APVECTOR
 Apvector<int>
 v1
–
–
–
–
v1(10), v2(20);
= v2;
v1 will be “reallocated” at a size of 20
v1[0] = v2[0]
….
v1[19] = v2[19]
 corresponding
elements will be assigned
123
Member Functions -APVECTOR
 User
defined data type -- class
 length() -- capacity of vector
–
–
–
size changes as needed
returns current size as an integer
object.length()
»
»
v1.length() => 20
v1 still ranges from 0-19
for (i=0;i<v1.length();i++)
cout << v1[i] << endl;
124
Vectors as Parameters
 elements
are considered same as any single
variable
 entire vector
–
–
–
pass by value or by reference
more efficient to pass by reference
avoid side effects
»
const reference parameter
125
Using Vectors
 data
–
must be passed more than once
vect1.cpp
 implement
–
vect2a.cpp
 data
–
vectors or matrices
comes in haphazard order
string example
 enumeration
–
types and vectors
rainenum.cpp
126
Matrices
 two
dimensional array
 problems with C++ arrays are doubled in
two dimensions
 APMATRIX
–
–
–
#include “a:apmatrix.h”
can automatically be “resized”
subscript checking
127
Declaring Matrices
 apmatrix<int>
–
imat[0][0] ....imat [2][2]
 apmatrix<int>
–
imat (3,3)
imat2(3,3,0)
all elements are initialized to 0
 can
be any system or user defined data type
128
Referencing Elements
 imat[1][2]
= 7;
 score = imat [i][j];
 if subscript is out of bounds (either of them)
program error terminates
129
Assignment -- APMATRIX
 apmatrix<int>
 imat
–
–
–
–
imat2(10,10);
= imat2;
imat 3x3
imat2 10x10
after assignment imat 10x10
assigns corresponding elements
130
APMATRIX--Member Functions
 numrows()
–
imat.numrows() ==> 10
 numcols()
–
-- returns the number of rows
-- returns the number of columns
imat.numcols() ==> 10
for (r=0;r<imat.numrows();r++)
for (c=0;c<imat.numcols();c++)
cout << imat[r][c];
131
Programming Problem
 Create
“resuable” functions for matrix
–
–
–
matrix.h
matrix.cpp
use_matrix.cpp
132
struct COMPLEX
{ double real;
double imag;};
operations -- input, output, add, subtract, mult,
divide, absolute value
package together in include file
133
Class -- User Defined Data Type
 encapsulate
data and functions
 information hiding
–
public vs private
 can
–
be inherited
structures can not
134
Public VS. Private
 client
programs can use the member
functions which “come with” a class
through the public interface
 client program CAN NOT access any
function or data member declared private
–
–
–
information hiding
if can’t access it, can’t modify it
more maintainable -- fewer side effects
135
Class Definition
class class_name
{public:
member functions
private:
data members
};
136
Data Members
 Pieces
of information which the class
maintains
– states
» date -- month, day, year
» complex number --- real, imaginary
» fraction -- numerator, denominator
» student -- name, ssn, address, etc
 Private--
only the functions of the class
137
Member Functions
 Services
provided by the class to
manipulate the data members
 Public -- can be used by any “client”
program
 Constructors, Accessors, Mutators, and
Operations
138
Constructors
 Automatically
invoked by the system when
an object of the class is declared
 specify the initial values to be given to the
data members
 function with the same name as the class
itself with no return type of any kind
139
Accessors
 Return
the value of a data member
 Const functions as they do not change the
value of any data member
 Necessary since no “outside” function can
access the data members
140
Mutators
 Modify
one or more of the data members
 used by client programs to modify the data
members, since client programs can not
access the data members directly
141
Operations
 Provide
services of the class
 perform calculations, etc using data
members
 necessary since the data members are not
accessible to the client programs
142
Date Class
 Data
members
– int day, int month, int year
 Constuctor
– allow date to be set when the object is declared
– or to use default values
 small
implementation of the class
– demonstration purposes only
143
Interface of the Date class
 Definition
of the class
 available to client programs/ers
 .h file
 declaration of the data members
 interfaces of the member functions
 the object receiving the message to invoke
the member function is the one that the
function operates upon
144
Date Class Implementation
 .cpp
file
 the implementation of all member functions
 scope resolution operator ::
– since the function implementations are in a
separate file need to tie them back to the class
members
145
Client Program
 Declares
an object of the data type
– Date today;
 Invoke
a member function
– object.function_name();
– object which receives the message is the one on
which the function the function operators
» v1.resize();
» v1.length();
146
Constructor
 Default
initial values for parameters
– if the parameters are omitted the initial value of
the fraction on declaration is 1/1
 initialization
list
– special form of the constructor which allows
the data members to be set within the interface
(.h file)
147
Fraction Class
Represents rational
numbers
 constructor


– input_fraction

– initializes object to 1/1
operations
divide
 accessors
– reduce
– print_fraction
Mutators

gcd
– needed by class to do
its work
148
Member vs Friend functions
 Member
function must be invoked with
object receiving message
 friend function stands separate
– does not need an object to be invoked
– used for binary operators which do not modify
 defined
in interface as friend
149
Complex Number Class
class COMPLEX
{public:
COMPLEX(int r=0,int i=0);
int real() const;
int imaginary() const;
(const COMPLEX &l, const COMPLEX &r);
150
Complex Number Class Con’t
COMPLEX sub_complex
(const COMPLEX &l, const COMPLEX &r);
COMPLEX mult_complex
(const COMPLEX &l, const COMPLEX &r);
COMPLEX div_complex
(const COMPLEX &l, const COMPLEX &r);
151
Complex Number Class -- Con’t
void set_real (double);
void set_imag(double);
private:
double real;
double imag;
};
152
Member vs Friend functions
 Member
function must be invoked with
object receiving message
 friend function stands separate
– does not need an object to be invoked
– used for binary operators which do not modify
 defined
in interface as friend
153
Inlining
 Used
to provide an implementation within
the interface
 Only use on “small simple functions” which
either simply set data members or simple
calculations which return values
154
This pointer
 Refers
 *this
to the object receiving the message
==> value
– used in functions which modify the object
receiving the message +=,-=,*=,/=
155
File I/O
 Input
and output are done through streams:
istream and ostream (fstream.h)
– cin -- istream -- iostream.h
– cout -- ostream -- iostream.h
4
steps to using files
– declare an object of the appropriate stream
 open
the stream
– connects the external file with the stream
(buffer)
– stream.open(filename);
156
File I/O(2)
 Input
>> but from the stream declared rather
than from cin
 output << but from the stream declared
rather than cout
 close file
– stream.close();
157
```