Department of Computer Science Data Structures Using C++ 2E Chapter 2 Object-Oriented Design (OOD)...
-
Upload
verity-quinn -
Category
Documents
-
view
216 -
download
0
Transcript of Department of Computer Science Data Structures Using C++ 2E Chapter 2 Object-Oriented Design (OOD)...
![Page 1: Department of Computer Science Data Structures Using C++ 2E Chapter 2 Object-Oriented Design (OOD) and C++ Learn about inheritance Learn about derived.](https://reader035.fdocuments.in/reader035/viewer/2022062423/5697bfee1a28abf838cb93f1/html5/thumbnails/1.jpg)
Department of Computer Science
Data Structures Using C++ 2E
Chapter 2Object-Oriented Design (OOD) and C++
Learn about inheritance Learn about derived and base classes Explore how to redefine the member functions
of a base class Examine how the constructors of base and
derived classes work Learn how to construct the header file of a
derived class
![Page 2: Department of Computer Science Data Structures Using C++ 2E Chapter 2 Object-Oriented Design (OOD) and C++ Learn about inheritance Learn about derived.](https://reader035.fdocuments.in/reader035/viewer/2022062423/5697bfee1a28abf838cb93f1/html5/thumbnails/2.jpg)
Department of Computer Science 2 Data Structures Using C++ 2E
Objectives (cont’d.)Explore three types of inheritance: public, protected, and private
Learn about compositionBecome familiar with the three basic
principles of object-oriented designLearn about overloadingBecome aware of the restrictions on
operator overloading
![Page 3: Department of Computer Science Data Structures Using C++ 2E Chapter 2 Object-Oriented Design (OOD) and C++ Learn about inheritance Learn about derived.](https://reader035.fdocuments.in/reader035/viewer/2022062423/5697bfee1a28abf838cb93f1/html5/thumbnails/3.jpg)
Department of Computer Science 3 Data Structures Using C++ 2E
Objectives (cont’d.)Examine the pointer thisLearn about friend functionsExplore the members and nonmembers of
a classDiscover how to overload various
operatorsLearn about templatesExplore how to construct function
templates and class templates
![Page 4: Department of Computer Science Data Structures Using C++ 2E Chapter 2 Object-Oriented Design (OOD) and C++ Learn about inheritance Learn about derived.](https://reader035.fdocuments.in/reader035/viewer/2022062423/5697bfee1a28abf838cb93f1/html5/thumbnails/4.jpg)
Department of Computer Science 4
Example
We will examine 3 docx filesIn the directory
personType_text_files
This is the base class
Then we will look at otherDocx files in the directory
partTimeEmployeeType_text_files
For the inherited class
![Page 5: Department of Computer Science Data Structures Using C++ 2E Chapter 2 Object-Oriented Design (OOD) and C++ Learn about inheritance Learn about derived.](https://reader035.fdocuments.in/reader035/viewer/2022062423/5697bfee1a28abf838cb93f1/html5/thumbnails/5.jpg)
Department of Computer Science 5 Data Structures Using C++ 2E
Inheritance
An “is-a” relationshipExample: “every employee is a person”
Allows new class creation from existing classesBase class: the existing classDerived class: new class created from existing
classesInherits base classes’ propertiesReduces software complexityBecomes base class for future derived class
Inheritance typesSingle inheritance and multiple inheritance
![Page 6: Department of Computer Science Data Structures Using C++ 2E Chapter 2 Object-Oriented Design (OOD) and C++ Learn about inheritance Learn about derived.](https://reader035.fdocuments.in/reader035/viewer/2022062423/5697bfee1a28abf838cb93f1/html5/thumbnails/6.jpg)
Department of Computer Science Data Structures Using C++ 2E 6
Inheritance (cont’d.)
Viewed as treelike or hierarchicalBase class shown with its derived classes
Derived class general syntaxNo memberAccessSpecifier specified
Assume private inheritance
FIGURE 2-1Inheritance hierarchy
publicprivateprotected
![Page 7: Department of Computer Science Data Structures Using C++ 2E Chapter 2 Object-Oriented Design (OOD) and C++ Learn about inheritance Learn about derived.](https://reader035.fdocuments.in/reader035/viewer/2022062423/5697bfee1a28abf838cb93f1/html5/thumbnails/7.jpg)
Department of Computer Science 7 Data Structures Using C++ 2E
Inheritance (cont’d.)
Facts to keep in mindprivate base class members
private to the base class
public base class member inheritancepublic members or private members
Derived classCan include additional membersCan redefine public member base class functions
All base class member variablesDerived class member variables
![Page 8: Department of Computer Science Data Structures Using C++ 2E Chapter 2 Object-Oriented Design (OOD) and C++ Learn about inheritance Learn about derived.](https://reader035.fdocuments.in/reader035/viewer/2022062423/5697bfee1a28abf838cb93f1/html5/thumbnails/8.jpg)
Department of Computer Science 8 Data Structures Using C++ 2E
Redefining (Overriding) Member Functions of the Base Class
Base class public member function included in a derived class Same name, number, and types of parameters
as base class member function
Function overloadingSame name for base class functions and derived
class functionsDifferent sets of parameters
![Page 9: Department of Computer Science Data Structures Using C++ 2E Chapter 2 Object-Oriented Design (OOD) and C++ Learn about inheritance Learn about derived.](https://reader035.fdocuments.in/reader035/viewer/2022062423/5697bfee1a28abf838cb93f1/html5/thumbnails/9.jpg)
Department of Computer Science
Example of Operator Overloading
Rational Numbers
In directory: rationalType_text_files
![Page 10: Department of Computer Science Data Structures Using C++ 2E Chapter 2 Object-Oriented Design (OOD) and C++ Learn about inheritance Learn about derived.](https://reader035.fdocuments.in/reader035/viewer/2022062423/5697bfee1a28abf838cb93f1/html5/thumbnails/10.jpg)
Department of Computer Science 10 Data Structures Using C++ 2E
Constructors of Derived and Base Classes
Derived class with own private member variablesExplicitly includes its own constructors
Constructors Initialize member variables
Declared derived class object inherits base class membersCannot directly access private base class dataSame is true for derived class member functions
![Page 11: Department of Computer Science Data Structures Using C++ 2E Chapter 2 Object-Oriented Design (OOD) and C++ Learn about inheritance Learn about derived.](https://reader035.fdocuments.in/reader035/viewer/2022062423/5697bfee1a28abf838cb93f1/html5/thumbnails/11.jpg)
Department of Computer Science 11 Data Structures Using C++ 2E
Constructors of Derived and Base Classes (cont’d.)
Derived class constructors can only directly initialize inherited members (public data)
Derived class object must automatically execute base class constructorTriggers base class constructor executionCall to base class constructor specified in
heading of derived class constructor definition
![Page 12: Department of Computer Science Data Structures Using C++ 2E Chapter 2 Object-Oriented Design (OOD) and C++ Learn about inheritance Learn about derived.](https://reader035.fdocuments.in/reader035/viewer/2022062423/5697bfee1a28abf838cb93f1/html5/thumbnails/12.jpg)
Department of Computer Science 12 Data Structures Using C++ 2E
Constructors of Derived and Base Classes (cont’d.)
Example: class rectangleType contains default constructorDoes not specify any constructor of the class boxType
Write the definitions of constructors with parameters
![Page 13: Department of Computer Science Data Structures Using C++ 2E Chapter 2 Object-Oriented Design (OOD) and C++ Learn about inheritance Learn about derived.](https://reader035.fdocuments.in/reader035/viewer/2022062423/5697bfee1a28abf838cb93f1/html5/thumbnails/13.jpg)
Department of Computer Science Data Structures Using C++ 2E 13
Consider the following statements
Constructors of Derived and Base Classes (cont’d.)
![Page 14: Department of Computer Science Data Structures Using C++ 2E Chapter 2 Object-Oriented Design (OOD) and C++ Learn about inheritance Learn about derived.](https://reader035.fdocuments.in/reader035/viewer/2022062423/5697bfee1a28abf838cb93f1/html5/thumbnails/14.jpg)
Department of Computer Science 14 Data Structures Using C++ 2E
Header File of a Derived Class
Required to define new classesBase class already defined
Header files contain base class definitions
New class header files contain commandsTell computer where to look for base classes’
definitions
![Page 15: Department of Computer Science Data Structures Using C++ 2E Chapter 2 Object-Oriented Design (OOD) and C++ Learn about inheritance Learn about derived.](https://reader035.fdocuments.in/reader035/viewer/2022062423/5697bfee1a28abf838cb93f1/html5/thumbnails/15.jpg)
Department of Computer Science 15 Data Structures Using C++ 2E
Multiple Inclusions of a Header File
Preprocessor command includeUsed to include header file in a program
Preprocessor processes the programBefore program compiled
Avoid multiple inclusions of a file in a programUse preprocessor commands in the header file
![Page 16: Department of Computer Science Data Structures Using C++ 2E Chapter 2 Object-Oriented Design (OOD) and C++ Learn about inheritance Learn about derived.](https://reader035.fdocuments.in/reader035/viewer/2022062423/5697bfee1a28abf838cb93f1/html5/thumbnails/16.jpg)
Department of Computer Science Data Structures Using C++ 2E 16
Multiple Inclusions of a Header File (cont’d.)
Preprocessor commands and meaning
![Page 17: Department of Computer Science Data Structures Using C++ 2E Chapter 2 Object-Oriented Design (OOD) and C++ Learn about inheritance Learn about derived.](https://reader035.fdocuments.in/reader035/viewer/2022062423/5697bfee1a28abf838cb93f1/html5/thumbnails/17.jpg)
Department of Computer Science 17 Data Structures Using C++ 2E
Protected Members of a Class
private class members private to the classCannot be directly accessed outside the classDerived class cannot access private members
Solution: make private member publicProblem: anyone can access that member
Solution: declare member as protectedDerived class member allowed accessPrevents direct access outside the class
![Page 18: Department of Computer Science Data Structures Using C++ 2E Chapter 2 Object-Oriented Design (OOD) and C++ Learn about inheritance Learn about derived.](https://reader035.fdocuments.in/reader035/viewer/2022062423/5697bfee1a28abf838cb93f1/html5/thumbnails/18.jpg)
Department of Computer Science Data Structures Using C++ 2E 18
Inheritance as public, protected, or private
Consider the following statementMemberAccessSpecifier: public, protected, or private
![Page 19: Department of Computer Science Data Structures Using C++ 2E Chapter 2 Object-Oriented Design (OOD) and C++ Learn about inheritance Learn about derived.](https://reader035.fdocuments.in/reader035/viewer/2022062423/5697bfee1a28abf838cb93f1/html5/thumbnails/19.jpg)
Department of Computer Science 19 Data Structures Using C++ 2E
Inheritance as public, protected, or private
(cont’d.)public MemberAccessSpecifierpublic members of A, public members of B:
directly accessed in class Bprotected members of A, protected
members of B: can be directly accessed by B member functions and friend functions
private members of A, hidden to B: can be accessed by B member functions and friend functions through public or protected members of A
![Page 20: Department of Computer Science Data Structures Using C++ 2E Chapter 2 Object-Oriented Design (OOD) and C++ Learn about inheritance Learn about derived.](https://reader035.fdocuments.in/reader035/viewer/2022062423/5697bfee1a28abf838cb93f1/html5/thumbnails/20.jpg)
Department of Computer Science 20 Data Structures Using C++ 2E
Inheritance as public, protected, or private
(cont’d.)protected MemberAccessSpecifierpublic members of A, protected members of B:
can be accessed by B member functions and friend functions
protected members of A, protected members of B: can be accessed by B member functions and friend functions
private members of A hidden to B: can be accessed by B member functions and friend functions through the public or protected members of A
![Page 21: Department of Computer Science Data Structures Using C++ 2E Chapter 2 Object-Oriented Design (OOD) and C++ Learn about inheritance Learn about derived.](https://reader035.fdocuments.in/reader035/viewer/2022062423/5697bfee1a28abf838cb93f1/html5/thumbnails/21.jpg)
Department of Computer Science 21 Data Structures Using C++ 2E
Inheritance as public, protected, or private
(cont’d.)private MemberAccessSpecifierpublic members of A, private members of B:
can be accessed by B member functions and friend functions
protected members of A, private members of B: can be accessed by B member functions and friend functions
private members of A, hidden to B: can be accessed by B member functions and friend functions through the public or protected members of A