Object Oriented Programming (CS304) VU
CS304-Handouts
© Virtual University of Pakistan 1
,Object Oriented Programming (CS304) VU
LECTURE NO.01 ..................................................................................................................................... 8
01.1. INTRODUCTION ...................................................................................................................... 8
01.2. WHAT IS A MODEL? ............................................................................................................. 10
01.3. OO MODELS: ........................................................................................................................ 11
01.4. OBJECT-ORIENTATION - ADVANTAGES ............................................................................ 12
01.5. WHAT IS AN OBJECT? .......................................................................................................... 12
01.6. TANGIBLE AND INTANGIBLE OBJECTS .............................................................................. 13
01.7. SUMMARY: ............................................................................................................................ 14
LECTURE NO.02 ................................................................................................................................... 15
02.1. INFORMATION HIDING: ...................................................................................................... 15
02.2. ENCAPSULATION .................................................................................................................. 16
02.3. INTERFACE ............................................................................................................................ 17
02.4. IMPLEMENTATION ............................................................................................................... 18
02.5. SEPARATION OF INTERFACE & IMPLEMENTATION .......................................................... 19
02.6. MESSAGES ............................................................................................................................ 19
02.7. SUMMARY ............................................................................................................................. 19
LECTURE NO.03 ................................................................................................................................... 21
03.1. ABSTRACTION ...................................................................................................................... 21
03.2. CLASSES ................................................................................................................................ 23
03.3. INHERITANCE ....................................................................................................................... 25
LECTURE NO.04 ................................................................................................................................... 29
04.1. CONCEPTS RELATED WITH INHERITANCE ........................................................................ 29
04.2. GENERALIZATION ................................................................................................................ 29
04.3. SUB-TYPING (EXTENSION) .................................................................................................. 31
04.4. SPECIALIZATION (RESTRICTION) ....................................................................................... 32
04.5. OVERRIDING ........................................................................................................................ 34
04.6. ABSTRACT CLASSES ............................................................................................................. 36
04.7. CONCRETE CLASSES ............................................................................................................ 38
LECTURE NO.05 ................................................................................................................................... 40
05.3. SIMPLE ASSOCIATION ......................................................................................................... 50
05.4. COMPOSITION ...................................................................................................................... 52
05.5. AGGREGATION ..................................................................................................................... 54
LECTURE NO.06 ................................................................................................................................... 55
06.1. CLASS COMPATIBILITY........................................................................................................ 55
06.2. POLYMORPHISM ................................................................................................................... 56
06.3. POLYMORPHISM IN OO MODEL ........................................................................................ 56
06.4. POLYMORPHISM – ADVANTAGES ...................................................................................... 57
06.5. OBJECT-ORIENTED MODELING AN EXAMPLE .................................................................. 57
LECTURE NO.07 ................................................................................................................................... 65
07.1. CLASS .................................................................................................................................... 65
07.2. TYPE IN C++ ......................................................................................................................... 65
07.3. ABSTRACTION ...................................................................................................................... 66
07.4. DEFINING A NEW USER DEFINED TYPE ............................................................................ 66
07.5. OBJECT AND CLASS: ............................................................................................................ 68
07.6. ACCESSING MEMBERS ......................................................................................................... 68
07.7. ACCESS SPECIFIERS .............................................................................................................. 69
LECTURE NO.08 ................................................................................................................................... 72
2 © Virtual University of Pakistan
,Object Oriented Programming (CS304) VU
08.1. MEMBER FUNCTIONS ........................................................................................................... 72
08.2. DEFINING MEMBER FUNCTIONS ........................................................................................ 72
08.3. INLINE FUNCTIONS .............................................................................................................. 73
08.4. CONSTRUCTOR ..................................................................................................................... 75
08.5. CONSTRUCTOR PROPERTIES ............................................................................................... 75
08.6. DEFAULT CONSTRUCTOR .................................................................................................... 76
08.7. CONSTRUCTOR OVERLOADING ......................................................................................... 77
08.8. CONSTRUCTOR OVERLOADING ......................................................................................... 78
08.9. COPY CONSTRUCTOR........................................................................................................... 79
08.10. SHALLOW COPY ............................................................................................................... 81
08.11. DEEP COPY ....................................................................................................................... 82
LECTURE NO.09.................................................................................................................................... 84
09.1. SHALLOW COPY .................................................................................................................... 85
09.2. DEEP COPY ............................................................................................................................ 90
09.3. IMPORTANT POINTS ABOUT COPY CONSTRUCTOR: .......................................................... 94
09.4. DESTRUCTOR ........................................................................................................................ 94
09.5. ACCESSOR FUNCTIONS ........................................................................................................ 95
09.6. THIS POINTER ....................................................................................................................... 96
LECTURE NO.10.................................................................................................................................... 99
10.1. USES OF THIS POINTER ........................................................................................................ 99
10.2. SEPARATION OF INTERFACE AND IMPLEMENTATION....................................................... 99
10.3. COMPLEX NUMBER............................................................................................................. 100
10.4. CONST MEMBER FUNCTIONS ............................................................................................ 102
10.5. THIS POINTER AND CONST MEMBER FUNCTION ............................................................ 104
LECTURE NO.11.................................................................................................................................. 105
11.1. USAGE EXAMPLE OF CONSTANT MEMBER FUNCTIONS .................................................. 105
11.2. DIFFERENCE BETWEEN INITIALIZATION AND ASSIGNMENT: ........................................ 106
11.3. MEMBER INITIALIZER LIST ............................................................................................... 106
11.4. CONST OBJECTS .................................................................................................................. 107
11.5. STATIC VARIABLES ............................................................................................................ 109
LECTURE NO.12.................................................................................................................................. 112
12.1. ACCESSING STATIC DATA MEMBER ................................................................................ 113
12.2. LIFE OF STATIC DATA MEMBER ....................................................................................... 114
12.3. STATIC MEMBER FUNCTION ............................................................................................. 115
12.4. THIS POINTER AND STATIC MEMBER FUNCTIONS ........................................................... 116
12.5. GLOBAL VARIABLE VS. STATIC MEMBERS ...................................................................... 116
12.6. ARRAY OF OBJECTS ............................................................................................................ 116
LECTURE NO.13.................................................................................................................................. 118
13.1. POINTER TO OBJECTS......................................................................................................... 118
13.2. BREAKUP OF NEW OPERATION ......................................................................................... 119
13.3. CASE STUDY ........................................................................................................................ 119
13.4. COMPLETE CODE OF DATE CLASS ..................................................................................... 121
LECTURE NO.14.................................................................................................................................. 124
14.1. COMPOSITION .................................................................................................................... 124
LECTURE NO.15.................................................................................................................................. 132
15.1. AGGREGATION ................................................................................................................... 135
15.2. FRIEND FUNCTIONS ........................................................................................................... 138
LECTURE NO.16.................................................................................................................................. 142
© Virtual University of Pakistan 3
, Object Oriented Programming (CS304) VU
16.1. OPERATOR OVERLOADING ............................................................................................... 142
LECTURE NO.17 ................................................................................................................................. 149
17.1. OVERLOADING ASSIGNMENT OPERATOR....................................................................... 151
LECTURE NO.18 ................................................................................................................................. 155
18.1. SELF ASSIGNMENT PROBLEM: ........................................................................................... 155
18.2. OTHER BINARY OPERATORS ............................................................................................. 156
18.3. FRIEND FUNCTIONS AND OPERATOR OVERLOADING ................................................... 157
LECTURE NO.19 ................................................................................................................................. 158
19.1. STREAM INSERTION OPERATOR ....................................................................................... 158
19.2. STREAM EXTRACTION OPERATOR .................................................................................... 158
19.3. OVERLOADING STREAM INSERTION OPERATOR ........................................................... 159
19.4. OVERLOADING STREAM EXTRACTION OPERATOR: ...................................................... 160
19.5. OTHER BINARY OPERATORS: ............................................................................................ 161
LECTURE NO.20 ................................................................................................................................. 163
20.1. SUBSCRIPT [] OPERATOR ................................................................................................... 164
20.2. OVERLOADING SUBSCRIPT [] OPERATOR ....................................................................... 164
20.3. OVERLOADING FUNCTION () OPERATOR ........................................................................ 165
20.4. FUNCTION OPERATOR PERFORMING SUB STRING OPERATION, .................................. 165
20.5. UNARY OPERATORS........................................................................................................... 166
LECTURE NO.21 ................................................................................................................................. 168
21.1. BEHAVIOR OF ++ AND -- FOR PRE-DEFINED TYPES: ........................................................ 168
21.2. POST-INCREMENT OPERATOR: .......................................................................................... 169
21.3. TYPE CONVERSION ............................................................................................................ 170
21.4. USER DEFINED TYPES: ....................................................................................................... 173
21.5. DRAWBACKS OF TYPE CONVERSION OPERATOR: .......................................................... 174
LECTURE NO.22 ................................................................................................................................. 175
22.1. PRACTICAL IMPLEMENTATION OF INHERITANCE IN C++.............................................. 175
22.2. INHERITANCE IN CLASSES ................................................................................................ 175
22.3. UML NOTATION................................................................................................................ 175
22.4. INHERITANCE IN C++ ........................................................................................................ 175
22.5. “IS A” RELATIONSHIP....................................................................................................... 176
LECTURE NO.23 ................................................................................................................................. 183
23.1. ACCESSING BASE CLASS MEMBER FUNCTIONS IN DERIVED CLASS: ............................. 183
23.2. “PROTECTED” ACCESS SPECIFIER: ..................................................................................... 185
23.3. “IS A” RELATIONSHIP....................................................................................................... 186
23.4. STATIC TYPE ....................................................................................................................... 189
LECTURE NO.24 ................................................................................................................................. 191
24.1. MODIFIED DEFAULT CONSTRUCTOR .............................................................................. 199
LECTURE NO.25 ................................................................................................................................. 207
25.1. OVERLOADING VS. OVERRIDING .................................................................................... 207
25.2. HIERARCHY OF INHERITANCE .......................................................................................... 211
LECTURE NO.26 ................................................................................................................................. 213
26.1. BASE INITIALIZATION ......................................................................................................... 213
26.2. TYPES OF INHERITANCE .................................................................................................... 214
26.3. PRIVATE INHERITANCE ..................................................................................................... 216
4 © Virtual University of Pakistan
CS304-Handouts
© Virtual University of Pakistan 1
,Object Oriented Programming (CS304) VU
LECTURE NO.01 ..................................................................................................................................... 8
01.1. INTRODUCTION ...................................................................................................................... 8
01.2. WHAT IS A MODEL? ............................................................................................................. 10
01.3. OO MODELS: ........................................................................................................................ 11
01.4. OBJECT-ORIENTATION - ADVANTAGES ............................................................................ 12
01.5. WHAT IS AN OBJECT? .......................................................................................................... 12
01.6. TANGIBLE AND INTANGIBLE OBJECTS .............................................................................. 13
01.7. SUMMARY: ............................................................................................................................ 14
LECTURE NO.02 ................................................................................................................................... 15
02.1. INFORMATION HIDING: ...................................................................................................... 15
02.2. ENCAPSULATION .................................................................................................................. 16
02.3. INTERFACE ............................................................................................................................ 17
02.4. IMPLEMENTATION ............................................................................................................... 18
02.5. SEPARATION OF INTERFACE & IMPLEMENTATION .......................................................... 19
02.6. MESSAGES ............................................................................................................................ 19
02.7. SUMMARY ............................................................................................................................. 19
LECTURE NO.03 ................................................................................................................................... 21
03.1. ABSTRACTION ...................................................................................................................... 21
03.2. CLASSES ................................................................................................................................ 23
03.3. INHERITANCE ....................................................................................................................... 25
LECTURE NO.04 ................................................................................................................................... 29
04.1. CONCEPTS RELATED WITH INHERITANCE ........................................................................ 29
04.2. GENERALIZATION ................................................................................................................ 29
04.3. SUB-TYPING (EXTENSION) .................................................................................................. 31
04.4. SPECIALIZATION (RESTRICTION) ....................................................................................... 32
04.5. OVERRIDING ........................................................................................................................ 34
04.6. ABSTRACT CLASSES ............................................................................................................. 36
04.7. CONCRETE CLASSES ............................................................................................................ 38
LECTURE NO.05 ................................................................................................................................... 40
05.3. SIMPLE ASSOCIATION ......................................................................................................... 50
05.4. COMPOSITION ...................................................................................................................... 52
05.5. AGGREGATION ..................................................................................................................... 54
LECTURE NO.06 ................................................................................................................................... 55
06.1. CLASS COMPATIBILITY........................................................................................................ 55
06.2. POLYMORPHISM ................................................................................................................... 56
06.3. POLYMORPHISM IN OO MODEL ........................................................................................ 56
06.4. POLYMORPHISM – ADVANTAGES ...................................................................................... 57
06.5. OBJECT-ORIENTED MODELING AN EXAMPLE .................................................................. 57
LECTURE NO.07 ................................................................................................................................... 65
07.1. CLASS .................................................................................................................................... 65
07.2. TYPE IN C++ ......................................................................................................................... 65
07.3. ABSTRACTION ...................................................................................................................... 66
07.4. DEFINING A NEW USER DEFINED TYPE ............................................................................ 66
07.5. OBJECT AND CLASS: ............................................................................................................ 68
07.6. ACCESSING MEMBERS ......................................................................................................... 68
07.7. ACCESS SPECIFIERS .............................................................................................................. 69
LECTURE NO.08 ................................................................................................................................... 72
2 © Virtual University of Pakistan
,Object Oriented Programming (CS304) VU
08.1. MEMBER FUNCTIONS ........................................................................................................... 72
08.2. DEFINING MEMBER FUNCTIONS ........................................................................................ 72
08.3. INLINE FUNCTIONS .............................................................................................................. 73
08.4. CONSTRUCTOR ..................................................................................................................... 75
08.5. CONSTRUCTOR PROPERTIES ............................................................................................... 75
08.6. DEFAULT CONSTRUCTOR .................................................................................................... 76
08.7. CONSTRUCTOR OVERLOADING ......................................................................................... 77
08.8. CONSTRUCTOR OVERLOADING ......................................................................................... 78
08.9. COPY CONSTRUCTOR........................................................................................................... 79
08.10. SHALLOW COPY ............................................................................................................... 81
08.11. DEEP COPY ....................................................................................................................... 82
LECTURE NO.09.................................................................................................................................... 84
09.1. SHALLOW COPY .................................................................................................................... 85
09.2. DEEP COPY ............................................................................................................................ 90
09.3. IMPORTANT POINTS ABOUT COPY CONSTRUCTOR: .......................................................... 94
09.4. DESTRUCTOR ........................................................................................................................ 94
09.5. ACCESSOR FUNCTIONS ........................................................................................................ 95
09.6. THIS POINTER ....................................................................................................................... 96
LECTURE NO.10.................................................................................................................................... 99
10.1. USES OF THIS POINTER ........................................................................................................ 99
10.2. SEPARATION OF INTERFACE AND IMPLEMENTATION....................................................... 99
10.3. COMPLEX NUMBER............................................................................................................. 100
10.4. CONST MEMBER FUNCTIONS ............................................................................................ 102
10.5. THIS POINTER AND CONST MEMBER FUNCTION ............................................................ 104
LECTURE NO.11.................................................................................................................................. 105
11.1. USAGE EXAMPLE OF CONSTANT MEMBER FUNCTIONS .................................................. 105
11.2. DIFFERENCE BETWEEN INITIALIZATION AND ASSIGNMENT: ........................................ 106
11.3. MEMBER INITIALIZER LIST ............................................................................................... 106
11.4. CONST OBJECTS .................................................................................................................. 107
11.5. STATIC VARIABLES ............................................................................................................ 109
LECTURE NO.12.................................................................................................................................. 112
12.1. ACCESSING STATIC DATA MEMBER ................................................................................ 113
12.2. LIFE OF STATIC DATA MEMBER ....................................................................................... 114
12.3. STATIC MEMBER FUNCTION ............................................................................................. 115
12.4. THIS POINTER AND STATIC MEMBER FUNCTIONS ........................................................... 116
12.5. GLOBAL VARIABLE VS. STATIC MEMBERS ...................................................................... 116
12.6. ARRAY OF OBJECTS ............................................................................................................ 116
LECTURE NO.13.................................................................................................................................. 118
13.1. POINTER TO OBJECTS......................................................................................................... 118
13.2. BREAKUP OF NEW OPERATION ......................................................................................... 119
13.3. CASE STUDY ........................................................................................................................ 119
13.4. COMPLETE CODE OF DATE CLASS ..................................................................................... 121
LECTURE NO.14.................................................................................................................................. 124
14.1. COMPOSITION .................................................................................................................... 124
LECTURE NO.15.................................................................................................................................. 132
15.1. AGGREGATION ................................................................................................................... 135
15.2. FRIEND FUNCTIONS ........................................................................................................... 138
LECTURE NO.16.................................................................................................................................. 142
© Virtual University of Pakistan 3
, Object Oriented Programming (CS304) VU
16.1. OPERATOR OVERLOADING ............................................................................................... 142
LECTURE NO.17 ................................................................................................................................. 149
17.1. OVERLOADING ASSIGNMENT OPERATOR....................................................................... 151
LECTURE NO.18 ................................................................................................................................. 155
18.1. SELF ASSIGNMENT PROBLEM: ........................................................................................... 155
18.2. OTHER BINARY OPERATORS ............................................................................................. 156
18.3. FRIEND FUNCTIONS AND OPERATOR OVERLOADING ................................................... 157
LECTURE NO.19 ................................................................................................................................. 158
19.1. STREAM INSERTION OPERATOR ....................................................................................... 158
19.2. STREAM EXTRACTION OPERATOR .................................................................................... 158
19.3. OVERLOADING STREAM INSERTION OPERATOR ........................................................... 159
19.4. OVERLOADING STREAM EXTRACTION OPERATOR: ...................................................... 160
19.5. OTHER BINARY OPERATORS: ............................................................................................ 161
LECTURE NO.20 ................................................................................................................................. 163
20.1. SUBSCRIPT [] OPERATOR ................................................................................................... 164
20.2. OVERLOADING SUBSCRIPT [] OPERATOR ....................................................................... 164
20.3. OVERLOADING FUNCTION () OPERATOR ........................................................................ 165
20.4. FUNCTION OPERATOR PERFORMING SUB STRING OPERATION, .................................. 165
20.5. UNARY OPERATORS........................................................................................................... 166
LECTURE NO.21 ................................................................................................................................. 168
21.1. BEHAVIOR OF ++ AND -- FOR PRE-DEFINED TYPES: ........................................................ 168
21.2. POST-INCREMENT OPERATOR: .......................................................................................... 169
21.3. TYPE CONVERSION ............................................................................................................ 170
21.4. USER DEFINED TYPES: ....................................................................................................... 173
21.5. DRAWBACKS OF TYPE CONVERSION OPERATOR: .......................................................... 174
LECTURE NO.22 ................................................................................................................................. 175
22.1. PRACTICAL IMPLEMENTATION OF INHERITANCE IN C++.............................................. 175
22.2. INHERITANCE IN CLASSES ................................................................................................ 175
22.3. UML NOTATION................................................................................................................ 175
22.4. INHERITANCE IN C++ ........................................................................................................ 175
22.5. “IS A” RELATIONSHIP....................................................................................................... 176
LECTURE NO.23 ................................................................................................................................. 183
23.1. ACCESSING BASE CLASS MEMBER FUNCTIONS IN DERIVED CLASS: ............................. 183
23.2. “PROTECTED” ACCESS SPECIFIER: ..................................................................................... 185
23.3. “IS A” RELATIONSHIP....................................................................................................... 186
23.4. STATIC TYPE ....................................................................................................................... 189
LECTURE NO.24 ................................................................................................................................. 191
24.1. MODIFIED DEFAULT CONSTRUCTOR .............................................................................. 199
LECTURE NO.25 ................................................................................................................................. 207
25.1. OVERLOADING VS. OVERRIDING .................................................................................... 207
25.2. HIERARCHY OF INHERITANCE .......................................................................................... 211
LECTURE NO.26 ................................................................................................................................. 213
26.1. BASE INITIALIZATION ......................................................................................................... 213
26.2. TYPES OF INHERITANCE .................................................................................................... 214
26.3. PRIVATE INHERITANCE ..................................................................................................... 216
4 © Virtual University of Pakistan