Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Abstract Data Type (ADT) a data type whose properties (domain and operations) are specified (what) independently of any particular implementation (how)

Similar presentations


Presentation on theme: "1 Abstract Data Type (ADT) a data type whose properties (domain and operations) are specified (what) independently of any particular implementation (how)"— Presentation transcript:

1 1 Abstract Data Type (ADT) a data type whose properties (domain and operations) are specified (what) independently of any particular implementation (how)

2 2 ADT Specification Example TYPE Time DOMAIN Each Time value is a time in hours, minutes, and seconds. OPERATIONS Set the time Print the time Increment by one second Compare 2 times for equality Determine if one time is “less than” another

3 3 10 45 27 Several Possible Representations of Time 3 int variables 3 strings 3-element int array actual choice of representation depends on time, space, and algorithms needed to implement operations 10 45 27 “10” “45” “27”

4 4 class Time Specification // SPECIFICATION FILE( time.h ) class Time// declares a class data type {// does not allocate memory public : // 5 public function members void set ( int hours, int mins, int secs ) ; int getHour(); int getMins(); int getSecs(); void increment ( ) ; void write ( ) const ; bool Equal ( Time otherTime ) const ; bool LessThan ( Time otherTime ) const ; private :// 3 private data members int hour ; int mins ; int secs ; } ; 4

5 5 Use of C++ data Type class software that uses the class is called a client variables of the class type are called class objects or class instances client code uses public member functions to handle its class objects

6 6 Client Code Using Time #include “Time.h” // includes specification of the class int main ( ) { Time time1, time2 ; // declares 2 objects of TimeType int h,m,s; cout<<“Enter the hour, minute, and second\n”; cin>>h>>m>>s; time1.set (h, m, s ) ; time2 = time1; time1.increment(); time1.write(); time2.write(); if( time1.Equal(time2)) cout<<" times are equal\n"; if( time1.LessThan(time2)) cout<<"times 1 is less than time2\n"; time2.set(23, 59,55); cout<<"Increment time from 23:59:55\n"; for( int i = 1; i <=10; i++) { time2.write(); cout<<"\t"; time2.increment(); } return 0; } 6

7 7 class represents an ADT 2 kinds of class members: data members and function members class members are private by default data members are generally private function members are generally declared public private class members can be accessed only by the class member functions (and friend functions), not by client code.

8 8 class Operations built-in operations valid on class objects are: member selection using dot (. ) operator, assignment to another class variable using ( = ), pass to a function as argument (by value or by reference), return as value of a function other operations can be defined as class member functions

9 9 2 files Generally Used for class Type // SPECIFICATION FILE ( Time.h )( Time.h ) // Specifies the data and function members. class TimeType { public:... private:... } ; // IMPLEMENTATION FILE ( Time.cpp )( Time.cpp ) // Implements the Time member functions.

10 10 Information Hiding Class implementation details are hidden from the client’s view. This is called information hiding. Public functions of a class provide the interface between the client code and the class objects. client code specificationimplementation abstraction barrier

11 11 Time Class Instance Diagrams Private data: hrs mins secs Set Increment Write LessThan Equal Private data: hrs mins secs Set Increment Write LessThan Equal 17 58 2 18 30 0 time1 t ime2

12 12 Separate Compilation and Linking of Files Time.h client.cppTime.cpp client.obj client.exeTime.obj Compiler Linker #include “Time.h” implementation file specification file main program

13 13 often several program files use the same header file containing typedef statements, constants, or class type declarations--but, it is a compile-time error to define the same identifier twice this preprocessor directive syntax is used to avoid the compilation error that would otherwise occur from multiple uses of #include for the same header file #ifndef Preprocessor_Identifier #define Preprocessor_Identifier. #endif Avoiding Multiple Inclusion of Header Files


Download ppt "1 Abstract Data Type (ADT) a data type whose properties (domain and operations) are specified (what) independently of any particular implementation (how)"

Similar presentations


Ads by Google