Abstract Data Types – ADTs

Object-Oriented Paradigm
World consists of objects/components and their interactions with each other
Goal is to be able to have proven, tested software components that are reusable, won’t have to write all code from scratch – speed software development
Came out of Simulation – Simula first OO language
Encapsulation, Inheritance, Polymorphism

Standard Template Library - STL
Why – save time, don’t reinvent the wheel!
Three generic entities:
Container – a data structure that organizes objects a specific way, e.g. stack, queue, vector, list
Iterators – object used to reference an element in
a container, like a pointer, just for some containers like list
Algorithms – frequently used functions on containers – e.g. make-heap, find_first, sort  ( Appendix B Drozdek)


Complexity of algorithms – Big “O”
Used to look at time and space complexity – now just time
As the size of the data set grows, how does the time the algorithm takes to run grow?
In a formula, take fastest growing term, ignore constant multipliers

More on Big “O”
Usually use “n” as the variable to denote size of the data set
If have expression for run-time complexity
F(n) = 7 e**n + 100 n **2 + 250 n + 1,000,000
Dominant term above, as n grows large is?

Big “O”, continued

Review - simple data structures
STL vectors
Lists
Stacks
Queues

VECTORS – dynamically sized

LISTS
#include <list>
list<int> iList ; iList.push_front(5); iList.pop_back();
list<char> cList;                      cList.clear(); if(cList.empty()) ….
list<anyClass> acList; int size=acList.size();

STACKS – LIFO lists
#include <stack>
stack<int> iStack       iStack.push(5);
stack<char> cStack;  cStack.pop();
stack<anyClass> acStack;

QUEUES – FIFO lists

RECURSION
A problem solving tool as well as a feature incorporated in programming languages
Recursive problems have two features
Solutions are easy to give for special states (stopping states)
For a given state (not a stopping state) there are clear rules for how to proceed to a new state.  This new state is either
a) a stopping state b) leads to a stopping state

"What goes on in memory..."
What goes on in memory with a recursive call?
With each recursive call a local environment (or stack frame) is stacked which includes enough storage for:
1) LOCAL VARIABLES
2) VALUE PARAMETERS
3) REFERENCES (POINTERS) BACK TO CALL-BY-     REFERENCE PARAMETERS
4) CELL FOR PASSING BACK THE VALUE OF THE      FUNCTION (FOR NON-VOID FUNCTIONS)
5) THE ADDRESS TO RETURN TO AFTER COMPLETING     THE EXECUTION OF THE CURRENT RECURSIVE CALL

"Recursion exemplifies DIVIDE AND CONQUER"
Recursion exemplifies DIVIDE AND CONQUER  problem-solving strategies ---
Example: TOWERS OF HANOI - 19th century parlor game with 64 disks
Object: Move all disks from peg1 to peg3 using peg2 for intermediate storage
Rules: One disk moved at a time, and a disk can never rest on a smaller disk

Slide 15

Slide 16

Slide 17