CSC 205 Java Programming II
Abstract Data Type
Abstraction
The meaning of abstraction
Abstraction arises from a recognition of similarities between certain objects, situations, or processes in the real world, and the decision to concentrate upon these similarities and to ignore for the time being the differences
A definition by Grady BoochAn abstraction denotes the essential characteristics of an object that distinguish it from all other kinds of objects and thus provide crisply defined conceptual boundaries, relative to the perspective of the viewer
Abstraction
The Walls – abstraction barrier
An abstraction serves as an separation between an object’s behavior and its implementation – an abstraction barrier
It focuses on the outside view of an object and hide the implementation details
Deciding upon the right set of abstractions for a given domain is the central problem in OO design
The Walls – an example
The ice maker as an abstraction, has the following well-defined behaviors Output
Crushed ice Ice cubes Chilled water
Indicate Out-of-ice
Input Water
The ice maker in a client’s view –The ways how ice is made and howthe dispenser works is unknown
clientclient server
contract
request
Client-Server Contracts
A collaboration is a one-way interaction between two objects: one plays the client role, the other plays the server role
A C-S contract is defined by the set of request that a client can make of a server (in terms of public methods in Java)
Inside the Walls
Services defined in the contract is solely up to the server object Structural elements – data members Behavioral elements – methods
Java classes are good in implementing such abstractions
IceMaker
+chill()+crush()+cube()+isEmpty()+addWater()
Abstract Data Type
An ADT is an abstraction of a data type, with a collection of data, and a set of operations on that data
Typical operations an ADT needs to support Add data to a data collection Remove data from a data collection Inquiries about the data in the collection
What Is Not an ADT?
An ADT is not a data processor It’s not supposed to manipulated data So an abstraction such as the ice maker is not a
good example It takes in water, and outputs something different
Various ADTs
Linear ADTs Lists Queues Stacks
Trees Binary trees
Maps Dictionaries
Sets
The ADT List
Operations supported Create Check if empty Determine size Add items Remove items Retrieve items (at a given position)
A Sample Java Implementation
java.util.Vector