Introduction to Programming Lecture 40
Class Class is a user defined data type.
Data Hiding
Public Interface
Yes you can use user defined data type as a member of the class Class can contain objects.
Example class Date { private : int month, day, year ; int month, day, year ; public : // member functions // member functions } ;
Example class Person { private : private : char * name ; char * name ; char * address ; char * address ; Date dateOfBirth ; // member object Date dateOfBirth ; // member object public : public : // public member functions... // public member functions... } ;
Person :: Person ( char * name, char * address, int day, int month, int year ) { dateOfBirth.setDay ( dy ) ; dateOfBirth.setMonth ( mn ) ; dateOfBirth.setYear ( yr ) ; // statement ( s ) ; }
Initializer List
Person :: Person ( char * name, char * address, int day, int month, int year ) : Date ( int month, int day, int year )
Constructor Date :: Date ( int day, int month, int year ) { cout << “Inside Date constructor ” ; } Person :: Person ( char * name, char * address,int day, int month, int year ) : Date ( month, day, year ) { cout << “Inside Person constructor” ; }
Destructor ~ Date ( ) { cout << “Inside Date destructor ” ; } ~ Person ( ) { cout << “Inside Person destructor” ; }
Example class Column { private : private : int size ; int size ; public : public : Column ( ) Column ( ) { cout << "Column Created" << endl ; cout << "Column Created" << endl ; } void display ( ) ; void display ( ) ; void set ( int ) ; void set ( int ) ; ~ Column ( ) ~ Column ( ) { cout << "Column destroyed" << endl ; cout << "Column destroyed" << endl ; } } ;
Example class Row { private : private : int size ; int size ; Column col ; Column col ; public : public : void set ( int ) ; void set ( int ) ; Row ( ) { cout << "Inside Constructor for object Row" << endl ; cout << "Inside Constructor for object Row" << endl ; } ~ Row ( ) ~ Row ( ) { cout << "Row destroyed" << endl ; cout << "Row destroyed" << endl ; } void display ( ) ; void display ( ) ; } ;
Example class Matrix { private : private : Row row ; Row row ; int size ; int size ; public : public : Matrix ( ) Matrix ( ) { { cout << "Matrix Created" << endl << endl ; cout << "Matrix Created" << endl << endl ; } ~ Matrix ( ) ~ Matrix ( ) { cout << "Matrix destroyed" << endl << endl ; cout << "Matrix destroyed" << endl << endl ; } void display ( ) ; void display ( ) ; } ;
main( ) { Matrix m ; m.display ( ) ; } Example
Column Created Inside Constructor for object Row Matrix Created …. Matrix Destroyed Row Destroyed Column Destroyed Output
Code Reuse
const Date dateOfBirth ;
Structure inside a structure
Class inside a class
Example class Outer {……. class Inner1 class Inner1{ private : // Data members //data functions public : // Data members //data functions } ; //data members //data functions } ;
Class inside a class Outer Inner1 Inner2
Friend
Example class Outer { public : class Inner ; friend class Inner ; class Inner { friend class outer ; // Data members }; // Member functions } ;
ReturnType className :: functionName ( ) { // Statement ( s ) ; definition } }
Outer :: Inner :: Inner ( ) { // definition }
Example class Outer { class Inner1 { class Inner2 { class Inner3 class Inner3 { // Data members and functions // Data members and functions // and perhaps more inner classes // and perhaps more inner classes } ; } ; // Data members and functions // Data members and functions } ; // Data members and functions } ; 48: