MyQueue CS 313 Smalltalk example Class MyQueue ============= Object subclass:#MyQueue instanceVariableNames:'data' classVariableNames:'' poolDictionaries:'' category:'DanielsClasses' Class method ------------ new "create new instance and send it the 'init' message" ^ super new init Instance methods ---------------- init "initialize data (called by 'new')" data := OrderedCollection new first "return first element in queue without removing it" ^ data first enqueue: anObject "add anObject to end of queue" data add: anObject dequeue "remove element from front of queue and return it" ^ data removeFirst Testing and sample output ========================= q := MyQueue new. Transcript clear; show: 'Testing MyQueue'; cr. Transcript show: 'enqueue: 1'; cr. q enqueue: 1. Transcript show: 'first = '; show: q first; cr. Transcript show: 'enqueue: 2.0'; cr. q enqueue: 2.0. Transcript show: 'first = '; show: q first; cr. Transcript show: 'enqueue: ''drei'''; cr. q enqueue: 'drei'. Transcript show: 'first = '; show: q first; cr. Transcript show: 'dequeue = '; show: q dequeue; cr. Transcript show: 'dequeue = '; show: q dequeue; cr. Transcript show: 'enqueue: #four'; cr. q enqueue: #four. Transcript show: 'dequeue = '; show: q dequeue; cr. Transcript show: 'dequeue = '; show: q dequeue; cr. output (produced using "doIt" on the code above): ------------------------------------------------- Testing MyQueue enqueue: 1 first = 1 enqueue: 2.0 first = 1 enqueue: 'drei' first = 1 dequeue = 1 dequeue = 2.0 enqueue: #four dequeue = drei dequeue = four