You are on page 1of 12

Abstract Data Type

Terms
Type a collection of values Data Type a type together with a collection of

operations to manipulate the type

Abstract Data Type (ADT) defines a data


type solely in terms of a type and a set of operations on that type

Data Structure the physical implementation


of the ADT

Data Structures and OOP Principles


Data Structures are Objects Abstraction (ability to distill a software system into its most basic parts) and Encapsulation (implementing the abstraction without revealing how is implemented) applies to Data Structures Inheritance and Polymorphism

Data Structures are often containers and share similar operations

Defining an ADT
Stages/Phases of defining an ADT 1. Specifications -structure; operations/functions; definition of the ADT 2. Representation or variable/constant declaration -choosing the appropriate data structure fitted for the given specs used in no. 1. 3. Implementation -choosing the appropriate commands/programming statements given a chosen programming language to implement the necessary operations of each of the defined functions.

A. Definition: Letter String


A letter string is a sequence of n characters.The length is referred to as length.

Operations: 1. Append- to add a character at the tail of the sequence. 2. Remove- to delete a character at any position in the given sequence. 3. Print- display the elements of the letter string. 4. Makenull- make the letter string empty.

5. Empty- returns true if the letter string is empty otherwise it returns false.
6. Full- returns true if the letter string is full otherwise it returns false.

Representation:
int n=100; class LS {char letter_string [n]; int length; void append(char c); void remove(int n);

void print(int i); void makenull()


int empty(); int full(); };

1. APPEND Pre: LS is not full Post: a new char is added at the tail end of the LS & likewise the gap is closed 2. REMOVE Pre: not empty Post: one character should have been removed from the LS 3. PRINT Pre: LS is not empty/none

Post: LS is printed

4. MAKENULL
Pre: 0 length ls. Length/none Post: All elements were deleted

5. EMPTY
Pre: 0length ls /none Post: returned TRUE if LS is empty, otherwise returned false

6. FULL
Pre: LS must be full/none Post: returned true if LS is full, otherwise returned false

Implementation
void LS :: append (char c) { if (LS.length != n-1)

{ LS.length = LS.length + 1;
LS.letter_string [LS.length ] = c;} else if (LS.length == n-1) cout<<the letterstring is full; }

void LS :: remove (int n)


{if (LS.length<0) cout<<string is empty;

else if (LS.length<n)
cout<<position is beyond the length; else { for (int i=n;i<LS.length; i++) LS.letter_string[i] = LS.letter_string [i+1]; } LS.length = LS.length-1 }

void LS :: print (int i)


{ if (LS.length<= -1) cout<<empty; else

for( i=0; i<=LS.length; i++)


cout<<LS.letter_string[i];} void LS::makenull ()

{ if (LS.length> -1)
LS.length= -1; else cout<<theres no character in LS; }

int LS ::empty ()
{ if (LS.length<0) return 1;

else

return 0; }

int LS:: full () { if (LS.length>99) return 1;

else return 0;
}

You might also like