Download presentation
Presentation is loading. Please wait.
Published byIngelise Therkildsen Modified over 5 years ago
1
COP 3330 Object-oriented Programming in C++
Composition Spring 2019
2
Object as Class Members
Aggregation is a relationship between objects Embed an object (or a pointer) of one class type as member data of another class type Composition refers to a stronger form of aggregation Embedded objects would typically not exist independent of the container object Is also known as the “has a” relationship Engine object inside a Car object as member data 52 Card objects as member data of class Deck Promotes the idea of tool building Objects of a class can be used as components inside other classes
3
Let’s Build a Timer Hour Display Minute Display Second Display
4
Timer & Display The user of Timer is the main program
The user of Display objects is Timer object Timer object will call Display functions through its member data objects (hours, minutes, seconds) Timer Class Display hours Display minutes Display seconds 0..23 0..59 0..59
5
Display Class
6
Timer Class Three Display components
7
Constructors/Destructors for Embedded Objects
When an object (Timer) is created, its constructor runs and also invokes the constructors of its embedded objects (Display) If nothing is done, it will invoke the default constructor Use initialization lists to invoke a constructor with parameters for embedded objects When an object (Timer) is destroyed, its destructor runs and also invokes the destructors of its embedded objects (Display) The life span of a Timer object is longer than, and fully covers, those of Display objects
8
Constructors for Embedded Objects
Normal creation of Display objects Creation of Display objects in the Timer Constructor Display hours(24); Display minutes(60); Display seconds(60); Initialization cannot be performed in the class declaration Need to use an initialization list Display has no default constructor Timer::Timer() : hours(24), minutes(60), Seconds(60) { }
9
Questions
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.