1 / 13

Abstract Data Type (ADT)

Abstract Data Type (ADT). a data type whose properties (domain and operations) are specified ( what ) independently of any particular implementation ( how). ADT Specification Example. TYPE Time DOMAIN Each Time value is a time in hours, minutes, and seconds. OPERATIONS Set the time

Download Presentation

Abstract Data Type (ADT)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  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. “10” “45” “27” 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

  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. 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. Client Code UsingTime #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. 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. 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. 2 files Generally Used for class Type // SPECIFICATION FILE ( Time .h ) // Specifies the data and function members. class TimeType { public: . . . private: . . . } ; // IMPLEMENTATION FILE ( Time.cpp ) // Implements the Time member functions.

  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 abstraction barrier specification implementation

  11. TimeClass Instance Diagrams time1 time2 Set Set Private data: hrs mins secs Private data: hrs mins secs Increment Increment 18 30 0 17 58 2 Write Write LessThan LessThan Equal Equal

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

  13. Avoiding Multiple Inclusion of Header Files • 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

More Related