5-AbstractDataType

advertisement
5 – Abstract Data Types
Department of Computer Engineering
Faculty of Engineering, Prince of Songkla University
1
Overview:
1.
2.
3.
4.
5.
6.
What is Data Abstraction? What is ADT?
Model for an Abstract Data Type
Complex Number ADT Example
How Well are ADTs Supported in C?
C++
ADT vs Object-Oriented Programming
2
1.1 What is Data Abstraction?
Concept of “Abstraction”

Allows us to consider the high-level characteristics
of something without getting bogged down in the
details
For example: Process abstraction in procedural
programming like C, we can use (pre-defined)
functions without concern how they really works
inside.
Data Abstraction
 We know what a data type can do
 How it is done is hidden

3
1.2 What is an Abstract Data Type?
Abstract Data Type (ADT)
 Defines a particular data structure in terms of data
and operations
Offers an interface of the objects (instances of an
ADT)
An ADT consists of
 Declaration of data
 Declaration of operations
 Encapsulation of data and operations : data is hidden
from user and can be manipulated only by means of
operations

4
1.3 ADT Implementation
Implementaion of an Abstract Data Type (ADT)
 Hidden from the user

Same ADT may be implemented in different ways in
different languages

Some languages offer built-in ADTs and/or features to
be used to implement ADTs (user-define types)
ADTs support modular design which is very important in
software development
5
2.1 Model for an ADT
Interface - Operations
Data Structure
System design with ADTs
Problem definiton
Specify ADT interactions
Identification of ADTs
(identify data or attributes)
Specify ADT operations
Identify object hierarchy (if using OOP)
Implement ADTs
6
2.2 Clients and Manufacturers
client
implementation
interface
ADT
use
client
manufacturer’s
responsibility
client
7
2.3 Benefits
Manufacturer Benefits:
 easy to modify, maintain
 profitable
 reusable
Client Benefits:
 simple to use, understand
 familiar
 cheap
 component–based
8
3. Complex Number ADT Example
A complex number has a real part and an
imaginary part. e.g.: 2+4i
Interface (operations) ?
 create a complex number
 add, subtract, multiply, divide
 print a complex number
 test to see if something is complex
 etc.
9
Declare a complex number
Interface:
Complex c1, c2, c3;
Possible Implementation (in C language ):
struct complex {
double real,imag;
}
typedef struct complex Complex;
10
Create a complex number
Interface:
c1 = create_complex(2, 3);
/* conceptually, c1 = 2+3i */
11
Implementation:
Complex create_complex(double real,
double imag)
{
Complex c;
c.real = real;
c.imag = imag;
return c;
}
12
Add two complex numbers
Interface:
c3 = add_complex(c1, c2);
/* conceptually, c3 = c1 + c2 */
13
Implementation:
Complex add_complx(Complex c1,
Complex c2)
{ Complex csum;
csum.real = c1.real + c2.real;
csum.imag = c1.imag + c2.imag;
return csum;
}
14
Using the Complex Number ADT
#include <stdio.h>
/* type implementation */
struct complex {
double real,imag;
typedef struct complex Complex;
/* operation interface */
Complex create_complex(double,double);
Complex add_complex(Complex, Complex);
/* other Complex prototypes
print_complex() . . .
*/
continued
15
Using the Complex Number ADT
int main ( )
{ Complex c1, c2, c3;
c1 = create_complex(2,-3);
c2 = create_complex(2,-3);
c3 = add_complex(c1,c2);
print_complex(c3);
return 0;
}
/*Implementation of Complex functions */
:
16
4. How Well are ADTs Supported in C?
Does C enforce the use of the ADTs interface
and the hiding of its implementation?
No
17
5. C++ and OOP
C++ is a superset of C, which has added features to
support object oriented programming (OOP)
C++ offers STL (Standard Templates Library)
providing a set generic data structures which allow
programmers to easily implement standard data
structures like queues, lists, and stacks.
C++ supports classes
 things very like ADTs
Other OOP languages such as Java, Smalltalk
18
6. ADT vs Object-Oriented Programming (OOP)
ADTs are not a part of a particular programming
language
Rather they are implemented by a programmer to
solve a particular problem or some class of problems
In OOP, an ADT can be easily modeled as a class
 An instance as an object
 Data of ADT as properties or fields of a class
 Operations as methods
ADT ≠ OOP
Classes in OOP offers more features than ADTs :
Inheritance (Superclass-Subclass), Polymorphisms, etc.
19
Download