Presentation is loading. Please wait.

Presentation is loading. Please wait.

Problem of the Day  At what times do the minute and hour hands on an analog clock line up?

Similar presentations


Presentation on theme: "Problem of the Day  At what times do the minute and hour hands on an analog clock line up?"— Presentation transcript:

1 Problem of the Day  At what times do the minute and hour hands on an analog clock line up?

2 Problem of the Day  At what times do the minute and hour hands on an analog clock line up? Hands overlap one anotherHands opposite one another 12:00:00.000 01:05:27.273 02:10:54.545 03:16:21.818 04:21:49.091 05:27:16.364 06:32:43.636 07:38:10.909 08:43:38.182 09:49:05.455 10:54:32.727 06:00:00.000 07:05:27.273 08:10:54.545 09:16:21.818 10:21:49.091 11:27:16.364 12:32:43.636 01:38:10.909 02:43:38.182 03:49:05.455 04:54:32.727

3 CSC 212 – Data Structures

4 Rest of the Year

5

6 ADTs Mean Interface s  Each ADT is defined by single Interface  Guarantees methods exist & what they should do  But classes are free to implement however they want  Programmer knows from the interface :  Each of the method signatures  Value returned by the method  The effects of the method’s actions  Why Exception s thrown by method

7 View of an ADT IOU

8 You Other Coder IOU

9 View of an ADT You Other Coder IOU ADT

10  ADTs must remain abstract  Any implementation okay, if it completes methods  Could implement an ADT with: Implementing ADT

11  ADTs must remain abstract  Any implementation okay, if it completes methods  Could implement an ADT with:  Array Implementing ADT

12  ADTs must remain abstract  Any implementation okay, if it completes methods  Could implement an ADT with:  Array  Linked list Implementing ADT

13  ADTs must remain abstract  Any implementation okay, if it completes methods  Could implement an ADT with:  Array  Linked list  Trained monkeys Implementing ADT

14  ADTs must remain abstract  Any implementation okay, if it completes methods  Could implement an ADT with:  Array  Linked list  Trained monkeys  College students Implementing ADT

15 Is linked list an ADT?

16  Linked lists have very specific implementation  Singly-, & doubly-linked versions exist…  … but implementation impossible using an array  No trained monkeys could do same work  Linked lists also do not specify functionality  No standard way to access or use data  In fact, there is no interface serving as guarantee! Why is linked list not ADT?

17 Implementation vs. ADT ImplementationADT

18  Superinterface for all our ADTs  Define methods common to all data structures  Access & usages patterns differ with each ADT Collection Classes

19  Superinterface for all our ADTs  Define methods common to all data structures  Access & usages patterns differ with each ADT public interface Collection { public int size(); public boolean isEmpty(); } Collection Classes

20  Superinterface for all our ADTs  Define methods common to all data structures  Access & usages patterns differ with each ADT public interface Collection { public int size(); public boolean isEmpty(); } Collection Classes

21  Superinterface for all our ADTs  Define methods common to all data structures  Access & usages patterns differ with each ADT public interface Collection { public int size(); public boolean isEmpty(); } Collection Classes

22  Awwww… our first collection class  Works like PEZ dispenser:  Add by pushing data onto top  Pop top item off to remove impossible  Accessing other values impossible  Top item only is available  Cheap plastic/private fields get in way Stacks

23 Applications of Stacks  Stacks are used everywhere  Back & Forward buttons in web browser  Powerpoint’s Undo & Redo commands  Methods’ stackframes used during execution  Java uses stacks to execute operations in program

24  Defines two vital methods…  push(obj)  add obj onto top of stack  pop()  remove & return item on top of stack  … an accessor method…  top()  return top item (but do not remove it)  … and Collection ’s methods…  size()  returns number of items in stack  isEmpty()  states if stack contains items Stack ADT

25  ADT also defines own exception public class EmptyStackException extends RuntimeException { public EmptyStackException(String err) { super(err); } }  EmptyStackException is unchecked  Need not be listed in throws, but could be  Unchecked since there is little you can do to fix it  try-catch not required, but can crash program More Stack ADT

26 public interface Stack extends Collection { public E top() throws EmptyStackException; public E pop() throws EmptyStackException; public void push(E element); }  Any type of data stored within a Stack  Generics enable us to avoid rewriting this code  Minimum set of exceptions defined by interface  Classes could throw more unchecked exceptions Stack Interface

27 Using Stack

28

29 Your Turn  Get into your groups and complete activity

30 For Next Lecture  Read GT5.1.2 – 5.1.3 for Friday’s class  How can we use an array to implement a Stack?  Linked-list based approaches possible, too?  Why would we prefer one over the other?  Week #8 weekly assignment due on Tuesday  Programming assignment #1 also on Angel  Pulls everything together and shows off your stuff  Better get moving on it, since due in 10 days!


Download ppt "Problem of the Day  At what times do the minute and hour hands on an analog clock line up?"

Similar presentations


Ads by Google