Post on 18-Dec-2014
description
transcript
Introduction to Introduction to ProgrammingProgramming
Lecture 40Lecture 40
ClassClass
Class is a userClass is a user
defined data type. defined data type.
Data Data HidingHiding
Public Public InterfaceInterface
Yes you can use userYes you can use userdefined data type as a defined data type as a member of the classmember of the class
Class can contain Class can contain objects.objects.
ExampleExampleclass Dateclass Date{{private :private :
int month , day , int month , day , year ;year ;public :public :
// member // member functionsfunctions
} ;} ;
ExampleExampleclass Person class Person {{ private :private : char * name ;char * name ; char * address ;char * address ; Date dateOfBirth ; // member Date dateOfBirth ; // member
objectobject public :public : // public member functions . . .// public member functions . . .} ;} ;
Person :: Person ( char * name , char * address , int day , int month , int Person :: Person ( char * name , char * address , int day , int month , int year )year ){{ dateOfBirth.setDay ( dy ) ; dateOfBirth.setDay ( dy ) ;
dateOfBirth.setMonth ( mn ) ; dateOfBirth.setMonth ( mn ) ; dateOfBirth.setYear ( yr ) ; dateOfBirth.setYear ( yr ) ; // statement ( s ) ;// statement ( s ) ;}}
InitializeInitializer Listr List
Person :: Person ( char * name , Person :: Person ( char * name , char * address , int day, int month, int year ) char * address , int day, int month, int year ) : Date ( int month , int day , int year ): Date ( int month , int day , int year )
ConstructorConstructorDate :: Date ( int day , int month , int year )Date :: Date ( int day , int month , int year ){{
cout << “Inside Date constructor ” ;cout << “Inside Date constructor ” ;}}
Person :: Person ( char * name , char * address ,int Person :: Person ( char * name , char * address ,int day , day ,
int month , int year ) : Date ( month , day , year )int month , int year ) : Date ( month , day , year ){{
cout << “Inside Person constructor” ;cout << “Inside Person constructor” ;}}
DestructorDestructor~ Date ( )~ Date ( )
{{
cout << “Inside Date destructor ” ;cout << “Inside Date destructor ” ;
}}
~ Person ( )~ Person ( )
{{
cout << “Inside Person cout << “Inside Person destructor” ;destructor” ;
}}
ExampleExampleclass Columnclass 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 ; }}} ;} ;
ExampleExampleclass Rowclass Row{{ private :private : int size ;int size ; Column col ;Column col ; public :public : void set ( int ) ;void set ( int ) ;
Row ( )Row ( ) {{ cout << "Inside Constructor for object Row" << cout << "Inside Constructor for object Row" <<
endl ;endl ; }}
~ Row ( )~ Row ( ) {{ cout << "Row destroyed" << endl ;cout << "Row destroyed" << endl ; }} void display ( ) ; void display ( ) ; } ;} ;
ExampleExampleclass Matrixclass Matrix{{ private :private : Row row ;Row row ;
int size ;int size ; public :public : Matrix ( )Matrix ( ) {{ cout << "Matrix Created" << endl << cout << "Matrix Created" << endl <<
endl ;endl ; }} ~ Matrix ( )~ Matrix ( ) {{ cout << "Matrix destroyed" << endl << cout << "Matrix destroyed" << endl <<
endl ;endl ; }} void display ( ) ;void display ( ) ;} ;} ;
main( )main( ){{
Matrix m ;Matrix m ;m.display ( ) ;m.display ( ) ;
}}
ExampleExample
Column CreatedColumn CreatedInside Constructor for object Row Inside Constructor for object Row Matrix CreatedMatrix Created
……..Matrix DestroyedMatrix DestroyedRow DestroyedRow DestroyedColumn DestroyedColumn Destroyed
OutputOutput
Code Code ReuseReuse
const Date dateOfBirth ;const Date dateOfBirth ;
Structure Structure inside a inside a
structurestructure
Class inside Class inside a classa class
ExampleExampleclass Outerclass Outer{ {
…………. . class Inner1 class Inner1
{ { private :private :
// Data members// Data members//data functions//data functions
public :public :// Data members// Data members//data functions//data functions
} ;} ;//data members//data members//data functions//data functions
} ; } ;
Class inside a Class inside a classclass
Outer
Inner1
Inner2
FrienFriendd
ExampleExampleclass Outerclass Outer{ {
public : public : class Inner ;class Inner ;friend class Inner ; friend class Inner ; class Inner class Inner { {
friend class outer ;friend class outer ;// Data members// Data members
};};// Data members// Data members// Member functions // Member functions
} ; } ;
ReturnType className :: ReturnType className :: functionName ( )functionName ( )
{{// Statement ( s ) ; // Statement ( s ) ;
definitiondefinition}}
}
Outer :: Inner :: Inner ( )Outer :: Inner :: Inner ( )
{{
// definition// definition
}}
ExampleExampleclass Outerclass Outer{ {
class Inner1 class Inner1 { {
class Inner2class Inner2{{
class Inner3class Inner3 { {
// Data members and functions// Data members and functions // and perhaps more inner // and perhaps more inner
classesclasses } ;} ;
// Data members and functions// Data members and functions} ; } ; // Data members and functions// Data members and functions
} ;} ;} ; } ;
48: